From 626faad80c96b2f88e4d075dcf4c77d7b0b38b24 Mon Sep 17 00:00:00 2001 From: Mindaugas Kavaliauskas Date: Thu, 26 Nov 2009 00:26:16 +0000 Subject: [PATCH] 2009-11-26 02:25 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/contrib/hbwin/axcore.c * harbour/contrib/hbwin/olecore.c * added OLE error code as OS code. Changed subsystem from BASE to OLE ; NOTE: function hb_errRT_OLE() is static and defined in both modules. I'm not sure about the future parameters of the function, so, I do not want to make it public. * harbour/contrib/hbwin/legacycd.c * harbour/contrib/hbwin/legacyco.c * moved code inside #ifndef HB_WIN_LEGACY_LEVEL_OFF --- harbour/ChangeLog | 13 ++++++++++++ harbour/contrib/hbwin/axcore.c | 29 ++++++++++++++++++++------ harbour/contrib/hbwin/legacycd.c | 4 ++++ harbour/contrib/hbwin/legacyco.c | 4 ++++ harbour/contrib/hbwin/olecore.c | 35 ++++++++++++++++++++++++-------- 5 files changed, 70 insertions(+), 15 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 4846ae14b8..2ee1bca8c9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,19 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-11-26 02:25 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) + * harbour/contrib/hbwin/axcore.c + * harbour/contrib/hbwin/olecore.c + * added OLE error code as OS code. Changed subsystem from BASE to OLE + ; NOTE: function hb_errRT_OLE() is static and defined in both modules. + I'm not sure about the future parameters of the function, so, + I do not want to make it public. + + * harbour/contrib/hbwin/legacycd.c + * harbour/contrib/hbwin/legacyco.c + * moved code inside #ifndef HB_WIN_LEGACY_LEVEL_OFF + + 2009-11-25 19:10 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/contrib/rddads/ads1.c * changed field type mapping of HB_FT_* define, ADS_* define, diff --git a/harbour/contrib/hbwin/axcore.c b/harbour/contrib/hbwin/axcore.c index 5a29db4ab3..c770e34fd8 100644 --- a/harbour/contrib/hbwin/axcore.c +++ b/harbour/contrib/hbwin/axcore.c @@ -67,6 +67,23 @@ static HMODULE s_hLib = NULL; static PHB_AX_GETCTRL s_pAtlAxGetControl = NULL; +static void hb_errRT_OLE( HB_ERRCODE errGenCode, HB_ERRCODE errSubCode, HB_ERRCODE errOsCode, const char * szDescription, const char * szOperation ) +{ + PHB_ITEM pError; + pError = hb_errRT_New( ES_ERROR, "OLE", errGenCode, errSubCode, szDescription, szOperation, errOsCode, EF_NONE ); + + if( hb_pcount() != 0 ) + { + /* HB_ERR_ARGS_BASEPARAMS */ + PHB_ITEM pArray = hb_arrayBaseParams(); + hb_errPutArgsArray( pError, pArray ); + hb_itemRelease( pArray ); + } + hb_errLaunch( pError ); + hb_errRelease( pError ); +} + + static void hb_oleAxExit( void* cargo ) { HB_SYMBOL_UNUSED( cargo ); @@ -123,7 +140,7 @@ PHB_ITEM hb_oleAxControlNew( PHB_ITEM pItem, HWND hWnd ) if( ! hb_oleAxInit() || ! s_pAtlAxGetControl ) { hb_oleSetError( S_OK ); - hb_errRT_BASE_SubstR( EG_UNSUPPORTED, 3012, "ActiveX not initialized", HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_UNSUPPORTED, 3012, 0, "ActiveX not initialized", HB_ERR_FUNCNAME ); } else { @@ -140,7 +157,7 @@ PHB_ITEM hb_oleAxControlNew( PHB_ITEM pItem, HWND hWnd ) if( lOleError == S_OK ) pItem = hb_oleItemPut( pItem, pDisp ); else - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, NULL, HB_ERR_FUNCNAME ); } return pItem; @@ -152,7 +169,7 @@ HB_FUNC( __AXGETCONTROL ) /* ( hWnd ) --> pDisp */ HWND hWnd = ( HWND ) hb_parptr( 1 ); if( ! hWnd ) - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, 0, NULL, HB_ERR_FUNCNAME ); else hb_oleAxControlNew( hb_stackReturnItem(), hWnd ); } @@ -166,7 +183,7 @@ HB_FUNC( __AXDOVERB ) /* ( hWndAx, iVerb ) --> hResult */ if( ! hb_oleAxInit() || ! s_pAtlAxGetControl ) { hb_oleSetError( S_OK ); - hb_errRT_BASE_SubstR( EG_UNSUPPORTED, 3012, "ActiveX not initialized", HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_UNSUPPORTED, 3012, 0, "ActiveX not initialized", HB_ERR_FUNCNAME ); return; } @@ -452,9 +469,9 @@ HB_FUNC( __AXREGISTERHANDLER ) /* ( pDisp, bHandler [, cID] ) --> pSink */ hb_oleSetError( lOleError ); if( lOleError != S_OK ) - hb_errRT_BASE_SubstR( EG_ARG, 3012, "Failed to obtain connection point", HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, "Failed to obtain connection point", HB_ERR_FUNCNAME ); } else - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, 0, "Failed to obtain connection point", HB_ERR_FUNCNAME ); } } diff --git a/harbour/contrib/hbwin/legacycd.c b/harbour/contrib/hbwin/legacycd.c index 25fd91187d..139450644d 100644 --- a/harbour/contrib/hbwin/legacycd.c +++ b/harbour/contrib/hbwin/legacycd.c @@ -61,6 +61,8 @@ #include "hbapi.h" +#ifndef HB_WIN_LEGACY_LEVEL_OFF + /* Please use WAPI_GETLASTERROR(). */ HB_FUNC( GETLASTERROR ) { @@ -73,3 +75,5 @@ HB_FUNC( SETLASTERROR ) hb_retnl( GetLastError() ); SetLastError( hb_parnl( 1 ) ); } + +#endif \ No newline at end of file diff --git a/harbour/contrib/hbwin/legacyco.c b/harbour/contrib/hbwin/legacyco.c index a74880f2fe..1dfc15fb70 100644 --- a/harbour/contrib/hbwin/legacyco.c +++ b/harbour/contrib/hbwin/legacyco.c @@ -62,6 +62,8 @@ #include "hbapi.h" #include "hbwinole.h" +#ifndef HB_WIN_LEGACY_LEVEL_OFF + HB_FUNC_EXTERN( WIN_OLEERROR ); HB_FUNC( OLEERROR ) @@ -120,3 +122,5 @@ HB_FUNC( __OLEPDISP ) hb_oleItemPut( hb_param( -1, HB_IT_ANY ), ( IDispatch * ) ( HB_PTRUINT ) hb_parnint( 1 ) ); } + +#endif \ No newline at end of file diff --git a/harbour/contrib/hbwin/olecore.c b/harbour/contrib/hbwin/olecore.c index cd7d05ab99..dc6aeca135 100644 --- a/harbour/contrib/hbwin/olecore.c +++ b/harbour/contrib/hbwin/olecore.c @@ -175,6 +175,23 @@ static const HB_GC_FUNCS s_gcOleenumFuncs = }; +static void hb_errRT_OLE( HB_ERRCODE errGenCode, HB_ERRCODE errSubCode, HB_ERRCODE errOsCode, const char * szDescription, const char * szOperation ) +{ + PHB_ITEM pError; + pError = hb_errRT_New( ES_ERROR, "OLE", errGenCode, errSubCode, szDescription, szOperation, errOsCode, EF_NONE ); + + if( hb_pcount() != 0 ) + { + /* HB_ERR_ARGS_BASEPARAMS */ + PHB_ITEM pArray = hb_arrayBaseParams(); + hb_errPutArgsArray( pError, pArray ); + hb_itemRelease( pArray ); + } + hb_errLaunch( pError ); + hb_errRelease( pError ); +} + + IDispatch* hb_oleParam( int iParam ) { HB_OLE * pOle = ( HB_OLE * ) hb_parptrGC( &s_gcOleFuncs, iParam ); @@ -182,7 +199,7 @@ IDispatch* hb_oleParam( int iParam ) if( pOle && pOle->pDisp ) return pOle->pDisp; - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, 0, NULL, HB_ERR_FUNCNAME ); return NULL; } @@ -241,7 +258,7 @@ static IEnumVARIANT* hb_oleenumParam( int iParam ) if( ppEnum && *ppEnum ) return *ppEnum; - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, 0, NULL, HB_ERR_FUNCNAME ); return NULL; } @@ -1064,7 +1081,7 @@ HB_FUNC( __OLEENUMCREATE ) /* ( __hObj ) */ if( hb_parl( 2 ) ) { hb_oleSetError( S_OK ); - hb_errRT_BASE_SubstR( EG_UNSUPPORTED, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_UNSUPPORTED, 3012, 0, NULL, HB_ERR_FUNCNAME ); return; } @@ -1090,7 +1107,7 @@ HB_FUNC( __OLEENUMCREATE ) /* ( __hObj ) */ else { hb_oleSetError( lOleError ); - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, NULL, HB_ERR_FUNCNAME ); return; } @@ -1109,7 +1126,7 @@ HB_FUNC( __OLEENUMCREATE ) /* ( __hObj ) */ } } hb_oleSetError( lOleError ); - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, NULL, HB_ERR_FUNCNAME ); } @@ -1232,7 +1249,7 @@ HB_FUNC( WIN_OLEAUTO___ONERROR ) hb_oleSetError( lOleError ); if( lOleError != S_OK ) - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, NULL, HB_ERR_FUNCNAME ); return; } } @@ -1263,7 +1280,7 @@ HB_FUNC( WIN_OLEAUTO___ONERROR ) hb_oleSetError( lOleError ); if( lOleError != S_OK ) - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_ARG, 3012, ( HB_ERRCODE ) lOleError, NULL, HB_ERR_FUNCNAME ); return; } @@ -1271,9 +1288,9 @@ HB_FUNC( WIN_OLEAUTO___ONERROR ) /* TODO: add description containing TypeName of the object */ if( szMethod[ 0 ] == '_' ) - hb_errRT_BASE_SubstR( EG_NOVARMETHOD, 1005, NULL, szMethod + 1, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_NOVARMETHOD, 1005, ( HB_ERRCODE ) lOleError, NULL, szMethod + 1 ); else - hb_errRT_BASE_SubstR( EG_NOMETHOD, 1004, NULL, szMethod, HB_ERR_ARGS_BASEPARAMS ); + hb_errRT_OLE( EG_NOMETHOD, 1004, ( HB_ERRCODE ) lOleError, NULL, szMethod ); }