From 909f89b3fee83179fbd3d32706c781ebfac25bad Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Fri, 7 Oct 2005 15:46:50 +0000 Subject: [PATCH] Removed GObject support from RDP 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 | 6 ++--- rdp.c | 71 +++++++++-------------------------------------------------- rdp.h | 30 +++++-------------------- 3 files changed, 19 insertions(+), 88 deletions(-) diff --git a/bnf.c b/bnf.c index f2d01e9..c7db70b 100644 --- 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 --- 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 --- a/rdp.h +++ b/rdp.h @@ -3,39 +3,19 @@ #include -#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 -- 2.20.1