31 lines
607 B
C
31 lines
607 B
C
#pragma once
|
|
|
|
#include<stdbool.h>
|
|
#include<stdint.h>
|
|
#include<stddef.h>
|
|
#include<ctype.h>
|
|
#include<stdlib.h>
|
|
#include<stdio.h>
|
|
#include<string.h>
|
|
#include<stdatomic.h>
|
|
#include<assert.h>
|
|
#include<string.h>
|
|
|
|
typedef struct LString {
|
|
bool ref;
|
|
size_t length;
|
|
uint8_t data[];
|
|
} LString;
|
|
|
|
static inline LString *lstring_new(size_t len, uint8_t *data) {
|
|
LString *lstr = calloc(1, sizeof(*lstr) + len);
|
|
lstr->length = len;
|
|
memcpy(lstr->data, data, len);
|
|
return lstr;
|
|
}
|
|
|
|
static inline LString *lstring_newz(const char *data) {
|
|
return lstring_new(strlen(data), (uint8_t*) data);
|
|
}
|
|
|
|
#define lstring_free free |