diff options
author | Juerg Billeter <j@bitron.ch> | 2007-09-17 21:01:20 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-09-17 21:01:20 +0000 |
commit | 0c56350693573666c9fa30a9b4035301b29f0717 (patch) | |
tree | c3e2f4294248556f1876ae8edf75a12d5c67cd42 | |
parent | 251f0e7a8e16627083d9d2d0227d0ad745ad5763 (diff) | |
download | vala-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-- | ChangeLog | 9 | ||||
-rw-r--r-- | compiler/valacompiler.vala | 5 | ||||
-rw-r--r-- | gobject/Makefile.am | 80 | ||||
-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.am | 8 | ||||
-rw-r--r-- | vala/valacodebinding.vala | 29 | ||||
-rw-r--r-- | vala/valacodecontext.vala | 7 | ||||
-rw-r--r-- | vala/valacodegenerator.vala | 35 | ||||
-rw-r--r-- | vala/valacodenode.vala | 7 |
18 files changed, 158 insertions, 71 deletions
@@ -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. */ |