From 545f660b09bc5abdad3a1cff6a218fadc206eb1b Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Sat, 19 Feb 2011 02:01:24 +0000 Subject: [PATCH] 2011-02-18 17:53 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbide/ideharbourhelp.prg ! Fixed: a last moment nasty omission in previous commit. * contrib/hbqt/hbmk2_qt.hbs ! Started: implementation of all C++ level class creation. Currently new class structure is only appended in QPainDevice.cpp and QWidget.cpp. ; This has to go in SVN to keep track of heavy changes in the engine plus my different working systems (home/office). * contrib/hbqt/qtcore/qth/QAbstractItemModel.qth * contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth * contrib/hbqt/qtgui/qth/QLayout.qth * contrib/hbqt/qtgui/qth/QMessageBox.qth * contrib/hbqt/qtgui/qth/QScrollArea.qth * contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth % Tweaked: detached and attached attributes of child widgets. --- harbour/ChangeLog | 17 + harbour/contrib/hbide/ideharbourhelp.prg | 9 +- harbour/contrib/hbqt/hbmk2_qt.hbs | 452 ++++++++++++++---- .../hbqt/qtcore/qth/QAbstractItemModel.qth | 2 +- .../hbqt/qtgui/qth/QGraphicsLinearLayout.qth | 2 +- harbour/contrib/hbqt/qtgui/qth/QLayout.qth | 8 +- .../contrib/hbqt/qtgui/qth/QMessageBox.qth | 2 +- .../contrib/hbqt/qtgui/qth/QScrollArea.qth | 4 +- .../hbqt/qtgui/qth/QTreeWidgetItem.qth | 10 +- 9 files changed, 385 insertions(+), 121 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c9b29d23fc..267853b6e4 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,23 @@ The license applies to all entries newer than 2009-04-28. */ +2011-02-18 17:53 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbide/ideharbourhelp.prg + ! Fixed: a last moment nasty omission in previous commit. + * contrib/hbqt/hbmk2_qt.hbs + ! Started: implementation of all C++ level class creation. + Currently new class structure is only appended in + QPainDevice.cpp and QWidget.cpp. + ; This has to go in SVN to keep track of heavy changes + in the engine plus my different working systems (home/office). + * contrib/hbqt/qtcore/qth/QAbstractItemModel.qth + * contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth + * contrib/hbqt/qtgui/qth/QLayout.qth + * contrib/hbqt/qtgui/qth/QMessageBox.qth + * contrib/hbqt/qtgui/qth/QScrollArea.qth + * contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth + % Tweaked: detached and attached attributes of child widgets. + 2011-02-18 23:44 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.pt_BR.po * utils/hbmk2/hbmk2.hu_HU.po diff --git a/harbour/contrib/hbide/ideharbourhelp.prg b/harbour/contrib/hbide/ideharbourhelp.prg index 28ac5d2dd3..19904d2e35 100644 --- a/harbour/contrib/hbide/ideharbourhelp.prg +++ b/harbour/contrib/hbide/ideharbourhelp.prg @@ -274,8 +274,11 @@ METHOD IdeHarbourHelp:clear() NEXT FOR EACH a_ IN ::aNodes IF a_[ 2 ] == "Path" - a_[ 3 ]:removeChild( a_[ 1 ] ) - a_[ 1 ] := NIL ; a_[ 3 ] := NIL + IF hb_isObject( a_[ 3 ] ) + a_[ 3 ]:removeChild( a_[ 1 ] ) + a_[ 3 ] := NIL + ENDIF + a_[ 1 ] := NIL ENDIF NEXT IF !empty( ::aNodes ) @@ -808,7 +811,7 @@ METHOD IdeHarbourHelp:pullDefinitions( acBuffer ) METHOD IdeHarbourHelp:pullDefinitionsHBD( cFileHBD ) IF hb_fileExists( cFileHBD ) - doc2functions( __hbdoc_LoadHBD( cFileHBD ) ) + RETURN doc2functions( __hbdoc_LoadHBD( cFileHBD ) ) ENDIF RETURN {} diff --git a/harbour/contrib/hbqt/hbmk2_qt.hbs b/harbour/contrib/hbqt/hbmk2_qt.hbs index ca057a0bf9..2341a5fd3e 100644 --- a/harbour/contrib/hbqt/hbmk2_qt.hbs +++ b/harbour/contrib/hbqt/hbmk2_qt.hbs @@ -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 "" $ 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 " ) + aadd( txt_, " Copyright 2009-2011 Pritpal Bedi " ) aadd( txt_, " www - http://harbour-project.org */" ) aadd( txt_, "" ) IF nMode == 0 diff --git a/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth b/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth index b690eb5b8f..e96dff0346 100644 --- a/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth +++ b/harbour/contrib/hbqt/qtcore/qth/QAbstractItemModel.qth @@ -59,7 +59,7 @@ bool insertRow ( int row, const QModelIndex & parent = QModelIndex() ) virtual bool insertRows ( int row, int count, const QModelIndex & parent = QModelIndex() ) virtual QMap itemData ( const QModelIndex & index ) const // virtual QModelIndexList match ( const QModelIndex & start, int role, const QVariant & value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap ) ) const -// virtual QMimeData * mimeData ( const QModelIndexList & indexes ) const +// virtual QMimeData * mimeData ( const QModelIndexList & indexes ) const [*A=1*] virtual QStringList mimeTypes () const virtual QModelIndex parent ( const QModelIndex & index ) const = 0 bool removeColumn ( int column, const QModelIndex & parent = QModelIndex() ) diff --git a/harbour/contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth b/harbour/contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth index e91c3105ab..1e20daecff 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QGraphicsLinearLayout.qth @@ -63,7 +63,7 @@ void insertStretch ( int index, int stretch = 1 ) qreal itemSpacing ( int index ) const Qt::Orientation orientation () const virtual void removeAt ( int index ) -void removeItem ( QGraphicsLayoutItem * item ) +void removeItem ( QGraphicsLayoutItem * item ) [*A=1*] void setAlignment ( QGraphicsLayoutItem * item, Qt::Alignment alignment ) void setItemSpacing ( int index, qreal spacing ) void setOrientation ( Qt::Orientation orientation ) diff --git a/harbour/contrib/hbqt/qtgui/qth/QLayout.qth b/harbour/contrib/hbqt/qtgui/qth/QLayout.qth index 656fed7769..b327a06650 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QLayout.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QLayout.qth @@ -50,19 +50,19 @@ virtual QSize maximumSize () const QWidget * menuBar () const virtual QSize minimumSize () const QWidget * parentWidget () const -void removeItem ( QLayoutItem * item ) -void removeWidget ( QWidget * widget ) +void removeItem ( QLayoutItem * item ) [*A=1*] +void removeWidget ( QWidget * widget ) [*A=1*] bool setAlignment ( QWidget * w, Qt::Alignment alignment ) void setAlignment ( Qt::Alignment alignment ) bool setAlignment ( QLayout * l, Qt::Alignment alignment ) void setContentsMargins ( int left, int top, int right, int bottom ) void setEnabled ( bool enable ) -void setMenuBar ( QWidget * widget ) +void setMenuBar ( QWidget * widget ) [*D=1*] void setSizeConstraint ( SizeConstraint ) void setSpacing ( int ) SizeConstraint sizeConstraint () const int spacing () const -virtual QLayoutItem * takeAt ( int index ) = 0 +virtual QLayoutItem * takeAt ( int index ) = 0 [*A=1*] void update () QSize closestAcceptableSize ( const QWidget * widget, const QSize & size ) diff --git a/harbour/contrib/hbqt/qtgui/qth/QMessageBox.qth b/harbour/contrib/hbqt/qtgui/qth/QMessageBox.qth index e2117926c9..11a55c92c7 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QMessageBox.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QMessageBox.qth @@ -53,7 +53,7 @@ Icon icon () const QPixmap iconPixmap () const QString informativeText () const void open ( QObject * receiver, const char * member ) -void removeButton ( QAbstractButton * button ) +void removeButton ( QAbstractButton * button ) [*A=1*] void setDefaultButton ( QPushButton * button ) void setDefaultButton ( StandardButton button ) void setDetailedText ( const QString & text ) diff --git a/harbour/contrib/hbqt/qtgui/qth/QScrollArea.qth b/harbour/contrib/hbqt/qtgui/qth/QScrollArea.qth index c99011e932..99cfa37832 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QScrollArea.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QScrollArea.qth @@ -35,9 +35,9 @@ Qt::Alignment alignment () const void ensureVisible ( int x, int y, int xmargin = 50, int ymargin = 50 ) void ensureWidgetVisible ( QWidget * childWidget, int xmargin = 50, int ymargin = 50 ) void setAlignment ( Qt::Alignment ) -void setWidget ( QWidget * widget ) +void setWidget ( QWidget * widget ) [*D=1*] void setWidgetResizable ( bool resizable ) -QWidget * takeWidget () +QWidget * takeWidget () [*A=1*] QWidget * widget () const bool widgetResizable () const diff --git a/harbour/contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth b/harbour/contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth index afa43736fb..e6790b0904 100644 --- a/harbour/contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth +++ b/harbour/contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth @@ -51,8 +51,8 @@ enum ItemType { Type, UserType } -void addChild ( QTreeWidgetItem * child ) [*D=1*] -void addChildren ( const QList & children ) +void addChild ( QTreeWidgetItem * child ) [*D=1*] +void addChildren ( const QList & children ) [*D=1*] QBrush background ( int column ) const Qt::CheckState checkState ( int column ) const QTreeWidgetItem * child ( int index ) const @@ -75,7 +75,7 @@ bool isHidden () const bool isSelected () const QTreeWidgetItem * parent () const virtual void read ( QDataStream & in ) -void removeChild ( QTreeWidgetItem * child ) +void removeChild ( QTreeWidgetItem * child ) [*A=1*] void setBackground ( int column, const QBrush & brush ) void setCheckState ( int column, Qt::CheckState state ) void setChildIndicatorPolicy ( QTreeWidgetItem::ChildIndicatorPolicy policy ) @@ -98,8 +98,8 @@ void setWhatsThis ( int column, const QString & whatsThis ) QSize sizeHint ( int column ) const void sortChildren ( int column, Qt::SortOrder order ) QString statusTip ( int column ) const -QTreeWidgetItem * takeChild ( int index ) [*A=1*] -QList takeChildren () +QTreeWidgetItem * takeChild ( int index ) [*A=1*] +QList takeChildren () [*A=1*] QString text ( int column ) const int textAlignment ( int column ) const QString toolTip ( int column ) const