Small ListItem update

This commit is contained in:
Christian Göttsche 2020-10-18 19:22:30 +02:00 committed by cgzones
parent 6375df49c9
commit 03b773b701
2 changed files with 15 additions and 23 deletions

View File

@ -27,11 +27,7 @@ static void ListItem_delete(Object* cast) {
static void ListItem_display(const Object* cast, RichString* out) { static void ListItem_display(const Object* cast, RichString* out) {
const ListItem* const this = (const ListItem*)cast; const ListItem* const this = (const ListItem*)cast;
assert (this != NULL); assert (this != NULL);
/*
int len = strlen(this->value)+1;
char buffer[len+1];
xSnprintf(buffer, len, "%s", this->value);
*/
if (this->moving) { if (this->moving) {
RichString_write(out, CRT_colors[DEFAULT_COLOR], RichString_write(out, CRT_colors[DEFAULT_COLOR],
#ifdef HAVE_LIBNCURSESW #ifdef HAVE_LIBNCURSESW
@ -41,15 +37,9 @@ static void ListItem_display(const Object* cast, RichString* out) {
} else { } else {
RichString_prune(out); RichString_prune(out);
} }
RichString_append(out, CRT_colors[DEFAULT_COLOR], this->value/*buffer*/); RichString_append(out, CRT_colors[DEFAULT_COLOR], this->value);
} }
const ObjectClass ListItem_class = {
.display = ListItem_display,
.delete = ListItem_delete,
.compare = ListItem_compare
};
ListItem* ListItem_new(const char* value, int key) { ListItem* ListItem_new(const char* value, int key) {
ListItem* this = AllocThis(ListItem); ListItem* this = AllocThis(ListItem);
this->value = xStrdup(value); this->value = xStrdup(value);
@ -59,20 +49,22 @@ ListItem* ListItem_new(const char* value, int key) {
} }
void ListItem_append(ListItem* this, const char* text) { void ListItem_append(ListItem* this, const char* text) {
int oldLen = strlen(this->value); size_t oldLen = strlen(this->value);
int textLen = strlen(text); size_t textLen = strlen(text);
int newLen = strlen(this->value) + textLen; size_t newLen = oldLen + textLen;
this->value = xRealloc(this->value, newLen + 1); this->value = xRealloc(this->value, newLen + 1);
memcpy(this->value + oldLen, text, textLen); memcpy(this->value + oldLen, text, textLen);
this->value[newLen] = '\0'; this->value[newLen] = '\0';
} }
const char* ListItem_getRef(ListItem* this) { static long ListItem_compare(const void* cast1, const void* cast2) {
return this->value;
}
long ListItem_compare(const void* cast1, const void* cast2) {
const ListItem* obj1 = (const ListItem*) cast1; const ListItem* obj1 = (const ListItem*) cast1;
const ListItem* obj2 = (const ListItem*) cast2; const ListItem* obj2 = (const ListItem*) cast2;
return strcmp(obj1->value, obj2->value); return strcmp(obj1->value, obj2->value);
} }
const ObjectClass ListItem_class = {
.display = ListItem_display,
.delete = ListItem_delete,
.compare = ListItem_compare
};

View File

@ -24,8 +24,8 @@ ListItem* ListItem_new(const char* value, int key);
void ListItem_append(ListItem* this, const char* text); void ListItem_append(ListItem* this, const char* text);
const char* ListItem_getRef(ListItem* this); static inline const char* ListItem_getRef(const ListItem* this) {
return this->value;
long ListItem_compare(const void* cast1, const void* cast2); }
#endif #endif