def constructor( self, decomposition ):
     if ( self._isCopyConstructor( decomposition ) ):
         return
     self._constructorCount += 1
     self._code.lineOut( "%s%s( %s )%s" % (
                     voodoodefs.templateLine( decomposition.templatePrefix ),
                     self._identifier,
                     decomposition.parametersFullSpec(),
                     self._constructHeritage() ) )
     self._code.lineOut( "{" )
     VoodooExpectFunction( self._code )._try()
     self._code.lineOut( '\t__VoodooGrowingString growingString;' )
     self._code.lineOut( '\tgrowingString.append( "Construction of " );' )
     self._code.lineOut( '\tgrowingString.append( ' +
         'VoodooCommon::PointerTypeString( this ).typeString() );' )
     self._code.lineOut( '\t__voodooConstructingInstance() = this;' )
     self._code.lineOut( '\tVoodooCommon::Expect::Multiplexer multiplexer( ' +
                         'growingString.result() );' )
     self._implementParametersHandeling( decomposition )
     self._code.lineOut( '\t__voodooSetInstanceName( "" );' )
     self._code.lineOut( "\tconst void * instanceNameAsVoid;" )
     self._code.lineOut( '\tmultiplexer.returnValue( "const char *", instanceNameAsVoid );' )
     self._code.lineOut( "\tconst char * instanceName = (const char *) instanceNameAsVoid;" )
     self._code.lineOut( '\t__voodooSetInstanceName( instanceName );' )
     self._code.lineOut( '\t__voodooInsertToInstanceList();' )
     self._code.lineOut( '\t__voodooConstructingInstance() = NULL;' )
     VoodooExpectFunction( self._code )._catchVoodooErrorMessages()
     self._code.lineOut( "}" )
     self._code.lineOut( "" )
 def implementFakeNDClass( self, fullIdentifier ):
     fakeNDClass = voodoodefs.fakeNDClass( self._identifier )
     self._code.lineOut( "%sclass %s : public %s%s" % (
                             voodoodefs.templateLine( self._templatePrefix ),
                             fakeNDClass,
                             self._identifier,
                             self._passTemplateParameters() ) )
     self._code.lineOut( "{" )
     self._code.lineOut( "public:" )
     self._code.lineOut( "\t%s( const char * instanceName = \"Fake %s\" ) :" %
                             ( fakeNDClass, fullIdentifier ) )
     self._code.lineOut( "\t\t\t%s%s( __VoodooRedirectorConstruction() )" %
                                 ( self._identifier, self._passTemplateParameters() ) )
     self._code.lineOut( "\t{" )
     self._code.lineOut( "\t\t%s%s::__voodooSetInstanceName( instanceName );" %
                                 ( self._identifier, self._passTemplateParameters() ) )
     self._code.lineOut( "\t}" )
     self._code.lineOut( "" )
     self._code.lineOut( "\t~%s() " % fakeNDClass )
     self._code.lineOut( "\t{" )
     self._code.lineOut( "\t\t%s%s::__voodooSetInstanceName( \"\" );" %
                                 ( self._identifier, self._passTemplateParameters() ) )
     self._code.lineOut( "\t}" )
     self._code.lineOut( "}; // class %s" % fakeNDClass )
     self._code.lineOut( "" )
    def method( self, decomposition ):
        if decomposition.name == "operator=":
            self._implicitAssignmentOperator = False
#todo: is operator = still named like this?
        if decomposition.const:
            const = " const"
        else:
            const = ""
        if decomposition.virtual:
            virtual = "virtual "
        else:
            virtual = ""
        self._code.lineOut( "%s%s%s %s( %s )%s" % ( virtual,
                        voodoodefs.templateLine( decomposition.templatePrefix ),
                        decomposition.returnType,
                        decomposition.name,
                        decomposition.parametersFullSpec(),
                        const ) )
        self._code.lineOut( "{" )
        VoodooExpectFunction( self._code )._try()
        self._code.lineOut( '\t__VoodooGrowingString growingString;' )
        self._code.lineOut( '\tgrowingString.append( "Call to " );' )
        self._code.lineOut( '\tgrowingString.append( __voodooInstanceName );' )
        self._code.lineOut( '\tgrowingString.append( "::" );' )
        self._code.lineOut( '\tgrowingString.append( %s );' %
                            self._instanceOfFunction( decomposition ) )
        self._code.lineOut( '\tVoodooCommon::Expect::Multiplexer multiplexer( ' +
                    'growingString.result() );' )
        self._implementParametersHandeling( decomposition )
        self._implementReturnValue( decomposition )
        VoodooExpectFunction( self._code )._catchVoodooErrorMessages()
        self._code.lineOut( "}" )
        self._code.lineOut( "" )
 def implementExpectingClassHeader( self ):
     if len( self._inherits ) > 0:
         inherits = " :\n\t\tpublic " + ",\n\t\tpublic ".join( self._inherits ) + "\n"
     else:
         inherits = ""
     self._code.lineOut( "%s%s %s%s" % (
                             voodoodefs.templateLine( self._templatePrefix ),
                             self._construct,
                             self._identifier,
                             inherits ) )
     self._code.lineOut( "{" )
     self._code.increaseIndent()