* MA 02111-1307, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
#include <lttv/attribute.h>
#include <ltt/ltt.h>
+#include <ltt/compiler.h>
typedef union _AttributeValue {
int dv_int;
} Attribute;
-LttvAttributeValue address_of_value(LttvAttributeType t, AttributeValue *v)
+static __inline__ LttvAttributeValue address_of_value(LttvAttributeType t,
+ AttributeValue *v)
{
LttvAttributeValue va;
case LTTV_POINTER: va.v_pointer = &v->dv_pointer; break;
case LTTV_STRING: va.v_string = &v->dv_string; break;
case LTTV_GOBJECT: va.v_gobject = &v->dv_gobject; break;
+ case LTTV_NONE: break;
}
return va;
}
case LTTV_POINTER: v.dv_pointer = NULL; break;
case LTTV_STRING: v.dv_string = NULL; break;
case LTTV_GOBJECT: v.dv_gobject = NULL; break;
+ case LTTV_NONE: break;
}
return v;
}
/* The element used to replace the removed element has its index entry
all wrong now. Reinsert it with its new position. */
- if(self->attributes->len != i){
+ if(likely(self->attributes->len != i)){
g_hash_table_remove(self->names, GUINT_TO_POINTER(a->name));
g_hash_table_insert(self->names, GUINT_TO_POINTER(a->name), GUINT_TO_POINTER(i + 1));
}
unsigned i;
i = (unsigned)g_hash_table_lookup(self->names, GUINT_TO_POINTER(name));
- if(i == 0) g_error("remove by name non existent attribute");
+ if(unlikely(i == 0)) g_error("remove by name non existent attribute");
lttv_attribute_remove(self, i - 1);
}
LttvAttribute *new;
i = (unsigned)g_hash_table_lookup(self->names, GUINT_TO_POINTER(name));
- if(i != 0) {
+ if(likely(i != 0)) {
a = g_array_index(self->attributes, Attribute, i - 1);
- if(a.type == LTTV_GOBJECT && LTTV_IS_IATTRIBUTE(a.value.dv_gobject)) {
+ if(likely(a.type == LTTV_GOBJECT && LTTV_IS_IATTRIBUTE(a.value.dv_gobject))) {
return LTTV_ATTRIBUTE(a.value.dv_gobject);
}
else return NULL;
Attribute *a;
i = (unsigned)g_hash_table_lookup(self->names, GUINT_TO_POINTER(name));
- if(i != 0) {
+ if(likely(i != 0)) {
a = &g_array_index(self->attributes, Attribute, i - 1);
- if(a->type != t) return FALSE;
+ if(unlikely(a->type != t)) return FALSE;
*v = address_of_value(t, &(a->value));
return TRUE;
}
fprintf(fp, "TYPE=DOUBLE VALUE=%f/>\n", a->value.dv_double);
break;
case LTTV_TIME:
- fprintf(fp, "TYPE=TIME SEC=%u NSEC=%u/>\n", a->value.dv_time.tv_sec,
+ fprintf(fp, "TYPE=TIME SEC=%lu NSEC=%lu/>\n", a->value.dv_time.tv_sec,
a->value.dv_time.tv_nsec);
break;
case LTTV_POINTER:
void
lttv_attribute_read_xml(LttvAttribute *self, FILE *fp)
{
- int i, nb, res;
-
- Attribute *a;
+ int res;
char buffer[256], type[10];
}
else if(strcmp(type, "DOUBLE") == 0) {
value = lttv_attribute_add(self, name, LTTV_DOUBLE);
- res = fscanf(fp, " VALUE=%f/>", value.v_double);
+ res = fscanf(fp, " VALUE=%lf/>", value.v_double);
g_assert(res == 1);
}
else if(strcmp(type, "TIME") == 0) {
value = lttv_attribute_add(self, name, LTTV_TIME);
- res = fscanf(fp, " SEC=%u NSEC=%u/>", &(value.v_time->tv_sec),
+ res = fscanf(fp, " SEC=%lu NSEC=%lu/>", &(value.v_time->tv_sec),
&(value.v_time->tv_nsec));
g_assert(res == 2);
}
}
-
static void
attribute_instance_init (GTypeInstance *instance, gpointer g_class)
{
LttvAttribute *self = (LttvAttribute *)instance;
- self->names = g_hash_table_new(g_direct_hash, g_direct_equal);
+ self->names = g_hash_table_new(g_direct_hash,
+ g_direct_equal);
self->attributes = g_array_new(FALSE, FALSE, sizeof(Attribute));
}
NULL, /* class_data */
sizeof (LttvAttribute),
0, /* n_preallocs */
- (GInstanceInitFunc) attribute_instance_init /* instance_init */
+ (GInstanceInitFunc) attribute_instance_init, /* instance_init */
+ NULL /* value handling */
};
static const GInterfaceInfo iattribute_info = {