Removed GObject support from RDP
authorThadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
Fri, 7 Oct 2005 15:46:50 +0000 (15:46 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
Fri, 7 Oct 2005 15:46:50 +0000 (15:46 +0000)
Recursive Descent Parser no longer inherits from Grammar. It is not a
GObject any more.

git-archimport-id: cascardo@tlscascardo--private/libgrammatic--nogobject--0.1--patch-2

bnf.c
rdp.c
rdp.h

diff --git a/bnf.c b/bnf.c
index f2d01e9..c7db70b 100644 (file)
--- a/bnf.c
+++ b/bnf.c
@@ -240,7 +240,7 @@ grammar_t* grammar_load (char* filename)
   rule_t* rule;
 
   scanner_t* scanner;
-  Rdp* parser;
+  rdp_t* parser;
   GNode* tree;
 
   int fd;
@@ -249,8 +249,8 @@ grammar_t* grammar_load (char* filename)
 
   scanner = scanner_new (read, fd);
 
-  parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR);
-  grammar = (grammar_t*) parser;
+  grammar = grammar_new ();
+  parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR, grammar);
 
   rule = grammar_rule_new (grammar, symbol_new (FALSE, BNF_GRAMMAR));
   rule_append (rule, symbol_new (FALSE, BNF_RULES));
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;
diff --git a/rdp.h b/rdp.h
index 1455c52..a469fcc 100644 (file)
--- a/rdp.h
+++ b/rdp.h
@@ -3,39 +3,19 @@
 
 #include <grammar.h>
 
-#define RDP_TYPE            (rdp_get_type ())
-#define RDP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-                                    RDP_TYPE, Rdp))
-#define RDP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), \
-                                    RDP_TYPE, RdpClass))
-#define IS_RDP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-                                    RDP_TYPE))
-#define IS_RDP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
-                                    RDP_TYPE))
-#define RDP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), \
-                                    RDP_TYPE, RdpClass))
-
-
 typedef struct _buffer buffer_t;
 
 typedef struct
 {
-  Grammar parent;
   nextcb cb;
   gpointer data;
   GList* buffer;
   symbol_t* start;
-} Rdp;
-
-typedef struct
-{
-  GrammarClass parent;
-} RdpClass;
-
-GType rdp_get_type ();
+  grammar_t* grammar;
+} rdp_t;
 
-Rdp* rdp_new (nextcb, gpointer, gint);
-void rdp_delete (Rdp*);
-gpointer rdp_build (Rdp*);
+rdp_t* rdp_new (nextcb, gpointer, gint, grammar_t*);
+void rdp_delete (rdp_t*);
+gpointer rdp_build (rdp_t*);
 
 #endif