diff dbus-d/dsrc/org/freedesktop/dbus/tool/CreateInterface.d @ 5:7c2c75740370

code generation for signals
author Frank Benoit <benoit@tionex.de>
date Sun, 21 Oct 2007 19:22:41 +0200
parents 427c0332a111
children 963d271f7c25
line wrap: on
line diff
--- a/dbus-d/dsrc/org/freedesktop/dbus/tool/CreateInterface.d	Sun Oct 21 14:49:02 2007 +0200
+++ b/dbus-d/dsrc/org/freedesktop/dbus/tool/CreateInterface.d	Sun Oct 21 19:22:41 2007 +0200
@@ -646,6 +646,24 @@
     p.formatln( "{}public tango.core.Signal.Signal!({})* {}();", getIndent(indent), argList, sign.mName );
 }
 
+void writeInterfaceSignalDImpl( Print!(char) p, DefSignal sign, int indent ){
+    char[] argList;
+    foreach( idx, arg; sign.mArguments ){
+        if( idx > 0 ){
+            argList ~= ",";
+        }
+        argList ~= " ";
+        argList ~= arg.toDType();
+    }
+    if( argList.length > 0 ){
+        argList ~= " ";
+    }
+    p.formatln( "{}protected tango.core.Signal.Signal!({}) _{};", getIndent(indent), argList, sign.mName );
+    p.formatln( "{}public tango.core.Signal.Signal!({})* {}(){{", getIndent(indent), argList, sign.mName );
+    p.formatln( "{}return &_{};", getIndent(indent+1), sign.mName );
+    p.formatln( "{}}", getIndent(indent) );
+}
+
 void writeInterface( Print!(char) p, char[] name, int indent ){
     p.formatln( "{}// {}", getIndent(indent), name );
     char[] nodeName = split( name, "." )[ $-1 ];
@@ -658,6 +676,15 @@
         foreach( sign; intf.mSignals ){
             writeInterfaceSignal( p, sign, indent+1 );
         }
+        p.formatln( "{}template _StdJavaImpl(){{", getIndent(indent+1) );
+        p.formatln( "{}}", getIndent(indent+1) );
+        p.formatln( "{}template _StdDImpl(){{", getIndent(indent+1) );
+	        p.formatln( "{}void _init(){{", getIndent(indent+2) );
+	        p.formatln( "{}}", getIndent(indent+2) );
+	        foreach( sign; intf.mSignals ){
+	            writeInterfaceSignalDImpl( p, sign, indent+2 );
+	        }
+        p.formatln( "{}}", getIndent(indent+1) );
     }
     foreach( child; intfTree.getChildNames( name ) ){
         writeInterface( p, child, indent +1 );