]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
valac: Add --use-header command-line option
authorJürg Billeter <j@bitron.ch>
Fri, 9 Oct 2009 18:40:03 +0000 (20:40 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 9 Oct 2009 18:41:16 +0000 (20:41 +0200)
codegen/valaccodebasemodule.vala
codegen/valaccodedeclarationspace.vala
codegen/valagtypemodule.vala
compiler/valacompiler.vala
vala/valacodecontext.vala
vala/valapropertyaccessor.vala

index d5e60bf801533e1e9e796245b64b711e67e366f4..457c404d171200ddc2d19f0f10e765a08239a3f0 100644 (file)
@@ -354,7 +354,9 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                }
 
                header_declarations = new CCodeDeclarationSpace ();
+               header_declarations.is_header = true;
                internal_header_declarations = new CCodeDeclarationSpace ();
+               internal_header_declarations.is_header = true;
 
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
@@ -1306,7 +1308,7 @@ internal class Vala.CCodeBaseModule : CCodeModule {
        }
 
        public void generate_property_accessor_declaration (PropertyAccessor acc, CCodeDeclarationSpace decl_space) {
-               if (decl_space.add_symbol_declaration (acc.prop, acc.get_cname ())) {
+               if (decl_space.add_symbol_declaration (acc, acc.get_cname ())) {
                        return;
                }
 
index 696b0a4e06b62e1cf5f6dbb39330e5bfa361d9a1..175236ef6f41b9e4e397a97e7cb6923b10fb7df4 100644 (file)
@@ -23,6 +23,8 @@
 using Gee;
 
 class Vala.CCodeDeclarationSpace {
+       public bool is_header { get; set; }
+
        Set<string> declarations = new HashSet<string> (str_hash, str_equal);
        Set<string> includes = new HashSet<string> (str_hash, str_equal);
        internal CCodeFragment include_directives = new CCodeFragment ();
@@ -43,10 +45,10 @@ class Vala.CCodeDeclarationSpace {
                if (add_declaration (name)) {
                        return true;
                }
-               if (sym.external_package) {
+               if (sym.external_package || (!is_header && CodeContext.get ().use_header && !sym.is_internal_symbol ())) {
                        // add appropriate include file
                        foreach (string header_filename in sym.get_cheader_filenames ()) {
-                               add_include (header_filename);
+                               add_include (header_filename, !sym.external_package);
                        }
                        // declaration complete
                        return true;
index aa431d06ea96e4756ca0dadd2caf67dac9a2e160..105e6dcb903e15d8b6d748cd8e469556493f5673 100644 (file)
@@ -345,7 +345,7 @@ internal class Vala.GTypeModule : GErrorModule {
        }
 
        void generate_class_private_declaration (Class cl, CCodeDeclarationSpace decl_space) {
-               if (decl_space.add_symbol_declaration (cl, cl.get_cname () + "Private")) {
+               if (decl_space.add_declaration (cl.get_cname () + "Private")) {
                        return;
                }
 
index 2b32f9dadc24308b83e257e97596ae8e7cc4994e..f2b023408956d648019c2976b3c9e7563202e6c1 100644 (file)
@@ -43,6 +43,7 @@ class Vala.Compiler {
 
        static bool ccode_only;
        static string header_filename;
+       static bool use_header;
        static string internal_header_filename;
        static string internal_vapi_filename;
        static string includedir;
@@ -85,6 +86,7 @@ class Vala.Compiler {
                { "version", 0, 0, OptionArg.NONE, ref version, "Display version number", null },
                { "ccode", 'C', 0, OptionArg.NONE, ref ccode_only, "Output C code", null },
                { "header", 'H', 0, OptionArg.FILENAME, ref header_filename, "Output C header file", "FILE" },
+               { "use-header", 0, 0, OptionArg.NONE, ref use_header, "Use C header file", null },
                { "includedir", 0, 0, OptionArg.FILENAME, ref includedir, "Directory used to include the C header file", "DIRECTORY" },
                { "internal-header", 'h', 0, OptionArg.FILENAME, ref internal_header_filename, "Output internal C header file", "FILE" },
                { "internal-vapi", 0, 0, OptionArg.FILENAME, ref internal_vapi_filename, "Output vapi with internal api", "FILE" },
@@ -195,6 +197,7 @@ class Vala.Compiler {
                context.ccode_only = ccode_only;
                context.compile_only = compile_only;
                context.header_filename = header_filename;
+               context.use_header = use_header;
                context.internal_header_filename = internal_header_filename;
                context.includedir = includedir;
                context.output = output;
index 3a1cbbaa4a64fc0cb6a7aa2d4e4194895445b663..e6d9db3f5af1c2f59a3a40eaff6f6b60566291a3 100644 (file)
@@ -72,6 +72,8 @@ public class Vala.CodeContext {
         */
        public string? internal_header_filename { get; set; }
 
+       public bool use_header { get; set; }
+
        /**
         * Base directory used for header_filename in the VAPIs.
         */
index 2a21201277e03cd6176eac628ffe37f5dc40352c..4d9340f63df24df369c8f436ac63be8c75e583bc 100644 (file)
@@ -219,4 +219,8 @@ public class Vala.PropertyAccessor : Symbol {
                        value_type = new_type;
                }
        }
+
+       public override Gee.List<string> get_cheader_filenames () {
+               return parent_symbol.get_cheader_filenames ();
+       }
 }