Mercurial > projects > dbus-d
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 );