Add source_type_declaration and source_type_definition code fragments to
authorJuerg Billeter <j@bitron.ch>
Sun, 6 Apr 2008 18:33:46 +0000 (18:33 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 6 Apr 2008 18:33:46 +0000 (18:33 +0000)
2008-04-06  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodegenerator.vala,
  gobject/valaccodegeneratorclass.vala,
  gobject/valaccodegeneratorinterface.vala,
  gobject/valaccodegeneratorsourcefile.vala,
  gobject/valaccodegeneratorstruct.vala:

  Add source_type_declaration and source_type_definition code
  fragments to fix declaration order in generated C source files

svn path=/trunk/; revision=1166

ChangeLog
gobject/valaccodegenerator.vala
gobject/valaccodegeneratorclass.vala
gobject/valaccodegeneratorinterface.vala
gobject/valaccodegeneratorsourcefile.vala
gobject/valaccodegeneratorstruct.vala

index 11677d7..a90f5be 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-04-06  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodegenerator.vala,
+         gobject/valaccodegeneratorclass.vala,
+         gobject/valaccodegeneratorinterface.vala,
+         gobject/valaccodegeneratorsourcefile.vala,
+         gobject/valaccodegeneratorstruct.vala:
+
+         Add source_type_declaration and source_type_definition code
+         fragments to fix declaration order in generated C source files
+
 2008-03-31  Jürg Billeter  <j@bitron.ch>
 
        * vala/Makefile.am, vala/parser.y, vala/vala.h,
index eade698..4badf98 100644 (file)
@@ -46,6 +46,8 @@ public class Vala.CCodeGenerator : CodeGenerator {
        CCodeFragment header_constant_declaration;
        CCodeFragment source_begin;
        CCodeFragment source_include_directives;
+       CCodeFragment source_type_declaration;
+       CCodeFragment source_type_definition;
        public CCodeFragment source_type_member_declaration;
        CCodeFragment source_constant_declaration;
        CCodeFragment source_signal_marshaller_declaration;
@@ -282,8 +284,8 @@ public class Vala.CCodeGenerator : CodeGenerator {
                        decl_frag = header_type_declaration;
                        def_frag = header_type_definition;
                } else {
-                       decl_frag = source_type_member_declaration;
-                       def_frag = source_type_member_declaration;
+                       decl_frag = source_type_declaration;
+                       def_frag = source_type_definition;
                }
 
                def_frag.append (cenum);
@@ -436,7 +438,7 @@ public class Vala.CCodeGenerator : CodeGenerator {
                if (!d.is_internal_symbol ()) {
                        header_type_declaration.append (ctypedef);
                } else {
-                       source_type_member_declaration.append (ctypedef);
+                       source_type_declaration.append (ctypedef);
                }
        }
        
index 4c0bf64..bd3b358 100644 (file)
@@ -66,8 +66,8 @@ public class Vala.CCodeGenerator {
                        decl_frag = header_type_declaration;
                        def_frag = header_type_definition;
                } else {
-                       decl_frag = source_type_member_declaration;
-                       def_frag = source_type_member_declaration;
+                       decl_frag = source_type_declaration;
+                       def_frag = source_type_definition;
                }
 
                if (is_gtypeinstance) {
index 66e4d2e..00a517f 100644 (file)
@@ -40,8 +40,8 @@ public class Vala.CCodeGenerator {
                        decl_frag = header_type_declaration;
                        def_frag = header_type_definition;
                } else {
-                       decl_frag = source_type_member_declaration;
-                       def_frag = source_type_member_declaration;
+                       decl_frag = source_type_declaration;
+                       def_frag = source_type_definition;
                }
 
                if (!iface.is_static && !iface.declaration_only) {
index 6dd0578..5cd0d0d 100644 (file)
@@ -180,6 +180,8 @@ public class Vala.CCodeGenerator {
                header_constant_declaration = new CCodeFragment ();
                source_begin = new CCodeFragment ();
                source_include_directives = new CCodeFragment ();
+               source_type_declaration = new CCodeFragment ();
+               source_type_definition = new CCodeFragment ();
                source_type_member_declaration = new CCodeFragment ();
                source_constant_declaration = new CCodeFragment ();
                source_type_member_definition = new CCodeFragment ();
@@ -324,6 +326,10 @@ public class Vala.CCodeGenerator {
                writer.write_newline ();
                source_include_directives.write (writer);
                writer.write_newline ();
+               source_type_declaration.write_combined (writer);
+               writer.write_newline ();
+               source_type_definition.write_combined (writer);
+               writer.write_newline ();
                source_type_member_declaration.write_declaration (writer);
                writer.write_newline ();
                source_type_member_declaration.write (writer);
@@ -346,6 +352,8 @@ public class Vala.CCodeGenerator {
                header_constant_declaration = null;
                source_begin = null;
                source_include_directives = null;
+               source_type_declaration = null;
+               source_type_definition = null;
                source_type_member_declaration = null;
                source_constant_declaration = null;
                source_type_member_definition = null;
index fcc20de..f6375ef 100644 (file)
@@ -38,8 +38,8 @@ public class Vala.CCodeGenerator {
                        decl_frag = header_type_declaration;
                        def_frag = header_type_definition;
                } else {
-                       decl_frag = source_type_member_declaration;
-                       def_frag = source_type_member_declaration;
+                       decl_frag = source_type_declaration;
+                       def_frag = source_type_definition;
                }
 
                if (st.source_reference.file.cycle == null) {