summaryrefslogtreecommitdiff
path: root/ast.c
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2007-09-02 17:43:02 -0400
committerSøren Sandmann <sandmann@redhat.com>2007-09-02 17:43:02 -0400
commitba62afa8a48fa85233db4335fb69c869d879e5e0 (patch)
tree20c84ede0123a272d41e5050e84398353945ab63 /ast.c
parent779fe9eef50fa392e4991f43767935b1bb14568f (diff)
Support identifier types
Diffstat (limited to 'ast.c')
-rw-r--r--ast.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/ast.c b/ast.c
index 32eea02..ed98ef4 100644
--- a/ast.c
+++ b/ast.c
@@ -335,6 +335,16 @@ ast_type_spec_new (ast_type_spec_type_t type)
}
ast_type_spec_t *
+ast_type_spec_new_identifier (const char *name)
+{
+ ast_type_spec_t *type_spec = ast_type_spec_new (AST_IDENTIFIER_TYPE);
+
+ type_spec->identifier.name = g_strdup (name);
+
+ return type_spec;
+}
+
+ast_type_spec_t *
ast_type_spec_new_function (ast_type_spec_t *return_,
ast_type_spec_t **args)
{
@@ -346,12 +356,21 @@ ast_type_spec_new_function (ast_type_spec_t *return_,
return type_spec;
}
+void
+ast_type_spec_init_class (ast_type_spec_t *type_spec,
+ ast_class_definition_t *class)
+{
+ type_spec->common.type = AST_CLASS_TYPE;
+
+ type_spec->class.class = class;
+}
+
ast_type_spec_t *
-ast_type_spec_new_class (ast_class_definition_t *class)
+ast_type_spec_new_class (ast_class_definition_t *class)
{
ast_type_spec_t *type_spec = ast_type_spec_new (AST_CLASS_TYPE);
- type_spec->class.class = class;
+ ast_type_spec_init_class (type_spec, class);
return type_spec;
}