|
|
|
|
@@ -1077,10 +1077,13 @@ CREATE CLASS HbQtSource
|
|
|
|
|
METHOD parseProto( cProto, fBody_ )
|
|
|
|
|
METHOD parseVariables( cProto )
|
|
|
|
|
METHOD build()
|
|
|
|
|
METHOD getConstructor( nClsType )
|
|
|
|
|
METHOD buildCppCode( oMtd )
|
|
|
|
|
METHOD buildMethodBody( oMtd )
|
|
|
|
|
METHOD buildDOC()
|
|
|
|
|
METHOD buildClass()
|
|
|
|
|
METHOD getMethodBody( oMtd, cMtdName, nClsType )
|
|
|
|
|
METHOD buildClassEx()
|
|
|
|
|
|
|
|
|
|
ENDCLASS
|
|
|
|
|
|
|
|
|
|
@@ -1281,7 +1284,7 @@ METHOD HbQtSource:new( cQtModule, cQtVer, cQTHFileName, cCPPFileName, cPRGFileNa
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:build()
|
|
|
|
|
LOCAL i, s, oMtd, tmp, tmp1
|
|
|
|
|
LOCAL aLine
|
|
|
|
|
LOCAL aLine, aClsExt
|
|
|
|
|
|
|
|
|
|
::hRef[ ::cQtObject ] := NIL
|
|
|
|
|
|
|
|
|
|
@@ -1499,41 +1502,18 @@ METHOD HbQtSource:build()
|
|
|
|
|
aadd( aLine, "}" )
|
|
|
|
|
aadd( aLine, "" )
|
|
|
|
|
|
|
|
|
|
/* Build the constructor */
|
|
|
|
|
aadd( aLine, ::new_[ 1 ] ) // Func definition
|
|
|
|
|
aadd( aLine, ::new_[ 2 ] ) // {
|
|
|
|
|
IF ::isConstructor
|
|
|
|
|
if ::isList
|
|
|
|
|
aadd( aLine, " " + ::cQtObject + "< void * > * pObj = NULL;" )
|
|
|
|
|
else
|
|
|
|
|
aadd( aLine, " " + ::cQtObject + " * pObj = NULL;" )
|
|
|
|
|
endif
|
|
|
|
|
aadd( aLine, " " )
|
|
|
|
|
FOR i := 3 TO len( ::new_ ) - 1
|
|
|
|
|
IF !( left( ltrim( ::new_[ i ] ), 2 ) == "//" )
|
|
|
|
|
IF "__HB_RETPTRGC__(" $ ::new_[ i ]
|
|
|
|
|
s := ::new_[ i ]
|
|
|
|
|
s := trim( strtran( s, "__HB_RETPTRGC__(", "pObj =" ) )
|
|
|
|
|
s := strtran( s, ");", ";" )
|
|
|
|
|
s := strtran( s, "( "+ ::cQtObject + "* )" )
|
|
|
|
|
aadd( aLine, s )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( aLine, ::new_[ i ] )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( aLine, " " )
|
|
|
|
|
aadd( aLine, " hb_retptrGC( hbqt_gcAllocate_" + ::cQtObject + "( ( void * ) pObj, " + iif( ::isDetached, "false", "true" ) + " ) );" )
|
|
|
|
|
ELSE
|
|
|
|
|
FOR i := 3 TO len( ::new_ ) - 1
|
|
|
|
|
aadd( aLine, ::new_[ i ] )
|
|
|
|
|
NEXT
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( aLine, ::new_[ len( ::new_ ) ] ) // }
|
|
|
|
|
aadd( aLine, "" )
|
|
|
|
|
aeval( ::getConstructor( 0 ), {|e| aadd( aLine, e ) } )
|
|
|
|
|
|
|
|
|
|
/* Insert Functions */
|
|
|
|
|
aeval( ::txt_, {|e| aadd( aLine, strtran( e, chr( 13 ) ) ) } )
|
|
|
|
|
|
|
|
|
|
/* A try to generate classes on C++ level - only for QObject, QPaintDevice, QWidget */
|
|
|
|
|
IF !empty( aClsExt := ::buildClassEx() )
|
|
|
|
|
aeval( aClsExt, {|e| aadd( aLine, strtran( e, chr( 13 ) ) ) } )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Footer */
|
|
|
|
|
hbqtgen_BuildFooter( @aLine, ::cQtVer )
|
|
|
|
|
|
|
|
|
|
@@ -1550,10 +1530,157 @@ METHOD HbQtSource:build()
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:getConstructor( nClsType )
|
|
|
|
|
LOCAL i, s, aLine := {}
|
|
|
|
|
|
|
|
|
|
aadd( aLine, ::new_[ 2 ] ) // {
|
|
|
|
|
|
|
|
|
|
IF nClsType == 1
|
|
|
|
|
aadd( aLine, " if( s_p" + ::cQtObject + " == NULL )" )
|
|
|
|
|
aadd( aLine, " hbqt_" + ::cQtObject + "Init();" )
|
|
|
|
|
aadd( aLine, " PHB_ITEM pObject = hbqt_" + ::cQtObject + "New();" )
|
|
|
|
|
aadd( aLine, "" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ::isConstructor
|
|
|
|
|
IF ::isList
|
|
|
|
|
aadd( aLine, " " + ::cQtObject + "< void * > * pObj = NULL;" )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( aLine, " " + ::cQtObject + " * pObj = NULL;" )
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( aLine, " " )
|
|
|
|
|
FOR i := 3 TO len( ::new_ ) - 1
|
|
|
|
|
IF !( left( ltrim( ::new_[ i ] ), 2 ) == "//" )
|
|
|
|
|
IF "__HB_RETPTRGC__(" $ ::new_[ i ]
|
|
|
|
|
s := ::new_[ i ]
|
|
|
|
|
s := trim( strtran( s, "__HB_RETPTRGC__(", "pObj =" ) )
|
|
|
|
|
s := strtran( s, ");", ";" )
|
|
|
|
|
s := strtran( s, "( "+ ::cQtObject + "* )" )
|
|
|
|
|
aadd( aLine, s )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( aLine, ::new_[ i ] )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( aLine, " " )
|
|
|
|
|
IF nClsType == 0
|
|
|
|
|
aadd( aLine, " hb_retptrGC( hbqt_gcAllocate_" + ::cQtObject + "( ( void * ) pObj, " + iif( ::isDetached, "false", "true" ) + " ) );" )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( aLine, " hb_arraySetPtrGC( pObject, 1, hbqt_gcAllocate_" + ::cQtObject + "( ( void * ) pObj, true ) );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ELSE
|
|
|
|
|
FOR i := 3 TO len( ::new_ ) - 1
|
|
|
|
|
aadd( aLine, ::new_[ i ] )
|
|
|
|
|
NEXT
|
|
|
|
|
ENDIF
|
|
|
|
|
IF nClsType == 1
|
|
|
|
|
aadd( aLine, " hb_itemReturnRelease( pObject );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( aLine, ::new_[ len( ::new_ ) ] ) // }
|
|
|
|
|
aadd( aLine, "" )
|
|
|
|
|
|
|
|
|
|
RETURN aLine
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:getMethodBody( oMtd, cMtdName, nClsType )
|
|
|
|
|
LOCAL FP, cTmp, n
|
|
|
|
|
LOCAL txt_:= {}
|
|
|
|
|
|
|
|
|
|
aadd( txt_, "/* " + strtran( oMtd:cProto, chr(13) ) + " */" )
|
|
|
|
|
//aadd( txt_, "HB_FUNC" + iif( nClsType == 1, "_STATIC", "" ) + "( " + cMtdName + " )" )
|
|
|
|
|
aadd( txt_, "HB_FUNC( " + cMtdName + " )" )
|
|
|
|
|
aadd( txt_, "{" )
|
|
|
|
|
|
|
|
|
|
IF !empty( oMtd:fBody_ )
|
|
|
|
|
aeval( oMtd:fBody_, {|e| aadd( txt_, e ) } )
|
|
|
|
|
ELSE
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
cTmp := ::cQtObject + iif( ::isList, "< void * >", "" )
|
|
|
|
|
IF nClsType == 0
|
|
|
|
|
aadd( txt_, " " + cTmp + " * p = hbqt_par_" + ::cQtObject + "( 1 );" )
|
|
|
|
|
ELSEIF nClsType == 1
|
|
|
|
|
aadd( txt_, " " + cTmp + " * p = ( " + cTmp + " * ) hbqt_getqtptr();" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Insert parameters by reference */
|
|
|
|
|
IF ! empty( oMtd:aPre )
|
|
|
|
|
FOR n := 1 TO len( oMtd:aPre )
|
|
|
|
|
aadd( txt_, " " + oMtd:aPre[ n, 1 ] )
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( txt_, "" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* One line function body */
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
IF nClsType == 0
|
|
|
|
|
FP := strtran( oMtd:cCmd, "hbqt_par_" + ::cQtObject + "( 1 )", "( p )" )
|
|
|
|
|
ELSEIF nClsType == 1
|
|
|
|
|
FP := oMtd:cCmdN // strtran( oMtd:cCmdN, "hbqt_par_" + ::cQtObject + "( 1 )", "( p )" )
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( txt_, " if( p )" )
|
|
|
|
|
IF oMtd:nDetach > 0 .OR. "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( txt_, " {" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ELSE
|
|
|
|
|
FP := oMtd:cCmd
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Manage Re-Attached */
|
|
|
|
|
IF oMtd:nAttach > 0
|
|
|
|
|
FP := strtran( FP, ", false", ", true" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Manage detached Argument */
|
|
|
|
|
IF oMtd:nDetach > 0
|
|
|
|
|
aadd( txt_, " hbqt_detachgcpointer( " + hb_ntos( oMtd:nDetach + iif( nClsType == 0, 1, 0 ) ) + " );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( txt_, " void * pText = NULL;" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
aadd( txt_, " " + FP )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( txt_, " " + FP )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( txt_, " hb_strfree( pText );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
IF oMtd:nDetach > 0 .OR. "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( txt_, " }" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Return values back to PRG */
|
|
|
|
|
IF ! empty( oMtd:aPre )
|
|
|
|
|
aadd( txt_, "" )
|
|
|
|
|
FOR n := 1 TO len( oMtd:aPre )
|
|
|
|
|
IF nClsType == 0
|
|
|
|
|
aadd( txt_, " " + oMtd:aPre[ n, 4 ] + "( " + oMtd:aPre[ n, 3 ] + ", " + hb_ntos( oMtd:aPre[ n, 2 ] ) + " );" )
|
|
|
|
|
ELSEIF nClsType == 1
|
|
|
|
|
aadd( txt_, " " + oMtd:aPreN[ n, 4 ] + "( " + oMtd:aPreN[ n, 3 ] + ", " + hb_ntos( oMtd:aPreN[ n, 2 ] ) + " );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
NEXT
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( txt_, "}" )
|
|
|
|
|
aadd( txt_, "" )
|
|
|
|
|
|
|
|
|
|
RETURN txt_
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:buildMethodBody( oMtd )
|
|
|
|
|
LOCAL n, FP, cFunc
|
|
|
|
|
LOCAL n, cFunc
|
|
|
|
|
LOCAL aBdy
|
|
|
|
|
|
|
|
|
|
oMtd:cCmd := StrTran( oMtd:cCmd, "( )", "()" ) + ";"
|
|
|
|
|
oMtd:cCmdN := StrTran( oMtd:cCmdN, "( )", "()" ) + ";"
|
|
|
|
|
|
|
|
|
|
IF ( n := ascan( ::func_, {|e_| e_[ 1 ] == oMtd:cFun } ) ) > 0
|
|
|
|
|
::func_[ n,2 ]++
|
|
|
|
|
@@ -1567,75 +1694,8 @@ METHOD HbQtSource:buildMethodBody( oMtd )
|
|
|
|
|
aadd( ::func_, { oMtd:cFun, 0, "" } )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
aadd( ::txt_, "/* " + strtran( oMtd:cProto, chr(13) ) + " */" )
|
|
|
|
|
aadd( ::txt_, "HB_FUNC( QT_" + upper( ::cQtObject ) + "_" + upper( oMtd:cHBFunc ) + " )" )
|
|
|
|
|
aadd( ::txt_, "{" )
|
|
|
|
|
IF !empty( oMtd:fBody_ )
|
|
|
|
|
aeval( oMtd:fBody_, {|e| aadd( ::txt_, e ) } )
|
|
|
|
|
ELSE
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
aadd( ::txt_, " " + ::cQtObject + iif( ::isList, "< void *>", "" ) + " * p = hbqt_par_" + ::cQtObject + "( 1 );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Insert parameters by reference */
|
|
|
|
|
IF ! empty( oMtd:aPre )
|
|
|
|
|
FOR n := 1 TO len( oMtd:aPre )
|
|
|
|
|
aadd( ::txt_, " " + oMtd:aPre[ n, 1 ] )
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( ::txt_, "" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* One line function body */
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
FP = strtran( oMtd:cCmd, "hbqt_par_" + ::cQtObject + "( 1 )", "( p )" )
|
|
|
|
|
aadd( ::txt_, " if( p )" )
|
|
|
|
|
IF oMtd:nDetach > 0 .OR. "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( ::txt_, " {" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ELSE
|
|
|
|
|
FP := oMtd:cCmd
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Manage Re-Attached */
|
|
|
|
|
IF oMtd:nAttach > 0
|
|
|
|
|
FP := strtran( FP, ", false", ", true" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Manage detached Argument */
|
|
|
|
|
IF oMtd:nDetach > 0
|
|
|
|
|
aadd( ::txt_, " hbqt_detachgcpointer( " + hb_ntos( oMtd:nDetach + 1 ) + " );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( ::txt_, " void * pText = NULL;" )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
aadd( ::txt_, " " + FP )
|
|
|
|
|
ELSE
|
|
|
|
|
aadd( ::txt_, " " + FP )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( ::txt_, " hb_strfree( pText );" )
|
|
|
|
|
ENDIF
|
|
|
|
|
//
|
|
|
|
|
IF ! oMtd:isConstructor
|
|
|
|
|
IF oMtd:nDetach > 0 .OR. "hb_parstr_utf8(" $ oMtd:cCmd
|
|
|
|
|
aadd( ::txt_, " }" )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/* Return values back to PRG */
|
|
|
|
|
IF ! empty( oMtd:aPre )
|
|
|
|
|
aadd( ::txt_, "" )
|
|
|
|
|
FOR n := 1 TO len( oMtd:aPre )
|
|
|
|
|
aadd( ::txt_, " " + oMtd:aPre[ n, 4 ] + "( " + oMtd:aPre[ n, 3 ] + ", " + hb_ntos( oMtd:aPre[ n, 2 ] ) + " );" )
|
|
|
|
|
NEXT
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
aadd( ::txt_, "}" )
|
|
|
|
|
aadd( ::txt_, "" )
|
|
|
|
|
aBdy := ::getMethodBody( oMtd, "QT_" + upper( ::cQtObject ) + "_" + upper( oMtd:cHBFunc ), 0 )
|
|
|
|
|
aeval( aBdy, {|e| aadd( ::txt_, e ) } )
|
|
|
|
|
|
|
|
|
|
cFunc := iif( ::areMethodsClubbed, hbqtgen_stripLastFrom( oMtd:cHBFunc, "_" ), oMtd:cHBFunc )
|
|
|
|
|
|
|
|
|
|
@@ -1649,6 +1709,95 @@ METHOD HbQtSource:buildMethodBody( oMtd )
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:buildClassEx()
|
|
|
|
|
LOCAL aClsEx := {}
|
|
|
|
|
LOCAL cObj, uObj, cNew, uNew, oMtd
|
|
|
|
|
LOCAL aBdy
|
|
|
|
|
|
|
|
|
|
IF ! ( ::cQtObject $ "QPaintDevice,QWidget" )
|
|
|
|
|
RETURN aClsEx
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
cObj := ::cQtObject
|
|
|
|
|
uObj := upper( cObj )
|
|
|
|
|
cNew := cObj + "New"
|
|
|
|
|
uNew := uObj + "NEW"
|
|
|
|
|
|
|
|
|
|
aadd( aClsEx, '#include "hbapicls.h"' )
|
|
|
|
|
aadd( aClsEx, '#include "hbapiitm.h"' )
|
|
|
|
|
aadd( aClsEx, '#include "hbstack.h"' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'HB_FUNC_EXTERN( ' + uNew + ' );' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'static PHB_ITEM s_p' + cObj + ' = NULL;' )
|
|
|
|
|
aadd( aClsEx, 'static HB_SYMB s_sym' + cNew + ' = { "' + uNew + '", {HB_FS_PUBLIC|HB_FS_LOCAL}, {HB_FUNCNAME( ' + uNew + ' )}, NULL };' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
#if 0
|
|
|
|
|
aadd( aClsEx, 'HB_FUNC( Q' + uObj + '_' + 'PPTR )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' PHB_ITEM pObj = hb_stackSelfItem();' )
|
|
|
|
|
aadd( aClsEx, ' hb_retptr( hb_arrayGetPtr( pObj, 1 ) );' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'HB_FUNC( Q' + uObj + '__' + 'PPTR )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' PHB_ITEM pObj = hb_stackSelfItem();' )
|
|
|
|
|
aadd( aClsEx, ' hb_arraySetPtr( pObj, 1, hb_parptr( 1 ) );' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
#endif
|
|
|
|
|
aadd( aClsEx, 'static void * hbqt_getqtptr( void )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' PHB_ITEM pObj = hb_stackSelfItem();' )
|
|
|
|
|
aadd( aClsEx, ' HBQT_GC_T * p = ( HBQT_GC_T * ) hb_arrayGetPtrGC( pObj, 1, hbqt_gcFuncs() );' )
|
|
|
|
|
aadd( aClsEx, ' if( p && p->ph )' )
|
|
|
|
|
aadd( aClsEx, ' return p->ph;' )
|
|
|
|
|
aadd( aClsEx, ' else' )
|
|
|
|
|
aadd( aClsEx, ' return NULL;' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
FOR EACH oMtd IN ::aMethods
|
|
|
|
|
aBdy := ::getMethodBody( oMtd, 'Q' + uObj + '_' + upper( oMtd:cHBFunc ), 1 )
|
|
|
|
|
aeval( aBdy, {|e| aadd( aClsEx, e ) } )
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'static HB_USHORT hbqt_' + cObj + 'ClassCreate( void )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' HB_USHORT usClassH = hb_clsCreate( 1, "Q' + uObj + '" );' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
//aadd( aClsEx, ' hb_clsAdd( usClassH, "PPTR", HB_FUNCNAME( Q' + uObj + '_PPTR ) );' )
|
|
|
|
|
//aadd( aClsEx, ' hb_clsAdd( usClassH, "_PPTR", HB_FUNCNAME( Q' + uObj + '__PPTR ) );' )
|
|
|
|
|
FOR EACH oMtd IN ::aMethods
|
|
|
|
|
aadd( aClsEx, ' hb_clsAdd( usClassH, "' + oMtd:cHBFunc +'", HB_FUNCNAME( Q' + uObj + '_' + upper( oMtd:cHBFunc ) + ' ) );' )
|
|
|
|
|
NEXT
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, ' return usClassH;' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'void hbqt_' + cObj + 'Init( void )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' hb_dynsymNew( &s_sym' + cNew + ' );' )
|
|
|
|
|
aadd( aClsEx, ' s_p' + cObj + ' = hb_itemNew( NULL );' )
|
|
|
|
|
aadd( aClsEx, ' hb_clsAssociate( hbqt_' + cObj + 'ClassCreate() );' )
|
|
|
|
|
aadd( aClsEx, ' hb_itemMove( s_p' + cObj + ', hb_stackReturnItem() );' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'PHB_ITEM hbqt_' + cNew + '( void )' )
|
|
|
|
|
aadd( aClsEx, '{' )
|
|
|
|
|
aadd( aClsEx, ' if( ! s_p' + cObj + ' || ! HB_IS_OBJECT( s_p' + cObj + ' ) )' )
|
|
|
|
|
aadd( aClsEx, ' hbqt_errRT_ARG();' )
|
|
|
|
|
aadd( aClsEx, ' return hb_arrayClone( s_p' + cObj + ' );' )
|
|
|
|
|
aadd( aClsEx, '}' )
|
|
|
|
|
aadd( aClsEx, '' )
|
|
|
|
|
aadd( aClsEx, 'HB_FUNC( ' + uNew + ' )' )
|
|
|
|
|
aBdy := ::getConstructor( 1 )
|
|
|
|
|
aeval( aBdy, {|e| aadd( aClsEx, e ) } )
|
|
|
|
|
|
|
|
|
|
RETURN aClsEx
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:buildClass()
|
|
|
|
|
LOCAL s, n, cM, cC, oMtd, oArg, cP, txt_:={}, a_, cMtd, lClub
|
|
|
|
|
|
|
|
|
|
@@ -2171,6 +2320,7 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
LOCAL aArg, n, nn, cHBIdx, nIndex, s, ss, cFirstParamCast, cArg
|
|
|
|
|
LOCAL oMtd, oRet, oArg, k, cKey, cVal
|
|
|
|
|
LOCAL cRef
|
|
|
|
|
LOCAL cHBIdxN := "1", sN := ""
|
|
|
|
|
|
|
|
|
|
IF ( n := at( "(", cProto ) ) == 0
|
|
|
|
|
RETURN .f.
|
|
|
|
|
@@ -2238,7 +2388,9 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
oMtd:hArgs[ nIndex ] := oArg
|
|
|
|
|
|
|
|
|
|
oMtd:nHBIdx := nIndex + 1 // iif( oMtd:isConstructor, 0, 1 )
|
|
|
|
|
oMtd:nHBIdxN := nIndex
|
|
|
|
|
cHBIdx := hb_ntos( oMtd:nHBIdx )
|
|
|
|
|
cHBIdxN := hb_ntos( nIndex )
|
|
|
|
|
oMtd:cDocNM := HBQTGEN_THIS_PROPER( oArg:cName )
|
|
|
|
|
|
|
|
|
|
oMtd:nArgs++
|
|
|
|
|
@@ -2256,42 +2408,53 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
DO CASE
|
|
|
|
|
CASE oArg:cCast == "..."
|
|
|
|
|
oArg:cBody := "..."
|
|
|
|
|
oArg:cBodyN := "..."
|
|
|
|
|
oArg:cDoc := "..."
|
|
|
|
|
oArg:cTypeHB := "..."
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "PHB_ITEM"
|
|
|
|
|
oArg:cBody := "hb_param( " + cHBIdx + ", HB_IT_ANY )"
|
|
|
|
|
oArg:cBodyN := "hb_param( " + cHBIdxN + ", HB_IT_ANY )"
|
|
|
|
|
oArg:cDoc := "x" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "PB"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "T"
|
|
|
|
|
oArg:cBody := "hb_param( " + cHBIdx + ", HB_IT_ANY )"
|
|
|
|
|
oArg:cBodyN := "hb_param( " + cHBIdxN + ", HB_IT_ANY )"
|
|
|
|
|
oArg:cDoc := "x" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "P"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ ::cInt .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_storni" } )
|
|
|
|
|
aadd( oMtd:aPreN, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdxN, "i" + oMtd:cDocNM, "hb_storni" } )
|
|
|
|
|
oArg:cBody := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ ::cIntLong .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornl" } )
|
|
|
|
|
aadd( oMtd:aPreN, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdxN, "i" + oMtd:cDocNM, "hb_stornl" } )
|
|
|
|
|
oArg:cBody := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ ::cIntLongLong .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornint" } )
|
|
|
|
|
aadd( oMtd:aPreN, { oArg:cCast + " i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdxN, "i" + oMtd:cDocNM, "hb_stornint" } )
|
|
|
|
|
oArg:cBody := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ ::cInt
|
|
|
|
|
IF !empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" )
|
|
|
|
|
oArg:cBody := "hb_parnidef( " + cHBIdx + ", " + oArg:cDefault + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnidef( " + cHBIdxN + ", " + oArg:cDefault + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := "hb_parni( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parni( " + cHBIdxN + " )"
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
@@ -2299,8 +2462,10 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
CASE oArg:cCast $ ::cIntLong
|
|
|
|
|
IF !empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" )
|
|
|
|
|
oArg:cBody := "hb_parnldef( " + cHBIdx + ", " + oArg:cDefault + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnldef( " + cHBIdxN + ", " + oArg:cDefault + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := "hb_parnl( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnl( " + cHBIdxN + " )"
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
@@ -2308,8 +2473,10 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
CASE oArg:cCast $ "qlonglong,qulonglong"
|
|
|
|
|
IF !empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" )
|
|
|
|
|
oArg:cBody := "( " + oArg:cCast + " ) hb_parnintdef( " + cHBIdx + ", " + oArg:cDefault + " )"
|
|
|
|
|
oArg:cBodyN := "( " + oArg:cCast + " ) hb_parnintdef( " + cHBIdxN + ", " + oArg:cDefault + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := "( " + oArg:cCast + " ) hb_parnint( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( " + oArg:cCast + " ) hb_parnint( " + cHBIdxN + " )"
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
@@ -2317,58 +2484,71 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
CASE oArg:cCast $ ::cIntLongLong
|
|
|
|
|
IF !empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" )
|
|
|
|
|
oArg:cBody := "hb_parnintdef( " + cHBIdx + ", " + oArg:cDefault + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnintdef( " + cHBIdxN + ", " + oArg:cDefault + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := "hb_parnint( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnint( " + cHBIdxN + " )"
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ "double,qreal" .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { "qreal qr" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "qr" + oMtd:cDocNM, "hb_stornd" } )
|
|
|
|
|
aadd( oMtd:aPreN, { "qreal qr" + oMtd:cDocNM + " = 0;", oMtd:nHBIdxN, "qr" + oMtd:cDocNM, "hb_stornd" } )
|
|
|
|
|
oArg:cBody := "&qr" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&qr" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast $ "double,qreal,float"
|
|
|
|
|
oArg:cBody := "hb_parnd( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parnd( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "uchar" .and. oArg:lFar .and. ! oArg:lConst
|
|
|
|
|
/* TOFIX: Such code is not valid and should never be generated (const->non-const) [vszakats] */
|
|
|
|
|
oArg:cBody := "( uchar * ) hb_parc( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( uchar * ) hb_parc( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "c" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "C"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "uchar" .and. ! oArg:lFar .and. ! oArg:lConst
|
|
|
|
|
oArg:cBody := "( uchar ) hb_parni( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( uchar ) hb_parni( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "char" .and. oArg:lFar .and. ! oArg:lConst
|
|
|
|
|
/* TOFIX: Such code is not valid and should never be generated (const->non-const) [vszakats] */
|
|
|
|
|
oArg:cBody := "( char * ) hb_parc( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( char * ) hb_parc( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "c" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "C"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "char" .and. oArg:lFar .and. oArg:lConst
|
|
|
|
|
oArg:cBody := "( const char * ) hb_parc( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( const char * ) hb_parc( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "c" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "C"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "char" .and. ! oArg:lFar .and. ! oArg:lConst
|
|
|
|
|
oArg:cBody := "( char ) hb_parni( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "( char ) hb_parni( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE ( "::" $ oArg:cCast ) .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { oArg:cCast + " i" + oMtd:cDocNM + " = ( " + oArg:cCast + " ) 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_storni" } )
|
|
|
|
|
aadd( oMtd:aPreN, { oArg:cCast + " i" + oMtd:cDocNM + " = ( " + oArg:cCast + " ) 0;", oMtd:nHBIdxN, "i" + oMtd:cDocNM, "hb_storni" } )
|
|
|
|
|
oArg:cBody := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE ( "::" $ oArg:cCast )
|
|
|
|
|
s := "( " + oArg:cCast + " ) hb_parni( " + cHBIdx + " )"
|
|
|
|
|
sN := "( " + oArg:cCast + " ) hb_parni( " + cHBIdxN + " )"
|
|
|
|
|
IF !empty( oArg:cDefault ) .AND. !( oArg:cDefault == "0" )
|
|
|
|
|
IF ascan( ::enum_, oArg:cDefault ) > 0
|
|
|
|
|
ss := ::cQtObject + "::" + oArg:cDefault
|
|
|
|
|
@@ -2378,53 +2558,66 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
ENDIF
|
|
|
|
|
ss := "( " + oArg:cCast + " ) " + ss
|
|
|
|
|
oArg:cBody := "( HB_ISNUM( " + cHBIdx + " ) ? " + s + " : " + ss + " )"
|
|
|
|
|
oArg:cBodyN := "( HB_ISNUM( " + cHBIdxN + " ) ? " + sN + " : " + ss + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := s
|
|
|
|
|
oArg:cBodyN := sN
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "n" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "N"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "bool" .and. oArg:lFar
|
|
|
|
|
aadd( oMtd:aPre, { "bool i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdx, "i" + oMtd:cDocNM, "hb_stornl" } )
|
|
|
|
|
aadd( oMtd:aPreN, { "bool i" + oMtd:cDocNM + " = 0;", oMtd:nHBIdxN, "i" + oMtd:cDocNM, "hb_stornl" } )
|
|
|
|
|
oArg:cBody := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cBodyN := "&i" + oMtd:cDocNM
|
|
|
|
|
oArg:cDoc := "@l" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "L"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "bool"
|
|
|
|
|
oArg:cBody := "hb_parl( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hb_parl( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "l" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "L"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "QString"
|
|
|
|
|
oArg:cBody := "hb_parstr_utf8( " + cHBIdx + ", &pText, NULL )"
|
|
|
|
|
oArg:cBodyN := "hb_parstr_utf8( " + cHBIdxN + ", &pText, NULL )"
|
|
|
|
|
oArg:cDoc := "c" + oMtd:cDocNM // oArg:cCast - W R O N G
|
|
|
|
|
oArg:cTypeHB := "C"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "FT_Face"
|
|
|
|
|
oArg:cBody := "hbqt_par_FT_Face( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hbqt_par_FT_Face( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "c" + oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "C"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "QIcon"
|
|
|
|
|
cRef := "QIcon"
|
|
|
|
|
s := "*hbqt_par_QIcon( " + cHBIdx + " )"
|
|
|
|
|
sN := "*hbqt_par_QIcon( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cBody := "( HB_ISCHAR( " + cHBIdx + " ) ? " + "QIcon( hbqt_par_QString( " + cHBIdx + " ) )" + " : " + s + ")"
|
|
|
|
|
oArg:cBodyN := "( HB_ISCHAR( " + cHBIdxN + " ) ? " + "QIcon( hbqt_par_QString( " + cHBIdxN + " ) )" + " : " + sN + ")"
|
|
|
|
|
oArg:cDoc := "co" + oArg:cCast //oMtd:cDocNM // "p"
|
|
|
|
|
oArg:cTypeHB := "CO" // "PCO"
|
|
|
|
|
|
|
|
|
|
CASE oArg:lFar
|
|
|
|
|
cRef := oArg:cCast
|
|
|
|
|
oArg:cBody := "hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "hbqt_par_" + oArg:cCast + "( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "o" + oArg:cCast //oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "O" // "PO"
|
|
|
|
|
|
|
|
|
|
CASE oArg:lAnd .AND. oArg:lConst
|
|
|
|
|
cRef := oArg:cCast
|
|
|
|
|
s := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )"
|
|
|
|
|
sN := "*hbqt_par_" + oArg:cCast + "( " + cHBIdxN + " )"
|
|
|
|
|
IF !empty( oArg:cDefault ) .and. ( "(" $ oArg:cDefault )
|
|
|
|
|
oArg:cBody := "( HB_ISOBJECT( " + cHBIdx + " ) ? " + s + " : " + oArg:cDefault + " )"
|
|
|
|
|
oArg:cBodyN := "( HB_ISOBJECT( " + cHBIdxN + " ) ? " + sN + " : " + oArg:cDefault + " )"
|
|
|
|
|
ELSE
|
|
|
|
|
oArg:cBody := s
|
|
|
|
|
oArg:cBodyN := sN
|
|
|
|
|
ENDIF
|
|
|
|
|
oArg:cDoc := "o" + oArg:cCast //oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "O" //"PO"
|
|
|
|
|
@@ -2432,17 +2625,20 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
CASE oArg:lAnd
|
|
|
|
|
cRef := oArg:cCast
|
|
|
|
|
oArg:cBody := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "*hbqt_par_" + oArg:cCast + "( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "o" + oArg:cCast //oMtd:cDocNM //p
|
|
|
|
|
oArg:cTypeHB := "O" //"PO"
|
|
|
|
|
|
|
|
|
|
CASE oArg:cCast == "QChar"
|
|
|
|
|
cRef := oArg:cCast
|
|
|
|
|
oArg:cBody := "*hbqt_par_" + oArg:cCast + "( " + cHBIdx + " )"
|
|
|
|
|
oArg:cBodyN := "*hbqt_par_" + oArg:cCast + "( " + cHBIdxN + " )"
|
|
|
|
|
oArg:cDoc := "o" + oArg:cCast //oMtd:cDocNM
|
|
|
|
|
oArg:cTypeHB := "O" //"PO"
|
|
|
|
|
|
|
|
|
|
OTHERWISE
|
|
|
|
|
oArg:cBody := "" /* Just in case */
|
|
|
|
|
oArg:cBodyN := "" /* Just in case */
|
|
|
|
|
oArg:cDoc := ""
|
|
|
|
|
oArg:cTypeHB := ""
|
|
|
|
|
|
|
|
|
|
@@ -2451,6 +2647,7 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
hbqtgen_AddRef( ::hRef, cRef )
|
|
|
|
|
|
|
|
|
|
oMtd:cParas += oArg:cBody + ", "
|
|
|
|
|
oMtd:cParasN += oArg:cBodyN + ", "
|
|
|
|
|
oMtd:cDocs += oArg:cDoc + ", "
|
|
|
|
|
NEXT
|
|
|
|
|
ENDIF
|
|
|
|
|
@@ -2476,11 +2673,19 @@ METHOD HbQtSource:parseProto( cProto, fBody_ )
|
|
|
|
|
oMtd:cParas := substr( oMtd:cParas, 1, len( oMtd:cParas ) - 2 )
|
|
|
|
|
oMtd:cDocs := substr( oMtd:cDocs , 1, len( oMtd:cDocs ) - 2 )
|
|
|
|
|
ENDIF
|
|
|
|
|
IF right( oMtd:cParasN, 2 ) == ", "
|
|
|
|
|
oMtd:cParasN := substr( oMtd:cParasN, 1, len( oMtd:cParasN ) - 2 )
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
::buildCppCode( oMtd )
|
|
|
|
|
|
|
|
|
|
HB_SYMBOL_UNUSED( cHBIdxN )
|
|
|
|
|
HB_SYMBOL_UNUSED( sN )
|
|
|
|
|
|
|
|
|
|
RETURN oMtd:lValid
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
STATIC PROCEDURE hbqtgen_AddRef( hRef, cRef )
|
|
|
|
|
|
|
|
|
|
IF ! Empty( cRef ) .AND. !( ">" $ cRef ) .AND. !( cRef $ "uchar|QString|QRgb|Bool|char" )
|
|
|
|
|
@@ -2492,100 +2697,124 @@ STATIC PROCEDURE hbqtgen_AddRef( hRef, cRef )
|
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
LOCAL oRet := oMtd:oRet
|
|
|
|
|
LOCAL cPara := oMtd:cParas
|
|
|
|
|
LOCAL oRet := oMtd:oRet
|
|
|
|
|
LOCAL cPara := oMtd:cParas
|
|
|
|
|
LOCAL cParaN := oMtd:cParasN
|
|
|
|
|
LOCAL cRef
|
|
|
|
|
|
|
|
|
|
oMtd:cWdg := "hbqt_par_" + ::cQtObject + "( 1 )->"
|
|
|
|
|
oMtd:cParas := iif( oMtd:isVariable(), "", "( " + oMtd:cParas + " )" )
|
|
|
|
|
oMtd:cParasN := iif( oMtd:isVariable(), "", "( " + oMtd:cParasN + " )" )
|
|
|
|
|
oMtd:cCmn := oMtd:cWdg + oMtd:cFun + oMtd:cParas
|
|
|
|
|
oMtd:cCmnN := "( p )->" + oMtd:cFun + oMtd:cParasN
|
|
|
|
|
oMtd:cDocNMRet := HBQTGEN_THIS_PROPER( oRet:cName )
|
|
|
|
|
|
|
|
|
|
DO CASE
|
|
|
|
|
CASE oMtd:isConstructor
|
|
|
|
|
oMtd:cCmd := "hb_retptrGC( hbqt_gcAllocate_" + ::cQtObject + "( new " + oRet:cCast + "( " + cPara + " ), true ) )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptrGC( hbqt_gcAllocate_" + ::cQtObject + "( new " + oRet:cCast + "( " + cParaN + " ), true ) )"
|
|
|
|
|
oMtd:cPrgRet := "o" + ::cQtObject // "p"
|
|
|
|
|
|
|
|
|
|
CASE "<" $ oRet:cCast
|
|
|
|
|
DO CASE
|
|
|
|
|
CASE ! ( "QList" $ oRet:cCast )
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
oMtd:cPrgRet := ""
|
|
|
|
|
CASE "::" $ oRet:cCast
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
oMtd:cPrgRet := ""
|
|
|
|
|
CASE "QPair" $ oRet:cCast
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
oMtd:cPrgRet := ""
|
|
|
|
|
CASE "<T>" $ oRet:cCast
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
oMtd:cPrgRet := ""
|
|
|
|
|
OTHERWISE
|
|
|
|
|
cRef := "QList"
|
|
|
|
|
oMtd:cCmd := "hb_retptrGC( hbqt_gcAllocate_QList( new " + oRet:cCast + "( " + oMtd:cCmn + " ), true ) )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptrGC( hbqt_gcAllocate_QList( new " + oRet:cCast + "( " + oMtd:cCmnN + " ), true ) )"
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet
|
|
|
|
|
ENDCASE
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "T"
|
|
|
|
|
/* TOFIX: Such code is not valid and should never be generated [vszakats] */
|
|
|
|
|
oMtd:cCmd := "hb_retptr( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptr( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "p" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "void"
|
|
|
|
|
oMtd:cCmd := oMtd:cCmn
|
|
|
|
|
oMtd:cCmdN := oMtd:cCmnN
|
|
|
|
|
oMtd:cPrgRet := "NIL"
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast $ ::cInt
|
|
|
|
|
oMtd:cCmd := "hb_retni( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retni( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "n" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast $ ::cIntLong
|
|
|
|
|
oMtd:cCmd := "hb_retnl( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retnl( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "n" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast $ ::cIntLongLong
|
|
|
|
|
oMtd:cCmd := "hb_retnint( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retnint( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "n" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast $ "double,qreal,float"
|
|
|
|
|
oMtd:cCmd := "hb_retnd( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retnd( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "n" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE "::" $ oRet:cCast
|
|
|
|
|
oMtd:cCmd := "hb_retni( ( " + oRet:cCast + " ) " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retni( ( " + oRet:cCast + " ) " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "n" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "bool"
|
|
|
|
|
oMtd:cCmd := "hb_retl( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retl( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "l" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "char" .AND. oRet:lFar
|
|
|
|
|
oMtd:cCmd := "hb_retc( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retc( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "c" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "char"
|
|
|
|
|
oMtd:cCmd := "hb_retni( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retni( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "c" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "QString"
|
|
|
|
|
oMtd:cCmd := "hb_retstr_utf8( " + oMtd:cCmn + ".toUtf8().data()" + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retstr_utf8( " + oMtd:cCmnN + ".toUtf8().data()" + " )"
|
|
|
|
|
oMtd:cPrgRet := "c" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:cCast == "FT_Face"
|
|
|
|
|
oMtd:cCmd := "hb_retc( " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retc( " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "c" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
CASE oRet:lFar .AND. ( oRet:cCast $ "uchar" )
|
|
|
|
|
oMtd:cCmd := "hb_retc( ( const char * ) " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retc( ( const char * ) " + oMtd:cCmnN + " )"
|
|
|
|
|
oMtd:cPrgRet := "c" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE oRet:lFar .AND. ! oRet:lConst
|
|
|
|
|
IF hbqtgen_isAqtObject( oRet:cCast )
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn, .F. )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmnN, .F. )
|
|
|
|
|
ELSE
|
|
|
|
|
/* TOFIX: Such code is not valid and should never be generated [vszakats] */
|
|
|
|
|
oMtd:cCmd := "hb_retptr( ( " + oRet:cCast + "* ) " + oMtd:cCmn + " )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptr( ( " + oRet:cCast + "* ) " + oMtd:cCmnN + " )"
|
|
|
|
|
ENDIF
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet
|
|
|
|
|
|
|
|
|
|
@@ -2595,6 +2824,7 @@ METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
"Abstract" $ oRet:cCast
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := "hb_retptrGC( hbqt_gcAllocate_" + oRet:cCast + "( ( void * ) " + oMtd:cCmn + ", false ) )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptrGC( hbqt_gcAllocate_" + oRet:cCast + "( ( void * ) " + oMtd:cCmnN + ", false ) )"
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE hbqtgen_isAqtObject( oRet:cCast ) .AND. ;
|
|
|
|
|
@@ -2603,6 +2833,7 @@ METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
oRet:lVirt
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := "hb_retptrGC( hbqt_gcAllocate_" + oRet:cCast + "( ( void * ) " + oMtd:cCmn + ", false ) )"
|
|
|
|
|
oMtd:cCmdN := "hb_retptrGC( hbqt_gcAllocate_" + oRet:cCast + "( ( void * ) " + oMtd:cCmnN + ", false ) )"
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE hbqtgen_isAqtObject( oRet:cCast ) .AND. ;
|
|
|
|
|
@@ -2611,21 +2842,25 @@ METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
oRet:lConstL
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command_1( oRet:cCast, oMtd:cCmn )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command_1( oRet:cCast, oMtd:cCmnN )
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE oRet:lAnd .AND. oRet:lConst
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmnN )
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE oRet:lConst
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmnN )
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
CASE oRet:lAnd
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmnN )
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
OTHERWISE
|
|
|
|
|
@@ -2633,11 +2868,13 @@ METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
IF hbqtgen_isAqtObject( oRet:cCast )
|
|
|
|
|
cRef := oRet:cCast
|
|
|
|
|
oMtd:cCmd := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmn )
|
|
|
|
|
oMtd:cCmdN := hbqtgen_Get_Command( oRet:cCast, oMtd:cCmnN )
|
|
|
|
|
oMtd:cPrgRet := "o" + oMtd:cDocNMRet //p
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
oMtd:cError := "<<< " + oMtd:cProto + " | " + oRet:cCast + " >>>"
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
oMtd:cPrgRet := ""
|
|
|
|
|
//OutStd( oMtd:cError + hb_eol() )
|
|
|
|
|
|
|
|
|
|
@@ -2647,6 +2884,7 @@ METHOD HbQtSource:buildCppCode( oMtd )
|
|
|
|
|
/* Lists to be disabled in parameters - TODO */
|
|
|
|
|
IF "<" $ oMtd:cPar
|
|
|
|
|
oMtd:cCmd := ""
|
|
|
|
|
oMtd:cCmdN := ""
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ( oMtd:lValid := ! Empty( oMtd:cCmd ) )
|
|
|
|
|
@@ -2684,13 +2922,16 @@ CREATE CLASS HbqtMethod
|
|
|
|
|
DATA cRet INIT ""
|
|
|
|
|
|
|
|
|
|
DATA cParas INIT ""
|
|
|
|
|
DATA cParasN INIT ""
|
|
|
|
|
DATA cDocs INIT ""
|
|
|
|
|
|
|
|
|
|
DATA cDoc INIT "" // Qt_QWidget_setSize_1( nWidth, nHeight ) -> NIL
|
|
|
|
|
|
|
|
|
|
DATA cError INIT ""
|
|
|
|
|
DATA cCmd INIT ""
|
|
|
|
|
DATA cCmdN INIT ""
|
|
|
|
|
DATA cCmn INIT ""
|
|
|
|
|
DATA cCmnN INIT ""
|
|
|
|
|
DATA cDocNM INIT ""
|
|
|
|
|
DATA cDocNMRet INIT ""
|
|
|
|
|
DATA cPrgRet INIT ""
|
|
|
|
|
@@ -2698,7 +2939,9 @@ CREATE CLASS HbqtMethod
|
|
|
|
|
DATA cHBFunc INIT ""
|
|
|
|
|
|
|
|
|
|
DATA aPre INIT {}
|
|
|
|
|
DATA aPreN INIT {}
|
|
|
|
|
DATA nHBIdx
|
|
|
|
|
DATA nHBIdxN
|
|
|
|
|
DATA nArgQCast INIT 0 // First argument position of type Q*Class
|
|
|
|
|
DATA nArgHBObj INIT 0 // First argument position of type Q*Class
|
|
|
|
|
|
|
|
|
|
@@ -2735,6 +2978,7 @@ CREATE CLASS HbqtArgument
|
|
|
|
|
DATA cName
|
|
|
|
|
DATA cCast INIT ""
|
|
|
|
|
DATA cBody
|
|
|
|
|
DATA cBodyN
|
|
|
|
|
DATA cDoc
|
|
|
|
|
|
|
|
|
|
DATA lRet INIT .f.
|
|
|
|
|
@@ -2900,7 +3144,7 @@ STATIC FUNCTION hbqtgen_BuildCopyrightText( nMode, cQtVer )
|
|
|
|
|
aadd( txt_, "/* WARNING: Automatically generated source file. DO NOT EDIT! */" )
|
|
|
|
|
aadd( txt_, "" )
|
|
|
|
|
aadd( txt_, "/* Harbour Project QT wrapper" )
|
|
|
|
|
aadd( txt_, " Copyright 2009-2010 Pritpal Bedi <bedipritpal@hotmail.com>" )
|
|
|
|
|
aadd( txt_, " Copyright 2009-2011 Pritpal Bedi <bedipritpal@hotmail.com>" )
|
|
|
|
|
aadd( txt_, " www - http://harbour-project.org */" )
|
|
|
|
|
aadd( txt_, "" )
|
|
|
|
|
IF nMode == 0
|
|
|
|
|
|