1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-09-29 19:56:07 -04:00

Merge branch 'master' into otr

This commit is contained in:
James Booth 2013-12-10 00:13:49 +00:00
commit 5eb0cf9f35
3 changed files with 22 additions and 53 deletions

View File

@ -82,7 +82,7 @@ autocomplete_length(Autocomplete ac)
} }
} }
gboolean void
autocomplete_add(Autocomplete ac, const char *item) autocomplete_add(Autocomplete ac, const char *item)
{ {
char *item_cpy; char *item_cpy;
@ -90,21 +90,21 @@ autocomplete_add(Autocomplete ac, const char *item)
// if item already exists // if item already exists
if (curr != NULL) { if (curr != NULL) {
return FALSE; return;
} }
item_cpy = strdup(item); item_cpy = strdup(item);
ac->items = g_slist_insert_sorted(ac->items, item_cpy, (GCompareFunc)strcmp); ac->items = g_slist_insert_sorted(ac->items, item_cpy, (GCompareFunc)strcmp);
return TRUE; return;
} }
gboolean void
autocomplete_remove(Autocomplete ac, const char * const item) autocomplete_remove(Autocomplete ac, const char * const item)
{ {
GSList *curr = g_slist_find_custom(ac->items, item, (GCompareFunc)strcmp); GSList *curr = g_slist_find_custom(ac->items, item, (GCompareFunc)strcmp);
if (!curr) { if (!curr) {
return FALSE; return;
} }
// reset last found if it points to the item to be removed // reset last found if it points to the item to be removed
@ -115,7 +115,7 @@ autocomplete_remove(Autocomplete ac, const char * const item)
free(curr->data); free(curr->data);
ac->items = g_slist_delete_link(ac->items, curr); ac->items = g_slist_delete_link(ac->items, curr);
return TRUE; return;
} }
GSList * GSList *

View File

@ -27,27 +27,33 @@
typedef char*(*autocomplete_func)(char *); typedef char*(*autocomplete_func)(char *);
typedef struct autocomplete_t *Autocomplete; typedef struct autocomplete_t *Autocomplete;
typedef const char * (*PStrFunc)(const void *obj);
typedef void * (*PCopyFunc)(const void *obj);
typedef int (*PEqualFunc)(const void *o1, const void *o2);
typedef int (*PEqualDeepFunc)(const void *o1, const void *o2);
// allocate new autocompleter with no items
Autocomplete autocomplete_new(void); Autocomplete autocomplete_new(void);
Autocomplete obj_autocomplete_new(PStrFunc str_func, PCopyFunc copy_func,
PEqualDeepFunc equal_deep_func, GDestroyNotify free_func); // Remove all items from the autocompleter
void autocomplete_clear(Autocomplete ac); void autocomplete_clear(Autocomplete ac);
void autocomplete_reset(Autocomplete ac);
// free all memory used by the autocompleter
void autocomplete_free(Autocomplete ac); void autocomplete_free(Autocomplete ac);
gboolean autocomplete_add(Autocomplete ac, const char *item);
gboolean autocomplete_remove(Autocomplete ac, const char * const item); void autocomplete_add(Autocomplete ac, const char *item);
GSList * autocomplete_get_list(Autocomplete ac); void autocomplete_remove(Autocomplete ac, const char * const item);
// find the next item prefixed with search string
gchar * autocomplete_complete(Autocomplete ac, gchar *search_str); gchar * autocomplete_complete(Autocomplete ac, gchar *search_str);
GSList * autocomplete_get_list(Autocomplete ac);
gint autocomplete_length(Autocomplete ac); gint autocomplete_length(Autocomplete ac);
char * autocomplete_param_with_func(char *input, int *size, char *command, char * autocomplete_param_with_func(char *input, int *size, char *command,
autocomplete_func func); autocomplete_func func);
char * autocomplete_param_with_ac(char *input, int *size, char *command, char * autocomplete_param_with_ac(char *input, int *size, char *command,
Autocomplete ac); Autocomplete ac);
char * autocomplete_param_no_with_func(char *input, int *size, char *command, char * autocomplete_param_no_with_func(char *input, int *size, char *command,
int arg_number, autocomplete_func func); int arg_number, autocomplete_func func);
void autocomplete_reset(Autocomplete ac);
#endif #endif

View File

@ -113,40 +113,6 @@ static void add_two_same_updates(void)
autocomplete_clear(ac); autocomplete_clear(ac);
} }
static void add_one_returns_true(void)
{
Autocomplete ac = autocomplete_new();
int result = autocomplete_add(ac, "Hello");
assert_true(result);
autocomplete_clear(ac);
}
static void add_two_different_returns_true(void)
{
Autocomplete ac = autocomplete_new();
int result1 = autocomplete_add(ac, "Hello");
int result2 = autocomplete_add(ac, "Hello there");
assert_true(result1);
assert_true(result2);
autocomplete_clear(ac);
}
static void add_two_same_returns_false(void)
{
Autocomplete ac = autocomplete_new();
int result1 = autocomplete_add(ac, "Hello");
int result2 = autocomplete_add(ac, "Hello");
assert_true(result1);
assert_false(result2);
autocomplete_clear(ac);
}
void register_autocomplete_tests(void) void register_autocomplete_tests(void)
{ {
TEST_MODULE("autocomplete tests"); TEST_MODULE("autocomplete tests");
@ -160,7 +126,4 @@ void register_autocomplete_tests(void)
TEST(add_two_adds_two); TEST(add_two_adds_two);
TEST(add_two_same_adds_one); TEST(add_two_same_adds_one);
TEST(add_two_same_updates); TEST(add_two_same_updates);
TEST(add_one_returns_true);
TEST(add_two_different_returns_true);
TEST(add_two_same_returns_false);
} }