⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 str.c

📁 FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
💻 C
字号:
#include <str.h>String* string_new (){	String* self;	self = (String*)mem_new(sizeof(String));	self->data = NULL;	object_init_object (OBJECT (self), (ObjectDestroy) string_destroy);	string_clear (self);	return self;}void string_destroy (String* self){	mem_destroy (self->data);	mem_destroy (self);}unsigned int string_hash(void* self){	const char *p;	int h=0, g;	for(p = ((String*)self)->data; *p != '\0'; p += 1)	{		h = ( h << 4 ) + *p;		if ( ( g = h & 0xf0000000 ) )		{			h = h ^ (g >> 24);			h = h ^ g;		}	}	return h ;}void string_clear (String* self){	string_set_str (self, "");}void string_set (String* self, String* p_text){	string_set_str (self, p_text->data);}void string_set_str (String* self, unsigned char* p_text){	if (p_text)	{		self->data = (unsigned char*) mem_resize (self->data, strlen (p_text) + 1);		strcpy (self->data, p_text);	}}voidstring_add (String* self, String* p_text){	string_add_str (self, p_text->data);}voidstring_add_str (String* self, unsigned char* p_text){	self->data = (unsigned char*) mem_resize (self->data, strlen (self->data) + strlen (p_text) + 1);	strcat (self->data, p_text);}voidstring_add_char (String* self, signed char p_char){	unsigned int l_size;	l_size = string_get_size (self);	self->data = (unsigned char*) mem_resize (self->data, l_size + 2);	self->data[l_size] = p_char;	self->data[l_size + 1] = '\0';}signed int string_cmp (String* self, String* p_text){	return string_cmp_str (self, p_text->data);}signed int string_cmp_str (String* self, unsigned char* p_text){	return strcmp (self->data, p_text);}Bool string_equal(void* self, void* other){	return strcmp(((String*)self)->data, ((String*)other)->data)==0? TRUE:FALSE;}signed int string_ncmp (String* self, String* p_text, unsigned int p_pos, unsigned int p_size){	return strncmp (self->data + p_pos, p_text->data, p_size);}signed int string_ncmp_str (String* self, unsigned char* p_text, unsigned int p_pos, unsigned int p_size){	return strncmp (self->data + p_pos, p_text, p_size);}unsigned int string_get_size (String* self){	if (self)		return strlen (self->data);	else		return 0;}signed char string_get_char (String* self, unsigned int p_index){	return self->data[p_index];}unsigned char* string_get_str (String* self){	if (self)		return self->data;	else		return NULL;}String* string_extract (String* self, unsigned int p_index, unsigned int p_size){	String*	l_string;	unsigned int i;	l_string = string_new ();	for (i = 0; i < p_size; i++)		string_add_char (l_string, string_get_char (self, p_index + i));	return l_string;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -