From 58c67aca3f0c6090ae9fba5d872d041d514c6b8f Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Fri, 7 Oct 2005 15:39:25 +0000 Subject: [PATCH] Removed GObject support from grammar Removed GObject support from grammar type. git-archimport-id: cascardo@tlscascardo--private/libgrammatic--nogobject--0.1--patch-1 --- bnf.c | 10 +++++----- bnf.h | 2 +- first.c | 2 +- first.h | 2 +- grammar.c | 50 +++++++++----------------------------------------- grammar.h | 30 +++++------------------------- item.c | 10 +++++----- 7 files changed, 27 insertions(+), 79 deletions(-) diff --git a/bnf.c b/bnf.c index 8d960f8..f2d01e9 100644 --- a/bnf.c +++ b/bnf.c @@ -126,7 +126,7 @@ enum BNF_NONTERMINAL }; -void grammar_tree (Grammar* grammar, GNode* tree) +void grammar_tree (grammar_t* grammar, GNode* tree) { GNode* child_rules; @@ -233,10 +233,10 @@ void grammar_tree (Grammar* grammar, GNode* tree) } -Grammar* grammar_load (char* filename) +grammar_t* grammar_load (char* filename) { - Grammar* grammar; + grammar_t* grammar; rule_t* rule; scanner_t* scanner; @@ -250,7 +250,7 @@ Grammar* grammar_load (char* filename) scanner = scanner_new (read, fd); parser = rdp_new (scanner_next, scanner, BNF_GRAMMAR); - grammar = (Grammar*) parser; + grammar = (grammar_t*) parser; rule = grammar_rule_new (grammar, symbol_new (FALSE, BNF_GRAMMAR)); rule_append (rule, symbol_new (FALSE, BNF_RULES)); @@ -289,7 +289,7 @@ Grammar* grammar_load (char* filename) } else { - Grammar* gr; + grammar_t* gr; gr = g_object_new (GRAMMAR_TYPE, NULL); grammar_tree (gr, tree); return gr; diff --git a/bnf.h b/bnf.h index 5c602a8..cdc080c 100644 --- a/bnf.h +++ b/bnf.h @@ -3,6 +3,6 @@ #include -Grammar* grammar_load (char* filename); +grammar_t* grammar_load (char* filename); #endif diff --git a/first.c b/first.c index e3af868..040a04c 100644 --- a/first.c +++ b/first.c @@ -457,7 +457,7 @@ void first_check (gpointer key, gpointer val, gpointer data) * We should iterate through the rules for each nonterminal until only * terminals are known to be in the first set of it. */ -GHashTable* grammar_first (Grammar* grammar) +GHashTable* grammar_first (grammar_t* grammar) { GHashTable* first; gboolean stop; diff --git a/first.h b/first.h index 29bf501..47a6200 100644 --- a/first.h +++ b/first.h @@ -3,7 +3,7 @@ #include -GHashTable* grammar_first (Grammar*); +GHashTable* grammar_first (grammar_t*); GList* first_get (GHashTable*, symbol_t*); GList* first_rule (GHashTable*, rule_t*); 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, diff --git a/grammar.h b/grammar.h index f945330..4d13b9e 100644 --- a/grammar.h +++ b/grammar.h @@ -2,20 +2,6 @@ #define GRAMMAR_H #include -#include - -#define GRAMMAR_TYPE (grammar_get_type ()) -#define GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GRAMMAR_TYPE, Grammar)) -#define GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ - GRAMMAR_TYPE, GrammarClass)) -#define IS_GRAMMAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GRAMMAR_TYPE)) -#define IS_GRAMMAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - GRAMMAR_TYPE)) -#define GRAMMAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GRAMMAR_TYPE, GrammarClass)) - typedef gint (*nextcb) (gpointer, gpointer*); @@ -28,15 +14,8 @@ typedef struct typedef struct _rule rule_t; typedef struct { - GObject parent; GHashTable* grammar; -} Grammar; -typedef struct -{ - GObjectClass parent; -} GrammarClass; - -GType grammar_get_type (); +} grammar_t; symbol_t* symbol_new (gboolean, GQuark); symbol_t* symbol_copy (symbol_t*); @@ -53,9 +32,10 @@ symbol_t* rule_pop (rule_t*); void rule_append (rule_t*, symbol_t*); void rule_delete (rule_t*); - -rule_t* grammar_rule_new (Grammar*, symbol_t*); -GList* grammar_get_rules (Grammar*, symbol_t*); +grammar_t* grammar_new (); +rule_t* grammar_rule_new (grammar_t*, symbol_t*); +GList* grammar_get_rules (grammar_*, symbol_t*); GList* grammar_get_rule (rule_t*); +void grammar_delete (grammar_t*); #endif diff --git a/item.c b/item.c index 8634d90..c089253 100644 --- a/item.c +++ b/item.c @@ -173,7 +173,7 @@ void item_set_print (GHashTable* item_set) } #endif -void item_set_closure_step (GHashTable* item_set, Grammar* grammar, +void item_set_closure_step (GHashTable* item_set, grammar_t* grammar, item_t* item) { if (item->dot != NULL) @@ -198,7 +198,7 @@ void item_set_closure_step (GHashTable* item_set, Grammar* grammar, } } -GHashTable* item_set_closure (GHashTable* item_set, Grammar* grammar) +GHashTable* item_set_closure (GHashTable* item_set, grammar_t* grammar) { int size; int last_size; @@ -220,7 +220,7 @@ GHashTable* item_set_closure (GHashTable* item_set, Grammar* grammar) return item_set; } -GHashTable* item_set_goto (GHashTable* item_set, Grammar* grammar, +GHashTable* item_set_goto (GHashTable* item_set, grammar_t* grammar, symbol_t* symbol) { GList* l; @@ -349,7 +349,7 @@ void item_collection_print (GHashTable* collection) } #endif -GHashTable* item_collection_goto (GHashTable* collection, Grammar* grammar, +GHashTable* item_collection_goto (GHashTable* collection, grammar_t* grammar, GHashTable* item_set, symbol_t* symbol) { GHashTable* symbols; @@ -380,7 +380,7 @@ GHashTable* item_collection_goto (GHashTable* collection, Grammar* grammar, } } -void item_set_collection (Grammar* grammar, symbol_t* start) +void item_set_collection (grammar_t* grammar, symbol_t* start) { GHashTable* collection; GHashTable* item_set; -- 2.20.1