Fixed first
[cascardo/grammar.git] / grammar.c
index d716065..5f41708 100644 (file)
--- 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);
-  self->grammar = g_hash_table_new_full (symbol_hash, symbol_equal,
-                                        g_free,
-                                        (GDestroyNotify) rules_delete);
+  grammar_t* grammar;
+  grammar = g_malloc (sizeof (grammar_t*));
+  grammar->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,