Removed GObject support from RDP
[cascardo/grammar.git] / rdp.c
diff --git a/rdp.c b/rdp.c
index 4dbdc63..3feee7d 100644 (file)
--- a/rdp.c
+++ b/rdp.c
@@ -27,65 +27,17 @@ void tree_delete (gpointer tree)
   g_node_destroy (tree);
 }
 
-static void rdp_init (GTypeInstance* instance, gpointer g_class)
+rdp_t* rdp_new (nextcb cb, gpointer data, gint value, grammar_t* grammar)
 {
-  Rdp* self = RDP(instance);
-  self->cb = NULL;
-  self->data = NULL;
-  self->buffer = NULL;
-  self->start = NULL;
-}
 
-static void rdp_finalize (GObject* obj)
-{
-  RdpClass* klass;
-  GObject* parent_class;
-  Rdp* self;
-  self = RDP(obj);
-  g_free (self->start);
-  klass = RDP_GET_CLASS(obj);
-  parent_class = g_type_class_peek_parent (klass);
-  G_OBJECT_CLASS(parent_class)->finalize (obj);
-}
+  rdp_t* parser;
 
-static void rdp_class_init (RdpClass* klass)
-{
-  GObjectClass* gobj_class = G_OBJECT_CLASS(klass);
-  gobj_class->finalize = rdp_finalize;
-}
-
-GType rdp_get_type ()
-{
-  static GType type = 0;
-  if (type == 0)
-    {
-      static const GTypeInfo info =
-       {
-         sizeof (RdpClass),
-         NULL,
-         NULL,
-         (GClassInitFunc)rdp_class_init,
-         NULL,
-         NULL,
-         sizeof (Rdp),
-         0,
-         rdp_init
-       };
-      type = g_type_register_static (GRAMMAR_TYPE, "RdpType", &info, 0);
-    }
-  return type;
-}
-
-Rdp* rdp_new (nextcb cb, gpointer data, gint value)
-{
-
-  Rdp* parser;
-
-  parser = g_object_new (RDP_TYPE, NULL);
+  parser = g_malloc (sizeof (rdp_t));
 
   parser->cb = cb;
   parser->data = data;
   parser->start = symbol_new (FALSE, value);
+  parser->grammar = grammar;
 
   parser->buffer = g_list_append (NULL, NULL);
 
@@ -93,14 +45,12 @@ Rdp* rdp_new (nextcb cb, gpointer data, gint value)
 
 }
 
-void rdp_delete (Rdp* parser)
+void rdp_delete (rdp_t* rdp)
 {
-
-  g_object_unref (parser);
-
+  g_free (rdp->start);
 }
 
-symbol_t* buffer_next (Rdp* parser, gpointer* attrib)
+symbol_t* buffer_next (rdp_t* parser, gpointer* attrib)
 {
 
   buffer_t* buffer;
@@ -124,7 +74,7 @@ symbol_t* buffer_next (Rdp* parser, gpointer* attrib)
       
 }
 
-gboolean rdp_step (Rdp* parser, symbol_t* symbol, gpointer* attrib)
+gboolean rdp_step (rdp_t* parser, symbol_t* symbol, gpointer* attrib)
 {
 
   GList* l;
@@ -146,7 +96,8 @@ gboolean rdp_step (Rdp* parser, symbol_t* symbol, gpointer* attrib)
       return TRUE;
     }
 
-  for (l = grammar_get_rules (parser, symbol); l != NULL; l = g_list_next (l))
+  l = grammar_get_rules (parser->grammar, symbol);
+  for (; l != NULL; l = g_list_next (l))
     {
 
       rule_t* rule;
@@ -197,7 +148,7 @@ gboolean rdp_step (Rdp* parser, symbol_t* symbol, gpointer* attrib)
 
 }
 
-gpointer rdp_build (Rdp* parser)
+gpointer rdp_build (rdp_t* parser)
 {
 
   gpointer attrib;