#include <string.h>
GISourceSymbol *
-gi_source_symbol_new (GISourceSymbolType type)
+gi_source_symbol_new (GISourceSymbolType type, int line)
{
GISourceSymbol *s = g_slice_new0 (GISourceSymbol);
s->ref_count = 1;
s->type = type;
+ s->line = line;
return s;
}
if (symbol->base_type)
ctype_free (symbol->base_type);
g_free (symbol->const_string);
+ g_free (symbol->source_filename);
g_slice_free (GISourceSymbol, symbol);
}
}
result->base_type = gi_source_type_copy (type->base_type);
for (l = type->child_list; l; l = l->next)
result->child_list = g_list_append (result->child_list, gi_source_symbol_ref (l->data));
+ result->is_bitfield = type->is_bitfield;
return result;
}
if (found_filename || scanner->macro_scan)
scanner->symbols = g_slist_prepend (scanner->symbols,
gi_source_symbol_ref (symbol));
+ /* TODO: Refcounted string here or some other optimization */
+ if (found_filename && symbol->source_filename == NULL)
+ {
+ symbol->source_filename = g_strdup (scanner->current_filename);
+ }
switch (symbol->type)
{