summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-09-17 21:01:20 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-09-17 21:01:20 +0000
commit0c56350693573666c9fa30a9b4035301b29f0717 (patch)
treec3e2f4294248556f1876ae8edf75a12d5c67cd42
parent251f0e7a8e16627083d9d2d0227d0ad745ad5763 (diff)
downloadvala-0c56350693573666c9fa30a9b4035301b29f0717.tar.gz
rename CodeGenerator to CCodeGenerator, add abstract CodeGenerator and
2007-09-17 Juerg Billeter <j@bitron.ch> * vala/Makefile.am, vala/valacodebinding.vala, vala/valacodecontext.vala, vala/valacodegenerator.vala, vala/valacodenode.vala, gobject/Makefile.am, gobject/valaccodegenerator.vala, compiler/valacompiler.vala: rename CodeGenerator to CCodeGenerator, add abstract CodeGenerator and CodeBinding classes svn path=/trunk/; revision=617
-rw-r--r--ChangeLog9
-rw-r--r--compiler/valacompiler.vala5
-rw-r--r--gobject/Makefile.am80
-rw-r--r--gobject/valaccodegenerator.vala (renamed from gobject/valacodegenerator.vala)13
-rw-r--r--gobject/valaccodegeneratorassignment.vala (renamed from gobject/valacodegeneratorassignment.vala)4
-rw-r--r--gobject/valaccodegeneratorclass.vala (renamed from gobject/valacodegeneratorclass.vala)4
-rw-r--r--gobject/valaccodegeneratorinterface.vala (renamed from gobject/valacodegeneratorinterface.vala)4
-rw-r--r--gobject/valaccodegeneratorinvocationexpression.vala (renamed from gobject/valacodegeneratorinvocationexpression.vala)4
-rw-r--r--gobject/valaccodegeneratormemberaccess.vala (renamed from gobject/valacodegeneratormemberaccess.vala)4
-rw-r--r--gobject/valaccodegeneratormethod.vala (renamed from gobject/valacodegeneratormethod.vala)4
-rw-r--r--gobject/valaccodegeneratorsignal.vala (renamed from gobject/valacodegeneratorsignal.vala)4
-rw-r--r--gobject/valaccodegeneratorsourcefile.vala (renamed from gobject/valacodegeneratorsourcefile.vala)4
-rw-r--r--gobject/valaccodegeneratorstruct.vala (renamed from gobject/valacodegeneratorstruct.vala)4
-rw-r--r--vala/Makefile.am8
-rw-r--r--vala/valacodebinding.vala29
-rw-r--r--vala/valacodecontext.vala7
-rw-r--r--vala/valacodegenerator.vala35
-rw-r--r--vala/valacodenode.vala7
18 files changed, 158 insertions, 71 deletions
diff --git a/ChangeLog b/ChangeLog
index 35dcbe364..867190c9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2007-09-17 Jürg Billeter <j@bitron.ch>
+ * vala/Makefile.am, vala/valacodebinding.vala,
+ vala/valacodecontext.vala, vala/valacodegenerator.vala,
+ vala/valacodenode.vala, gobject/Makefile.am,
+ gobject/valaccodegenerator.vala, compiler/valacompiler.vala: rename
+ CodeGenerator to CCodeGenerator, add abstract CodeGenerator and
+ CodeBinding classes
+
+2007-09-17 Jürg Billeter <j@bitron.ch>
+
* vala/valacodevisitor.vala, vala/valalambdaexpression.vala,
vala/valamemorymanager.vala, vala/valasemanticanalyzer.vala,
vala/valasymbolresolver.vala, gobject/valacodegenerator.vala: switch
diff --git a/compiler/valacompiler.vala b/compiler/valacompiler.vala
index 4de78c32a..f8aae3845 100644
--- a/compiler/valacompiler.vala
+++ b/compiler/valacompiler.vala
@@ -170,6 +170,8 @@ class Vala.Compiler : Object {
context.optlevel = optlevel;
context.save_temps = save_temps;
+ context.codegen = new CCodeGenerator (!disable_memory_management);
+
/* default package */
if (!add_package (context, "glib-2.0")) {
Report.error (null, "glib-2.0 not found in specified Vala API directories");
@@ -248,8 +250,7 @@ class Vala.Compiler : Object {
}
}
- var code_generator = new CodeGenerator (!disable_memory_management);
- code_generator.emit (context);
+ context.codegen.emit (context);
if (Report.get_errors () > 0) {
return quit ();
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
index 8dfdc6b51..2d544798c 100644
--- a/gobject/Makefile.am
+++ b/gobject/Makefile.am
@@ -19,36 +19,36 @@ libvala_la_SOURCES = \
valaclassregisterfunction.c \
valaclassregisterfunction.h \
valaclassregisterfunction.vala \
- valacodegenerator.c \
- valacodegenerator.h \
- valacodegenerator.vala \
- valacodegeneratorassignment.c \
- valacodegeneratorassignment.h \
- valacodegeneratorassignment.vala \
- valacodegeneratorclass.c \
- valacodegeneratorclass.h \
- valacodegeneratorclass.vala \
- valacodegeneratorinterface.c \
- valacodegeneratorinterface.h \
- valacodegeneratorinterface.vala \
- valacodegeneratorinvocationexpression.c \
- valacodegeneratorinvocationexpression.h \
- valacodegeneratorinvocationexpression.vala \
- valacodegeneratormemberaccess.c \
- valacodegeneratormemberaccess.h \
- valacodegeneratormemberaccess.vala \
- valacodegeneratormethod.c \
- valacodegeneratormethod.h \
- valacodegeneratormethod.vala \
- valacodegeneratorsignal.c \
- valacodegeneratorsignal.h \
- valacodegeneratorsignal.vala \
- valacodegeneratorsourcefile.c \
- valacodegeneratorsourcefile.h \
- valacodegeneratorsourcefile.vala \
- valacodegeneratorstruct.c \
- valacodegeneratorstruct.h \
- valacodegeneratorstruct.vala \
+ valaccodegenerator.c \
+ valaccodegenerator.h \
+ valaccodegenerator.vala \
+ valaccodegeneratorassignment.c \
+ valaccodegeneratorassignment.h \
+ valaccodegeneratorassignment.vala \
+ valaccodegeneratorclass.c \
+ valaccodegeneratorclass.h \
+ valaccodegeneratorclass.vala \
+ valaccodegeneratorinterface.c \
+ valaccodegeneratorinterface.h \
+ valaccodegeneratorinterface.vala \
+ valaccodegeneratorinvocationexpression.c \
+ valaccodegeneratorinvocationexpression.h \
+ valaccodegeneratorinvocationexpression.vala \
+ valaccodegeneratormemberaccess.c \
+ valaccodegeneratormemberaccess.h \
+ valaccodegeneratormemberaccess.vala \
+ valaccodegeneratormethod.c \
+ valaccodegeneratormethod.h \
+ valaccodegeneratormethod.vala \
+ valaccodegeneratorsignal.c \
+ valaccodegeneratorsignal.h \
+ valaccodegeneratorsignal.vala \
+ valaccodegeneratorsourcefile.c \
+ valaccodegeneratorsourcefile.h \
+ valaccodegeneratorsourcefile.vala \
+ valaccodegeneratorstruct.c \
+ valaccodegeneratorstruct.h \
+ valaccodegeneratorstruct.vala \
valadbusbindingprovider.c \
valadbusbindingprovider.h \
valadbusbindingprovider.vala \
@@ -71,16 +71,16 @@ gobjectincludedir = $(includedir)/vala-1.0/gobject
gobjectinclude_HEADERS = \
valaccodecompiler.h \
valaclassregisterfunction.h \
- valacodegenerator.h \
- valacodegeneratorassignment.h \
- valacodegeneratorclass.h \
- valacodegeneratorinterface.h \
- valacodegeneratorinvocationexpression.h \
- valacodegeneratormemberaccess.h \
- valacodegeneratormethod.h \
- valacodegeneratorsignal.h \
- valacodegeneratorsourcefile.h \
- valacodegeneratorstruct.h \
+ valaccodegenerator.h \
+ valaccodegeneratorassignment.h \
+ valaccodegeneratorclass.h \
+ valaccodegeneratorinterface.h \
+ valaccodegeneratorinvocationexpression.h \
+ valaccodegeneratormemberaccess.h \
+ valaccodegeneratormethod.h \
+ valaccodegeneratorsignal.h \
+ valaccodegeneratorsourcefile.h \
+ valaccodegeneratorstruct.h \
valadbusbindingprovider.h \
valadbusmethod.h \
valadbussignal.h \
diff --git a/gobject/valacodegenerator.vala b/gobject/valaccodegenerator.vala
index fe0ab8fa1..6dd15144c 100644
--- a/gobject/valacodegenerator.vala
+++ b/gobject/valaccodegenerator.vala
@@ -1,4 +1,4 @@
-/* valacodegenerator.vala
+/* valaccodegenerator.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -27,7 +27,7 @@ using Gee;
/**
* Code visitor generating C Code.
*/
-public class Vala.CodeGenerator : CodeVisitor {
+public class Vala.CCodeGenerator : CodeGenerator {
/**
* Specifies whether automatic memory management is active.
*/
@@ -123,7 +123,7 @@ public class Vala.CodeGenerator : CodeVisitor {
private bool requires_array_free;
private bool requires_array_move;
- public CodeGenerator (bool manage_memory = true) {
+ public CCodeGenerator (bool manage_memory = true) {
memory_management = manage_memory;
}
@@ -193,12 +193,7 @@ public class Vala.CodeGenerator : CodeVisitor {
c_keywords.add ("cdecl");
}
- /**
- * Generate and emit C code for the specified code context.
- *
- * @param context a code context
- */
- public void emit (CodeContext! context) {
+ public override void emit (CodeContext! context) {
this.context = context;
context.find_header_cycles ();
diff --git a/gobject/valacodegeneratorassignment.vala b/gobject/valaccodegeneratorassignment.vala
index 5695c5211..4e2aac9b3 100644
--- a/gobject/valacodegeneratorassignment.vala
+++ b/gobject/valaccodegeneratorassignment.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorassignment.vala
+/* valaccodegeneratorassignment.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -24,7 +24,7 @@
using GLib;
using Gee;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_assignment (Assignment! a) {
a.accept_children (this);
diff --git a/gobject/valacodegeneratorclass.vala b/gobject/valaccodegeneratorclass.vala
index c743e68e7..59c2e9507 100644
--- a/gobject/valacodegeneratorclass.vala
+++ b/gobject/valaccodegeneratorclass.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorclass.vala
+/* valaccodegeneratorclass.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -23,7 +23,7 @@
using GLib;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_class (Class! cl) {
var old_symbol = current_symbol;
var old_type_symbol = current_type_symbol;
diff --git a/gobject/valacodegeneratorinterface.vala b/gobject/valaccodegeneratorinterface.vala
index 0360b49af..0ae51fdbb 100644
--- a/gobject/valacodegeneratorinterface.vala
+++ b/gobject/valaccodegeneratorinterface.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorinterface.vala
+/* valaccodegeneratorinterface.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -23,7 +23,7 @@
using GLib;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_interface (Interface! iface) {
current_symbol = iface;
current_type_symbol = iface;
diff --git a/gobject/valacodegeneratorinvocationexpression.vala b/gobject/valaccodegeneratorinvocationexpression.vala
index 218418183..621b17445 100644
--- a/gobject/valacodegeneratorinvocationexpression.vala
+++ b/gobject/valaccodegeneratorinvocationexpression.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorinvocationexpression.vala
+/* valaccodegeneratorinvocationexpression.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -24,7 +24,7 @@
using GLib;
using Gee;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_invocation_expression (InvocationExpression! expr) {
expr.accept_children (this);
diff --git a/gobject/valacodegeneratormemberaccess.vala b/gobject/valaccodegeneratormemberaccess.vala
index e0a15bb34..267333f18 100644
--- a/gobject/valacodegeneratormemberaccess.vala
+++ b/gobject/valaccodegeneratormemberaccess.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratormemberaccess.vala
+/* valaccodegeneratormemberaccess.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -23,7 +23,7 @@
using GLib;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
private void process_cmember (MemberAccess! expr, CCodeExpression pub_inst, DataType base_type) {
if (expr.symbol_reference is Method) {
var m = (Method) expr.symbol_reference;
diff --git a/gobject/valacodegeneratormethod.vala b/gobject/valaccodegeneratormethod.vala
index 9d69adc59..4dc0776d6 100644
--- a/gobject/valacodegeneratormethod.vala
+++ b/gobject/valaccodegeneratormethod.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratormethod.vala
+/* valaccodegeneratormethod.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -24,7 +24,7 @@
using GLib;
using Gee;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_method (Method! m) {
Method old_method = current_method;
TypeReference old_return_type = current_return_type;
diff --git a/gobject/valacodegeneratorsignal.vala b/gobject/valaccodegeneratorsignal.vala
index f446f94c2..7995562c0 100644
--- a/gobject/valacodegeneratorsignal.vala
+++ b/gobject/valaccodegeneratorsignal.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorsignal.vala
+/* valaccodegeneratorsignal.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -23,7 +23,7 @@
using GLib;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
private string get_marshaller_type_name (TypeReference t) {
if (t.type_parameter != null) {
return ("POINTER");
diff --git a/gobject/valacodegeneratorsourcefile.vala b/gobject/valaccodegeneratorsourcefile.vala
index 6a84dce4e..4c79f46e2 100644
--- a/gobject/valacodegeneratorsourcefile.vala
+++ b/gobject/valaccodegeneratorsourcefile.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorsourcefile.vala
+/* valaccodegeneratorsourcefile.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -24,7 +24,7 @@
using GLib;
using Gee;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
private CCodeIncludeDirective get_internal_include (string! filename) {
return new CCodeIncludeDirective (filename, context.library == null);
}
diff --git a/gobject/valacodegeneratorstruct.vala b/gobject/valaccodegeneratorstruct.vala
index afa7fb736..ca7884848 100644
--- a/gobject/valacodegeneratorstruct.vala
+++ b/gobject/valaccodegeneratorstruct.vala
@@ -1,4 +1,4 @@
-/* valacodegeneratorstruct.vala
+/* valaccodegeneratorstruct.vala
*
* Copyright (C) 2006-2007 Jürg Billeter, Raffaele Sandrini
*
@@ -23,7 +23,7 @@
using GLib;
-public class Vala.CodeGenerator {
+public class Vala.CCodeGenerator {
public override void visit_struct (Struct! st) {
var old_type_symbol = current_type_symbol;
var old_instance_struct = instance_struct;
diff --git a/vala/Makefile.am b/vala/Makefile.am
index 09833b452..cd24897aa 100644
--- a/vala/Makefile.am
+++ b/vala/Makefile.am
@@ -77,9 +77,15 @@ libvalacore_la_SOURCES = \
valaclass.c \
valaclass.h \
valaclass.vala \
+ valacodebinding.c \
+ valacodebinding.h \
+ valacodebinding.vala \
valacodecontext.c \
valacodecontext.h \
valacodecontext.vala \
+ valacodegenerator.c \
+ valacodegenerator.h \
+ valacodegenerator.vala \
valacodenode.c \
valacodenode.h \
valacodenode.vala \
@@ -346,7 +352,9 @@ valainclude_HEADERS = \
valacatchclause.h \
valacharacterliteral.h \
valaclass.h \
+ valacodebinding.h \
valacodecontext.h \
+ valacodegenerator.h \
valacodenode.h \
valacodevisitor.h \
valaconditionalexpression.h \
diff --git a/vala/valacodebinding.vala b/vala/valacodebinding.vala
new file mode 100644
index 000000000..f38dd0828
--- /dev/null
+++ b/vala/valacodebinding.vala
@@ -0,0 +1,29 @@
+/* valacodebinding.vala
+ *
+ * Copyright (C) 2007 Jürg Billeter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Jürg Billeter <j@bitron.ch>
+ */
+
+using GLib;
+
+/**
+ * The link between a source code node and generated code.
+ */
+public abstract class Vala.CodeBinding : Object {
+}
diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala
index c6d501c0d..5c5300590 100644
--- a/vala/valacodecontext.vala
+++ b/vala/valacodecontext.vala
@@ -119,7 +119,12 @@ public class Vala.CodeContext : Object {
public Namespace! root {
get { return _root; }
}
-
+
+ /**
+ * The selected code generator.
+ */
+ public CodeGenerator codegen { get; set; }
+
/**
* Returns a copy of the list of source files.
*
diff --git a/vala/valacodegenerator.vala b/vala/valacodegenerator.vala
new file mode 100644
index 000000000..745c0b818
--- /dev/null
+++ b/vala/valacodegenerator.vala
@@ -0,0 +1,35 @@
+/* valacodegenerator.vala
+ *
+ * Copyright (C) 2007 Jürg Billeter
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Jürg Billeter <j@bitron.ch>
+ */
+
+using GLib;
+
+/**
+ * Abstract code visitor generating code.
+ */
+public abstract class Vala.CodeGenerator : CodeVisitor {
+ /**
+ * Generate and emit C code for the specified code context.
+ *
+ * @param context a code context
+ */
+ public abstract void emit (CodeContext! context);
+}
diff --git a/vala/valacodenode.vala b/vala/valacodenode.vala
index fb80c8308..3fe38b3e2 100644
--- a/vala/valacodenode.vala
+++ b/vala/valacodenode.vala
@@ -62,7 +62,12 @@ public abstract class Vala.CodeNode : Object {
_ccodenode = value;
}
}
-
+
+ /**
+ * Binding to the generated code.
+ */
+ public CodeBinding code_binding { get; set; }
+
/**
* Specifies whether a fatal error has been detected in this code node.
*/