summaryrefslogtreecommitdiff
path: root/compiler/ex-phase.c
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2010-04-15 06:17:12 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2010-04-15 06:17:12 -0400
commit669fece3ac2ea75480ffe0e116225ff32ec54f5f (patch)
treeb695ed150d1b957e8572d351e0342187129e51cf /compiler/ex-phase.c
Initial check-inHEADmaster
Diffstat (limited to 'compiler/ex-phase.c')
-rw-r--r--compiler/ex-phase.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/compiler/ex-phase.c b/compiler/ex-phase.c
new file mode 100644
index 0000000..4bb693c
--- /dev/null
+++ b/compiler/ex-phase.c
@@ -0,0 +1,52 @@
+#include "ex-compiler.h"
+
+static void phase_definition (ExDefinition *definition);
+static void phase_namespace (ExNamespace *namespace);
+static void phase_request (ExRequest *request);
+static void phase_event (ExEvent *event);
+static void phase_type_def (ExTypeDef *type_def);
+static void phase_identifier (ExIdentifier *identifier);
+static void phase_type (ExType *type);
+static void phase_field (ExField *field);
+static void phase_error (ExError *error);
+
+void
+ex_phase (ExSpec *spec)
+{
+ if (!spec)
+ return;
+
+ phase_definition (spec->definitions);
+}
+
+static void
+phase_definition (ExDefinition *definition)
+{
+ if (!definition)
+ return;
+
+ switch (definition->type)
+ {
+ case EX_DEFINITION_NAMESPACE:
+ dump_namespace (definition->u.namespace);
+ break;
+
+ case EX_DEFINITION_REQUEST:
+ dump_request (definition->u.request);
+ break;
+
+ case EX_DEFINITION_TYPE_DEF:
+ dump_type_def (definition->u.type_def);
+ break;
+
+ case EX_DEFINITION_ERROR:
+ dump_error (definition->u.error);
+ break;
+
+ case EX_DEFINITION_EVENT:
+ dump_event (definition->u.event);
+ break;
+ }
+
+ dump_definition (definition->next);
+}