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) );