This commit is contained in:
blueloveTH 2024-06-28 16:17:29 +08:00
parent 72723d24f5
commit 881e94e8b0
4 changed files with 19 additions and 10 deletions

View File

@ -34,6 +34,7 @@ c11_vector c11_vector__copy(const c11_vector* self);
void c11_vector__reserve(c11_vector* self, int capacity); void c11_vector__reserve(c11_vector* self, int capacity);
void c11_vector__clear(c11_vector* self); void c11_vector__clear(c11_vector* self);
void* c11_vector__emplace(c11_vector* self); void* c11_vector__emplace(c11_vector* self);
c11_array c11_vector__submit(c11_vector* self);
#define c11__getitem(T, self, index) (((T*)(self)->data)[index]) #define c11__getitem(T, self, index) (((T*)(self)->data)[index])
#define c11__setitem(T, self, index, value) ((T*)(self)->data)[index] = value; #define c11__setitem(T, self, index, value) ((T*)(self)->data)[index] = value;

View File

@ -152,12 +152,13 @@ void pk_SStream__write_any(pk_SStream* self, const char* fmt, const pk_AnyStr* a
py_Str pk_SStream__submit(pk_SStream* self) { py_Str pk_SStream__submit(pk_SStream* self) {
c11_vector__push(char, &self->data, '\0'); c11_vector__push(char, &self->data, '\0');
c11_array a = c11_vector__submit(&self->data);
// TODO: optimize c11__isascii // TODO: optimize c11__isascii
py_Str retval = { py_Str retval = {
.size = self->data.count - 1, .size = a.count - 1,
.is_ascii = c11__isascii((char*)self->data.data, self->data.count), .is_ascii = c11__isascii((char*)a.data, a.count),
.is_sso = false, .is_sso = false,
._ptr = (char*)self->data.data ._ptr = (char*)a.data
}; };
return retval; return retval;
} }

View File

@ -62,3 +62,15 @@ void* c11_vector__emplace(c11_vector* self){
self->count++; self->count++;
return p; return p;
} }
c11_array c11_vector__submit(c11_vector* self){
c11_array retval = {
.data = self->data,
.count = self->count,
.elem_size = self->elem_size
};
self->data = NULL;
self->count = 0;
self->capacity = 0;
return retval;
}

View File

@ -739,13 +739,8 @@ Error* pk_Lexer__process(pk_SourceData_ src, c11_array* out_tokens){
} }
} }
// set out_tokens // set out_tokens
*out_tokens = (c11_array){ *out_tokens = c11_vector__submit(&lexer.nexts);
.data = lexer.nexts.data,
.count = lexer.nexts.count,
.elem_size = lexer.nexts.elem_size
};
c11_vector__ctor(&lexer.nexts, sizeof(Token));
pk_Lexer__dtor(&lexer); pk_Lexer__dtor(&lexer);
return NULL; return NULL;
} }