X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fgrammar.git;a=blobdiff_plain;f=grammar.c;h=ef21141a937e9ae7d508d07c8f235f0c7cd45d68;hp=d716065a6396c5e2d51aabc64d05d777d7996d38;hb=58c67aca3f0c6090ae9fba5d872d041d514c6b8f;hpb=fde465e3b93784a060bb9c5dd754d348d7599439 diff --git a/grammar.c b/grammar.c index d716065..ef21141 100644 --- a/grammar.c +++ b/grammar.c @@ -155,55 +155,23 @@ void rules_delete (GList** list) g_free (list); } -static void grammar_init (GTypeInstance* instance, gpointer g_class) +grammar_t* grammar_new () { - Grammar* self = GRAMMAR(instance); + grammar_t* grammar; + grammar = g_malloc (sizeof (grammar_t*)); self->grammar = g_hash_table_new_full (symbol_hash, symbol_equal, g_free, (GDestroyNotify) rules_delete); + return grammar; } -static void grammar_finalize (GObject* obj) +void grammar_delete (grammar_t* grammar) { - GrammarClass* klass; - GObject* parent_class; - Grammar* self; - self = GRAMMAR(obj); - g_hash_table_destroy (self->grammar); - klass = GRAMMAR_GET_CLASS(obj); - parent_class = g_type_class_peek_parent (klass); - G_OBJECT_CLASS(parent_class)->finalize (obj); + g_hash_table_destroy (grammar->grammar); + g_free (grammar); } -static void grammar_class_init (GrammarClass* klass) -{ - GObjectClass* gobj_class = G_OBJECT_CLASS(klass); - gobj_class->finalize = grammar_finalize; -} - -GType grammar_get_type () -{ - static GType type = 0; - if (type == 0) - { - static const GTypeInfo info = - { - sizeof (GrammarClass), - NULL, - NULL, - (GClassInitFunc)grammar_class_init, - NULL, - NULL, - sizeof (Grammar), - 0, - grammar_init - }; - type = g_type_register_static (G_TYPE_OBJECT, "GrammarType", &info, 0); - } - return type; -} - -rule_t* grammar_rule_new (Grammar* grammar, symbol_t* left) +rule_t* grammar_rule_new (grammar_t* grammar, symbol_t* left) { GList** l; @@ -225,7 +193,7 @@ rule_t* grammar_rule_new (Grammar* grammar, symbol_t* left) } -GList* grammar_get_rules (Grammar* grammar, symbol_t* left) +GList* grammar_get_rules (grammar_t* grammar, symbol_t* left) { GList** l; if (!g_hash_table_lookup_extended (grammar->grammar,