]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add -H command-line option to generate C header file for public API, stub
authorJürg Billeter <j@bitron.ch>
Tue, 13 Jan 2009 18:41:04 +0000 (18:41 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Tue, 13 Jan 2009 18:41:04 +0000 (18:41 +0000)
2009-01-13  Jürg Billeter  <j@bitron.ch>

* vala/valacodecontext.vala:
* gobject/valaccodebasemodule.vala:
* compiler/valacompiler.vala:

Add -H command-line option to generate C header file for public
API, stub implementation

svn path=/trunk/; revision=2336

ChangeLog
compiler/valacompiler.vala
gobject/valaccodebasemodule.vala
vala/valacodecontext.vala

index 1bef8a003a360a24939da7161b431b2d415cba01..780cc2c4d22302eb56c0d283a3dc409917e342b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-01-13  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valacodecontext.vala:
+       * gobject/valaccodebasemodule.vala:
+       * compiler/valacompiler.vala:
+
+       Add -H command-line option to generate C header file for public
+       API, stub implementation
+
 2009-01-13  Thijs Vermeir  <thijsvermeir@gmail.com>
 
        * vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata:
index 59b608c2d5d7afb5c7d616d4bc4d03df2249f330..2ac8f73ca1f4b722120f53f30862b4e38575edef 100644 (file)
@@ -40,6 +40,7 @@ class Vala.Compiler {
        static string target_glib;
 
        static bool ccode_only;
+       static string header_filename;
        static bool compile_only;
        static string output;
        static bool debug;
@@ -68,6 +69,7 @@ class Vala.Compiler {
                { "directory", 'd', 0, OptionArg.FILENAME, ref directory, "Output directory", "DIRECTORY" },
                { "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" },
                { "compile", 'c', 0, OptionArg.NONE, ref compile_only, "Compile but do not link", null },
                { "output", 'o', 0, OptionArg.FILENAME, ref output, "Place output in file FILE", "FILE" },
                { "debug", 'g', 0, OptionArg.NONE, ref debug, "Produce debug information", null },
@@ -166,6 +168,7 @@ class Vala.Compiler {
 
                context.ccode_only = ccode_only;
                context.compile_only = compile_only;
+               context.header_filename = header_filename;
                context.output = output;
                if (basedir != null) {
                        context.basedir = realpath (basedir);
index b8de1e6956ca4cba1d65db7041980db4db49b4a7..5766d9ebb68dc245da1dadec1a414e6661e3d32a 100644 (file)
@@ -631,6 +631,26 @@ public class Vala.CCodeBaseModule : CCodeModule {
                                file.accept (codegen);
                        }
                }
+
+               // generate C header file for public API
+               if (context.header_filename != null) {
+                       var writer = new CCodeWriter (context.header_filename);
+                       if (!writer.open ()) {
+                               Report.error (null, "unable to open `%s' for writing".printf (writer.filename));
+                               return;
+                       }
+                       writer.write_newline ();
+                       var once = new CCodeOnceSection (get_define_for_filename (writer.filename));
+                       once.append (new CCodeNewline ());
+                       once.append (new CCodeIdentifier ("G_BEGIN_DECLS"));
+                       once.append (new CCodeNewline ());
+                       once.append (new CCodeNewline ());
+                       once.append (new CCodeIdentifier ("G_END_DECLS"));
+                       once.append (new CCodeNewline ());
+                       once.append (new CCodeNewline ());
+                       once.write (writer);
+                       writer.close ();
+               }
        }
 
        public override void visit_enum (Enum en) {
index 33e72ef5c8f100b02107ff23713ad6a41748daf4..08d7129da8697aaec364bbbfbd689448f29c76ac 100644 (file)
@@ -75,6 +75,11 @@ public class Vala.CodeContext {
         */
        public bool ccode_only { get; set; }
 
+       /**
+        * Output C header file.
+        */
+       public string header_filename { get; set; }
+
        /**
         * Compile but do not link.
         */