summaryrefslogtreecommitdiff
path: root/src/atom.c
diff options
context:
space:
mode:
authorRan Benita <ran@unusedvar.com>2019-11-09 11:49:25 +0200
committerRan Benita <ran@unusedvar.com>2019-11-09 12:26:19 +0200
commit9a92b4643bebe4f78771022648c02916eb32ef61 (patch)
treec76987d0d2dab15b2c522b0f4e9dad844989e6be /src/atom.c
parent1fe1b65385d56e0bdaa11ced7b8baef6b018ca84 (diff)
downloadxorg-lib-libxkbcommon-9a92b4643bebe4f78771022648c02916eb32ef61.tar.gz
atom: style changes
Signed-off-by: Ran Benita <ran@unusedvar.com>
Diffstat (limited to 'src/atom.c')
-rw-r--r--src/atom.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/src/atom.c b/src/atom.c
index aa6cfb3..cebc2e7 100644
--- a/src/atom.c
+++ b/src/atom.c
@@ -87,9 +87,7 @@ struct atom_table {
struct atom_table *
atom_table_new(void)
{
- struct atom_table *table;
-
- table = calloc(1, sizeof(*table));
+ struct atom_table *table = calloc(1, sizeof(*table));
if (!table)
return NULL;
@@ -103,11 +101,10 @@ atom_table_new(void)
void
atom_table_free(struct atom_table *table)
{
- struct atom_node *node;
-
if (!table)
return;
+ struct atom_node *node;
darray_foreach(node, table->table)
free(node->string);
darray_free(table->table);
@@ -125,15 +122,13 @@ static bool
find_atom_pointer(struct atom_table *table, const char *string, size_t len,
xkb_atom_t **atomp_out, uint32_t *fingerprint_out)
{
- xkb_atom_t *atomp = &table->root;
uint32_t fingerprint = 0;
- bool found = false;
-
for (size_t i = 0; i < (len + 1) / 2; i++) {
fingerprint = fingerprint * 27 + string[i];
fingerprint = fingerprint * 27 + string[len - 1 - i];
}
+ xkb_atom_t *atomp = &table->root;
while (*atomp != XKB_ATOM_NONE) {
struct atom_node *node = &darray_item(table->table, *atomp);
@@ -146,15 +141,14 @@ find_atom_pointer(struct atom_table *table, const char *string, size_t len,
else {
/* Now start testing the strings. */
const int cmp = strncmp(string, node->string, len);
- if (cmp < 0 || (cmp == 0 && node->string[len] != '\0')) {
- atomp = &node->left;
+ if (cmp == 0 && node->string[len] == '\0') {
+ break;
}
- else if (cmp > 0) {
- atomp = &node->right;
+ else if (cmp < 0) {
+ atomp = &node->left;
}
else {
- found = true;
- break;
+ atomp = &node->right;
}
}
}
@@ -163,14 +157,13 @@ find_atom_pointer(struct atom_table *table, const char *string, size_t len,
*fingerprint_out = fingerprint;
if (atomp_out)
*atomp_out = atomp;
- return found;
+ return *atomp != XKB_ATOM_NONE;
}
xkb_atom_t
atom_lookup(struct atom_table *table, const char *string, size_t len)
{
xkb_atom_t *atomp;
-
if (!find_atom_pointer(table, string, len, &atomp, NULL))
return XKB_ATOM_NONE;
@@ -181,16 +174,13 @@ xkb_atom_t
atom_intern(struct atom_table *table, const char *string, size_t len)
{
xkb_atom_t *atomp;
- struct atom_node node;
uint32_t fingerprint;
-
- if (find_atom_pointer(table, string, len, &atomp, &fingerprint)) {
+ if (find_atom_pointer(table, string, len, &atomp, &fingerprint))
return *atomp;
- }
+ struct atom_node node;
node.string = strndup(string, len);
assert(node.string != NULL);
-
node.left = node.right = XKB_ATOM_NONE;
node.fingerprint = fingerprint;
xkb_atom_t atom = darray_size(table->table);