From 68f2ade562c1e82419da36cfdf3a1626719ee76f Mon Sep 17 00:00:00 2001 From: cas Date: Mon, 15 Nov 1999 18:00:27 +0000 Subject: [PATCH] No comments --- src/CPPJini/CPPJini.cxx | 253 +++++++++++++++++++++++++++++- src/CPPJini/CPPJini.hxx | 6 +- src/CPPJini/CPPJini_MPV.cxx | 127 +++++++++++++-- src/CPPJini/CPPJini_Template.edl | 9 +- src/CPPJini/CPPJini_Transient.cxx | 103 +++++++++++- 5 files changed, 465 insertions(+), 33 deletions(-) diff --git a/src/CPPJini/CPPJini.cxx b/src/CPPJini/CPPJini.cxx index 3ba67f4..08ba791 100755 --- a/src/CPPJini/CPPJini.cxx +++ b/src/CPPJini/CPPJini.cxx @@ -30,6 +30,155 @@ Handle(MS_HSequenceOfExternMet) SeqOfExternMet = new MS_HSequenceOfExternMet; Handle(TCollection_HAsciiString) CPPJini_InterfaceName; Handle(TCollection_HAsciiString) CPPJini_ErrorArgument = new TCollection_HAsciiString("%error%"); +Handle( TCollection_HAsciiString ) CPPJini_DotReplace ( char*, char = '_' ); + +class CPPJini_ClientInfo { + + public: + + CPPJini_ClientInfo ( + const Handle( MS_MetaSchema )&, + const Handle( TCollection_HAsciiString )& + ); + ~CPPJini_ClientInfo () {}; + + int HasComplete ( const Handle( TCollection_HAsciiString )& name ) const { + return myMaps[ 0 ].Contains ( name ); + } + + int HasIncomplete ( const Handle( TCollection_HAsciiString )& name ) const { + return myMaps[ 1 ].Contains ( name ); + } + + int HasSemicomplete ( const Handle( TCollection_HAsciiString )& name ) const { + return myMaps[ 2 ].Contains ( name ); + } + + const Handle( TCollection_HAsciiString )& Name () const { return myName; } + + private: + + Handle( TCollection_HAsciiString ) myName; + WOKTools_MapOfHAsciiString myMaps[ 3 ]; +}; + +CPPJini_ClientInfo :: CPPJini_ClientInfo ( + const Handle( MS_MetaSchema )& ms, + const Handle( TCollection_HAsciiString )& name + ) { + + Handle( MS_Client ) clt = ms -> GetClient ( name ); + + if ( clt.IsNull () ) + + ErrorMsg << "CPPJini" << "Client " << name << " was not found" << endm; + + else { + + Handle( MS_HSequenceOfExternMet ) xtern = new MS_HSequenceOfExternMet (); + Handle( MS_HSequenceOfMemberMet ) membr = new MS_HSequenceOfMemberMet (); + + clt -> ComputeTypes ( + xtern, membr, myMaps[ 0 ], myMaps[ 1 ], myMaps[ 2 ] + ); + + InfoMsg << "CPPJini" << "Using client: " << name << endm; + + } // end else + + myName = new TCollection_HAsciiString ( name ); + +} // end CPPJini_ClientInfo :: CPPJini_ClientInfo + +static Standard_Integer s_Length; +static CPPJini_ClientInfo** s_CltInfo; + +static Standard_Boolean CPPJini_CheckClients ( + const Handle( TCollection_HAsciiString )& className, + Standard_Integer idx, + Handle( TCollection_HAsciiString )& cltName, + Standard_Boolean& fDuplicate + ) { + + Standard_Boolean retVal = Standard_False; + Standard_Boolean fCond; + Standard_Integer i; + + fDuplicate = Standard_False; + + for ( i = 0; i < s_Length; ++i ) { + + switch ( idx ) { + + case 0: + + fCond = s_CltInfo[ i ] -> HasComplete ( className ); + + break; + + case 1: + + fCond = s_CltInfo[ i ] -> HasIncomplete ( className ); + + break; + + default: + + fCond = s_CltInfo[ i ] -> HasSemicomplete ( className ); + + } // end switch + + if ( fCond ) { + + if ( !retVal ) { + + cltName = new TCollection_HAsciiString ( s_CltInfo[ i ] -> Name () ); + retVal = Standard_True; + + } else { + + fDuplicate = Standard_True; + break; + + } // end else + + } // end if + + } // end for + return retVal; + +} // end CPPJini_CheckClients + +Standard_Boolean CPPJini_HasComplete ( + const Handle( TCollection_HAsciiString )& className, + Handle( TCollection_HAsciiString )& cltName, + Standard_Boolean& fDuplicate + ) { + + return CPPJini_CheckClients ( className, 0, cltName, fDuplicate ); + +} // end CPPJini_HasIncomplete + +Standard_Boolean CPPJini_HasIncomplete ( + const Handle( TCollection_HAsciiString )& className, + Handle( TCollection_HAsciiString )& cltName, + Standard_Boolean& fDuplicate + ) { + + return CPPJini_CheckClients ( className, 1, cltName, fDuplicate ); + +} // end CPPJini_HasIncomplete + +Standard_Boolean CPPJini_HasSemicomplete ( + const Handle( TCollection_HAsciiString )& className, + Handle( TCollection_HAsciiString )& cltName, + Standard_Boolean& fDuplicate + ) { + + return CPPJini_CheckClients ( className, 2, cltName, fDuplicate ); + +} // end CPPJini_HasIncomplete + // Standard Extractor API : list the EDL files used by this program // Handle(TColStd_HSequenceOfHAsciiString) CPPJini_TemplatesUsed() @@ -45,8 +194,10 @@ Handle(TColStd_HSequenceOfHAsciiString) CPPJini_TemplatesUsed() void CPPJini_Init(const Handle(MS_MetaSchema)& aMeta, const Handle(TCollection_HAsciiString)& aName, const Handle(MS_HSequenceOfExternMet)& SeqOfEM, - const Handle(MS_HSequenceOfMemberMet)& SeqOfMM) -{ + const Handle(MS_HSequenceOfMemberMet)& SeqOfMM, + const Handle(TColStd_HSequenceOfHAsciiString)& use + ) { + Handle(MS_Client) client; SeqOfMemberMet = SeqOfMM; @@ -59,6 +210,25 @@ void CPPJini_Init(const Handle(MS_MetaSchema)& aMeta, ErrorMsg << "CPPJini" << "Init : Client " << aName << " not found..." << endm; Standard_NoSuchObject::Raise(); } + + Standard_Integer i; + Standard_Integer useLen = use -> Length (); + + if ( s_Length ) { + + for ( i = 0; i < s_Length; ++i ) delete s_CltInfo[ i ]; + + delete [] s_CltInfo; + + } // end if + + s_Length = useLen; + s_CltInfo = new CPPJini_ClientInfo*[ s_Length ]; + + for ( i = 0; i < s_Length; ++i ) + + s_CltInfo[ i ] = new CPPJini_ClientInfo ( aMeta, use -> Value ( i + 1 ) ); + } Handle(TCollection_HAsciiString)& CPPJini_TransientRootName() @@ -886,6 +1056,12 @@ void CPPJini_ArgumentBuilder(const Handle(MS_MetaSchema)& aMeta, ArgsInCall->AssignCat("the_"); ArgsInCall->AssignCat(aSeqP->Value(i)->Name()); if (aSeqP->Value(i)->IsOut()) { + api -> AddVariable ( + "%FromInterface", + CPPJini_DotReplace ( + CPPJini_InterfaceName -> ToCString (), '/' + ) -> ToCString () + ); api->Apply("%MetOut","TransientSetValue"); ArgsOut->AssignCat(api->GetVariableValue("%MetOut")); } @@ -1136,7 +1312,12 @@ void CPPJini_ReturnBuilder(const Handle(MS_MetaSchema)& aMeta, api->AddVariable("%FromInterface","jcas"); } else { - api->AddVariable("%FromInterface",CPPJini_InterfaceName->ToCString()); + api -> AddVariable ( + "%FromInterface", + CPPJini_DotReplace ( + CPPJini_InterfaceName -> ToCString (), '/' + ) -> ToCString () + ); } if (aClass->IsTransient()) { api->Apply("%Return","ReturnHandle"); @@ -1166,7 +1347,12 @@ void CPPJini_ReturnBuilder(const Handle(MS_MetaSchema)& aMeta, api->AddVariable("%FromInterface","jcas"); } else { - api->AddVariable("%FromInterface",CPPJini_InterfaceName->ToCString()); + api -> AddVariable ( + "%FromInterface", + CPPJini_DotReplace ( + CPPJini_InterfaceName -> ToCString (), '/' + ) -> ToCString () + ); } if (m->IsRefReturn()) { api->Apply("%Return","ReturnValueRef"); @@ -1253,7 +1439,10 @@ void CPPJini_MethodBuilder(const Handle(MS_MetaSchema)& aMeta, api->AddVariable("%ClassName",className->ToCString()); - api->AddVariable("%MethodName",methodName->ToCString()); + api -> AddVariable ( + "%MethodName", + CPPJini_DotReplace ( methodName -> ToCString () ) -> ToCString () + );; if ((m->IsKind(STANDARD_TYPE(MS_InstMet))) || (m->IsKind(STANDARD_TYPE(MS_Construc)))) { @@ -1316,7 +1505,10 @@ void CPPJini_MethodBuilder(const Handle(MS_MetaSchema)& aMeta, - api->AddVariable("%MethodName",metname->ToCString()); + api -> AddVariable ( + "%MethodName", + CPPJini_DotReplace ( metname -> ToCString () ) -> ToCString () + ); api->AddVariable("%Return",RetInDecl->ToCString()); api->AddVariable("%ClassName",className->ToCString()); @@ -1372,7 +1564,7 @@ void CPPJini_TypeExtract(const Handle(MS_MetaSchema)& aMeta, const Standard_CString Mode) { - InfoMsg << "CPPJini" << "Extract " << aName->ToCString() << endm; +// InfoMsg << "CPPJini" << "Extract " << aName->ToCString() << endm; Handle(MS_Type) srcType; Handle(MS_Package) srcPackage; @@ -1548,6 +1740,43 @@ void CPPJini_Extract(const Handle(MS_MetaSchema)& aMeta, Standard_NoSuchObject::Raise(); } + Standard_Boolean fDuplicate; + Handle( TCollection_HAsciiString ) cltName; + + if ( theMode == CPPJini_INCOMPLETE ) { + + if ( CPPJini_HasIncomplete ( aTypeName, cltName, fDuplicate ) ) { + + InfoMsg << "CPPJini" << "Skipping " << aTypeName + << " (already defined in " << cltName << ")" << endm; + + if ( fDuplicate ) + + WarningMsg << "CPPJini" << cltName << " defined in more than one client declared in 'usues' statement" + << endm; + + return; + + } // end if + + } else if ( theMode == CPPJini_COMPLETE ) { + + if ( CPPJini_HasComplete ( aTypeName, cltName, fDuplicate ) ) { + + InfoMsg << "CPPJini" << "Skipping " << aTypeName + << " (already defined in " << cltName << ")" << endm; + + if ( fDuplicate ) + + WarningMsg << "CPPJini" << cltName << " defined in more than one client declared in 'uses' statement" + << endm; + + return; + + } // end if + + } // end if + CPPJini_TypeExtract(aMeta,aTypeName,edlsfullpath,outdir,outfile,theMode,Mode); } else { @@ -1556,3 +1785,13 @@ void CPPJini_Extract(const Handle(MS_MetaSchema)& aMeta, } } +Handle( TCollection_HAsciiString ) CPPJini_DotReplace ( char* str, char c ) { + + Handle( TCollection_HAsciiString ) retVal = new TCollection_HAsciiString ( str ); + + retVal -> ChangeAll ( '.', c ); + + return retVal; + +} // end CPPJini_DotReplace + diff --git a/src/CPPJini/CPPJini.hxx b/src/CPPJini/CPPJini.hxx index d3b1e4f..02f76cf 100755 --- a/src/CPPJini/CPPJini.hxx +++ b/src/CPPJini/CPPJini.hxx @@ -47,8 +47,10 @@ extern "C" { void Standard_EXPORT CPPJini_Init(const Handle(MS_MetaSchema)&, const Handle(TCollection_HAsciiString)&, const Handle(MS_HSequenceOfExternMet)&, - const Handle(MS_HSequenceOfMemberMet)&); - + const Handle(MS_HSequenceOfMemberMet)&, + const Handle( TColStd_HSequenceOfHAsciiString )& + ); + void Standard_EXPORT CPPJini_Extract(const Handle(MS_MetaSchema)& ams, const Handle(TCollection_HAsciiString)& atypename, const Handle(TColStd_HSequenceOfHAsciiString)& edlsfullpath, diff --git a/src/CPPJini/CPPJini_MPV.cxx b/src/CPPJini/CPPJini_MPV.cxx index 19a371a..8af4113 100755 --- a/src/CPPJini/CPPJini_MPV.cxx +++ b/src/CPPJini/CPPJini_MPV.cxx @@ -1,3 +1,4 @@ +#define CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR 0 // CLE // // 10/1995 @@ -45,8 +46,28 @@ #include +extern Standard_Boolean CPPJini_HasComplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + +extern Standard_Boolean CPPJini_HasIncomplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + +extern Standard_Boolean CPPJini_HasSemicomplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + Handle(TCollection_HAsciiString)& CPPJini_MPVRootName(); +extern Handle( TCollection_HAsciiString ) CPPJini_DotReplace ( char*, char = '_' ); + void CPPJini_MethodUsedTypes(const Handle(MS_MetaSchema)& aMeta, const Handle(MS_Method)& aMethod, const Handle(TColStd_HSequenceOfHAsciiString)& List, @@ -145,9 +166,9 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, methods = theClass->GetMethods(); } - +#if CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR Standard_Boolean mustCreateEmptyConst = !CPPJini_HaveEmptyConstructor(aMeta,theClass->FullName(),methods); - +#endif // CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR if (MustBeComplete != CPPJini_INCOMPLETE) { CPPJini_DataMapOfAsciiStringInteger mapnames; @@ -179,12 +200,12 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, } api->AddVariable("%Class",theClass->FullName()->ToCString()); - +#if CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR if (mustCreateEmptyConst) { api->Apply(VJMethod,"EmptyConstructorHeader"); publics->AssignCat(api->GetVariableValue(VJMethod)); } - +#endif // CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR Handle(TCollection_HAsciiString) namefinal = new TCollection_HAsciiString("Java_"); namefinal->AssignCat(CPPJini_InterfaceName); @@ -192,7 +213,10 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, namefinal->AssignCat(CPPJini_UnderScoreReplace(theClass->FullName())); namefinal->AssignCat("_FinalizeValue"); - api->AddVariable("%MethodName",namefinal->ToCString()); + api -> AddVariable ( + "%MethodName", + CPPJini_DotReplace ( namefinal -> ToCString () ) -> ToCString () + ); api->Apply(VJMethod,"FinalizeForValue"); Supplement->Append(api->GetVariableValue(VJMethod)); @@ -210,7 +234,35 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, api->Apply("%Includes","IncludeJCas"); } else { - api->Apply("%Includes","Include"); + + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + Standard_Boolean fPush = Standard_False; + + if ( CPPJini_HasComplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasIncomplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + List -> Value ( i ), aClt, fDup + ) + ) { + + fPush = Standard_True; + api -> AddVariable ( "%Interface", aClt -> ToCString () ); + + } // end if + + api->Apply("%Includes","Include"); + + if ( fPush ) + + api -> AddVariable ( + "%Interface", CPPJini_InterfaceName -> ToCString () + ); + } publics->AssignCat(api->GetVariableValue("%Includes")); } @@ -224,7 +276,34 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, api->Apply("%Includes","ShortDecJCas"); } else { - api->Apply("%Includes","ShortDec"); + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + Standard_Boolean fPush = Standard_False; + + if ( CPPJini_HasComplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasIncomplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + List -> Value ( i ), aClt, fDup + ) + ) { + + fPush = Standard_True; + api -> AddVariable ( "%Interface", aClt -> ToCString () ); + + } // end if + + api->Apply("%Includes","ShortDec"); + + if ( fPush ) + + api -> AddVariable ( + "%Interface", CPPJini_InterfaceName -> ToCString () + ); + } publics->AssignCat(api->GetVariableValue("%Includes")); } @@ -235,12 +314,34 @@ void CPPJini_MPVClass(const Handle(MS_MetaSchema)& aMeta, // we create the inheritance // - if (theClass->GetInheritsNames()->Length() == 0) { - api->AddVariable("%Inherits",CPPJini_MPVRootName()->ToCString()); - } - else { - api->AddVariable("%Inherits",CPPJini_GetFullJavaType(theClass->GetInheritsNames()->Value(1))->ToCString()); - } + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + + if ( CPPJini_HasComplete ( + theClass -> FullName (), aClt, fDup + ) || + CPPJini_HasIncomplete ( + theClass -> FullName (), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + theClass -> FullName (), aClt, fDup + ) + ) { + + aClt -> AssignCat ( "." ); + aClt -> AssignCat ( theClass -> FullName () ); + api -> AddVariable ( "%Inherits", aClt -> ToCString () ); + + } else { + + if (theClass->GetInheritsNames()->Length() == 0) { + api->AddVariable("%Inherits",CPPJini_MPVRootName()->ToCString()); + } + else { + api->AddVariable("%Inherits",CPPJini_GetFullJavaType(theClass->GetInheritsNames()->Value(1))->ToCString()); + } + + } // end else api->AddVariable("%Class",theClass->FullName()->ToCString()); diff --git a/src/CPPJini/CPPJini_Template.edl b/src/CPPJini/CPPJini_Template.edl index 5af2e8c..6549923 100755 --- a/src/CPPJini/CPPJini_Template.edl +++ b/src/CPPJini/CPPJini_Template.edl @@ -411,11 +411,10 @@ $%ClassName* the_this = (%ClassName*) jcas_GetHandle(env,theobj); -- out argument -@template TransientSetValue(%ClassName,%ArgName) is -$Handle(%ClassName)* theprevious_%ArgName = (Handle(%ClassName)*) jcas_GetHandle(env,%ArgName); -$if (theprevious_%ArgName) delete theprevious_%ArgName; -$Handle(%ClassName)* thenew_%ArgName = new Handle(%ClassName); -$(*thenew_%ArgName) = the_%ArgName; +@template TransientSetValue(%ClassName,%ArgName,%FromInterface) is +$if ( !%ArgName ) %ArgName = jcas_CreateObject ( +$ env, "%FromInterface/%ClassName", %ArgName +$ ); $jcas_SetHandle(env,%ArgName,thenew_%ArgName); @end; diff --git a/src/CPPJini/CPPJini_Transient.cxx b/src/CPPJini/CPPJini_Transient.cxx index da7b38b..7909053 100755 --- a/src/CPPJini/CPPJini_Transient.cxx +++ b/src/CPPJini/CPPJini_Transient.cxx @@ -1,3 +1,4 @@ +#define CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR 0 // CLE // // 10/1995 @@ -44,6 +45,24 @@ #include #include +extern Standard_Boolean CPPJini_HasComplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + +extern Standard_Boolean CPPJini_HasIncomplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + +extern Standard_Boolean CPPJini_HasSemicomplete ( + const Handle( TCollection_HAsciiString )&, + Handle( TCollection_HAsciiString )&, + Standard_Boolean& + ); + void CPPJini_MethodUsedTypes(const Handle(MS_MetaSchema)& aMeta, const Handle(MS_Method)& aMethod, const Handle(TColStd_HSequenceOfHAsciiString)& List, @@ -151,9 +170,9 @@ void CPPJini_TransientClass(const Handle(MS_MetaSchema)& aMeta, else if (MustBeComplete == CPPJini_COMPLETE){ methods = theClass->GetMethods(); } - +#if CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR Standard_Boolean mustCreateEmptyConst = !CPPJini_HaveEmptyConstructor(aMeta,theClass->FullName(),methods); - +#endif if (MustBeComplete != CPPJini_INCOMPLETE) { if (methods->Length() > 0) { CPPJini_DataMapOfAsciiStringInteger mapnames; @@ -185,12 +204,12 @@ void CPPJini_TransientClass(const Handle(MS_MetaSchema)& aMeta, } } } - +#if CPPJini_CREATE_EMPTY_JAVA_CONSTRUCTOR if (mustCreateEmptyConst) { api->Apply(VJMethod,"EmptyConstructorHeader"); publics->AssignCat(api->GetVariableValue(VJMethod)); } - +#endif api->AddVariable("%Methods",publics->ToCString()); publics->Clear(); @@ -204,7 +223,33 @@ void CPPJini_TransientClass(const Handle(MS_MetaSchema)& aMeta, api->Apply("%Includes","IncludeJCas"); } else { - api->Apply("%Includes","Include"); + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + Standard_Boolean fPush = Standard_False; + + if ( CPPJini_HasComplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasIncomplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + List -> Value ( i ), aClt, fDup + ) + ) { + + fPush = Standard_True; + api -> AddVariable ( "%Interface", aClt -> ToCString () ); + + } // end if + + api->Apply("%Includes","Include"); + + if ( fPush ) + + api -> AddVariable ( + "%Interface", CPPJini_InterfaceName -> ToCString () + ); } publics->AssignCat(api->GetVariableValue("%Includes")); } @@ -218,7 +263,33 @@ void CPPJini_TransientClass(const Handle(MS_MetaSchema)& aMeta, api->Apply("%Includes","ShortDecJCas"); } else { + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + Standard_Boolean fPush = Standard_False; + + if ( CPPJini_HasComplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasIncomplete ( + List -> Value ( i ), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + List -> Value ( i ), aClt, fDup + ) + ) { + + fPush = Standard_True; + api -> AddVariable ( "%Interface", aClt -> ToCString () ); + + } // end if + api->Apply("%Includes","ShortDec"); + + if ( fPush ) + + api -> AddVariable ( + "%Interface", CPPJini_InterfaceName -> ToCString () + ); } publics->AssignCat(api->GetVariableValue("%Includes")); } @@ -229,7 +300,27 @@ void CPPJini_TransientClass(const Handle(MS_MetaSchema)& aMeta, // we create the inheritance // - api->AddVariable("%Inherits",CPPJini_GetFullJavaType(theClass->GetInheritsNames()->Value(1))->ToCString()); + Handle( TCollection_HAsciiString ) aClt; + Standard_Boolean fDup; + + if ( CPPJini_HasComplete ( + theClass -> GetInheritsNames ()-> Value ( 1 ), aClt, fDup + ) || + CPPJini_HasIncomplete ( + theClass -> GetInheritsNames ()-> Value ( 1 ), aClt, fDup + ) || + CPPJini_HasSemicomplete ( + theClass -> GetInheritsNames () -> Value ( 1 ), aClt, fDup + ) + ) { + + aClt -> AssignCat ( "." ); + aClt -> AssignCat ( theClass -> GetInheritsNames () -> Value ( 1 ) ); + api -> AddVariable ( "%Inherits", aClt -> ToCString () ); + + } else + + api->AddVariable("%Inherits",CPPJini_GetFullJavaType(theClass->GetInheritsNames()->Value(1))->ToCString()); api->AddVariable("%Class",theClass->FullName()->ToCString()); -- 2.39.5