Mercurial > projects > dbus-d
comparison 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 |
comparison
equal
deleted
inserted
replaced
4:427c0332a111 | 5:7c2c75740370 |
---|---|
644 argList ~= " "; | 644 argList ~= " "; |
645 } | 645 } |
646 p.formatln( "{}public tango.core.Signal.Signal!({})* {}();", getIndent(indent), argList, sign.mName ); | 646 p.formatln( "{}public tango.core.Signal.Signal!({})* {}();", getIndent(indent), argList, sign.mName ); |
647 } | 647 } |
648 | 648 |
649 void writeInterfaceSignalDImpl( Print!(char) p, DefSignal sign, int indent ){ | |
650 char[] argList; | |
651 foreach( idx, arg; sign.mArguments ){ | |
652 if( idx > 0 ){ | |
653 argList ~= ","; | |
654 } | |
655 argList ~= " "; | |
656 argList ~= arg.toDType(); | |
657 } | |
658 if( argList.length > 0 ){ | |
659 argList ~= " "; | |
660 } | |
661 p.formatln( "{}protected tango.core.Signal.Signal!({}) _{};", getIndent(indent), argList, sign.mName ); | |
662 p.formatln( "{}public tango.core.Signal.Signal!({})* {}(){{", getIndent(indent), argList, sign.mName ); | |
663 p.formatln( "{}return &_{};", getIndent(indent+1), sign.mName ); | |
664 p.formatln( "{}}", getIndent(indent) ); | |
665 } | |
666 | |
649 void writeInterface( Print!(char) p, char[] name, int indent ){ | 667 void writeInterface( Print!(char) p, char[] name, int indent ){ |
650 p.formatln( "{}// {}", getIndent(indent), name ); | 668 p.formatln( "{}// {}", getIndent(indent), name ); |
651 char[] nodeName = split( name, "." )[ $-1 ]; | 669 char[] nodeName = split( name, "." )[ $-1 ]; |
652 p.formatln( "{}public interface {} {{", getIndent(indent), nodeName ); | 670 p.formatln( "{}public interface {} {{", getIndent(indent), nodeName ); |
653 DefInterface intf = intfTree.getInterface( name ); | 671 DefInterface intf = intfTree.getInterface( name ); |
656 writeInterfaceMethod( p, meth, indent+1 ); | 674 writeInterfaceMethod( p, meth, indent+1 ); |
657 } | 675 } |
658 foreach( sign; intf.mSignals ){ | 676 foreach( sign; intf.mSignals ){ |
659 writeInterfaceSignal( p, sign, indent+1 ); | 677 writeInterfaceSignal( p, sign, indent+1 ); |
660 } | 678 } |
679 p.formatln( "{}template _StdJavaImpl(){{", getIndent(indent+1) ); | |
680 p.formatln( "{}}", getIndent(indent+1) ); | |
681 p.formatln( "{}template _StdDImpl(){{", getIndent(indent+1) ); | |
682 p.formatln( "{}void _init(){{", getIndent(indent+2) ); | |
683 p.formatln( "{}}", getIndent(indent+2) ); | |
684 foreach( sign; intf.mSignals ){ | |
685 writeInterfaceSignalDImpl( p, sign, indent+2 ); | |
686 } | |
687 p.formatln( "{}}", getIndent(indent+1) ); | |
661 } | 688 } |
662 foreach( child; intfTree.getChildNames( name ) ){ | 689 foreach( child; intfTree.getChildNames( name ) ){ |
663 writeInterface( p, child, indent +1 ); | 690 writeInterface( p, child, indent +1 ); |
664 } | 691 } |
665 p.formatln( "{}}", getIndent(indent) ); | 692 p.formatln( "{}}", getIndent(indent) ); |