2009-05-26 09:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* contrib/gtwvg/wvgax.prg
  * contrib/gtwvg/wvgwin.c
  * contrib/gtwvg/wvgsink.c
    ! Fixed HB_OLEAUTO() -> WIN_OLEAUTO()
    * Formatting.
    ! Fixed a few ISNIL()s.
    ! Fixed a few hb_parc() to hb_parcx() (many potential GPFs).
    % Removed unnecessary ISBYREF() and hb_ret() calls.
    ! Prefixed some static vars with 's_'.
    ! Fixed potential buffer overrun and memory corruption in
      Invoke() function.

  * contrib/rddads/adsfunc.c
    + Changed to always define all Harbour level functions.
      For unsupported ADS versions, these function will be stubs
      returning dummy values.
    ; TODO: Do the same in other contribs, like hbsqlit3. Anyone?

  * contrib/rddads/ads1.c
    ! Fixed typos and missing casts preventing to compile with 
      pre-6.00 ACE versions.
 
  * contrib/rddads/Makefile
  + contrib/rddads/adsextrn.ch
    + Added EXTERNAL header.
This commit is contained in:
Viktor Szakats
2009-05-26 07:31:33 +00:00
parent dce7e331a8
commit 96bc068853
8 changed files with 672 additions and 448 deletions

View File

@@ -17,11 +17,38 @@
past entries belonging to these authors: Viktor Szakats.
*/
2009-05-26 09:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/gtwvg/wvgax.prg
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgsink.c
! Fixed HB_OLEAUTO() -> WIN_OLEAUTO()
* Formatting.
! Fixed a few ISNIL()s.
! Fixed a few hb_parc() to hb_parcx() (many potential GPFs).
% Removed unnecessary ISBYREF() and hb_ret() calls.
! Prefixed some static vars with 's_'.
! Fixed potential buffer overrun and memory corruption in
Invoke() function.
* contrib/rddads/adsfunc.c
+ Changed to always define all Harbour level functions.
For unsupported ADS versions, these function will be stubs
returning dummy values.
; TODO: Do the same in other contribs, like hbsqlit3. Anyone?
* contrib/rddads/ads1.c
! Fixed typos and missing casts preventing to compile with
pre-6.00 ACE versions.
* contrib/rddads/Makefile
+ contrib/rddads/adsextrn.ch
+ Added EXTERNAL header.
2009-05-25 18:16 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/gtwvg/wvgsink.c
! HBNIL() -> HB_ISNUM() | HB_ISCHAR().
+ Few more convinience functions.
2009-05-26 02:54 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/xhb/Makefile
+ contrib/xhb/datesxhb.c

View File

@@ -66,24 +66,24 @@
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include 'hbclass.ch'
#include 'common.ch'
#include 'inkey.ch'
#include 'hbgtinfo.ch'
#include "hbclass.ch"
#include "common.ch"
#include "inkey.ch"
#include "hbgtinfo.ch"
#include 'hbgtwvg.ch'
#include 'wvtwin.ch'
#include 'wvgparts.ch'
#include "hbgtwvg.ch"
#include "wvtwin.ch"
#include "wvgparts.ch"
/*----------------------------------------------------------------------*/
STATIC nRef := 0
STATIC s_nRef := 0
/*----------------------------------------------------------------------*/
CLASS WvgActiveXControl FROM HB_OleAuto, WvgWindow
CLASS WvgActiveXControl FROM win_OleAuto, WvgWindow
DATA CLSID INIT ''
DATA CLSID INIT ""
DATA server INIT NIL
DATA license INIT NIL
DATA controlFlags INIT 0
@@ -139,7 +139,7 @@ METHOD New( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgActiv
::style := WS_CHILD + WS_VISIBLE + WS_CLIPCHILDREN + WS_CLIPSIBLINGS
::objType := objTypeActiveX
::className := 'WVGACTIVEX'
::className := "WVGACTIVEX"
RETURN Self
/*----------------------------------------------------------------------*/
@@ -162,7 +162,7 @@ METHOD Create( oParent, oOwner, aPos, aSize, aPresParams, lVisible, cCLSID, cLic
IF ValType( ::hContainer ) + ValType( ::CLSID ) != "NC"
RETURN( NIL )
ELSEIF HB_AX_AtlAxWinInit()
nRef++
s_nRef++
ENDIF
::nID := ::oParent:GetControlId()
@@ -230,7 +230,7 @@ METHOD Destroy() CLASS WvgActiveXControl
::hSink := NIL
ENDIF
IF --nRef == 0
IF --s_nRef == 0
/* HB_AX_AtlAxWinTerm() */
ENDIF
ENDIF
@@ -301,9 +301,9 @@ CLASS AutomationObject
DATA interface AS NUMERIC READONLY
DATA interfaceName AS CHARACTER READONLY
DATA CLSID AS CHARACTER READONLY INIT ' '
DATA server AS CHARACTER READONLY INIT ' '
DATA license AS CHARACTER READONLY INIT ' '
DATA CLSID AS CHARACTER READONLY INIT " "
DATA server AS CHARACTER READONLY INIT " "
DATA license AS CHARACTER READONLY INIT " "
DATA cargo
METHOD create( cProgID, cServerName, cLicense )
@@ -389,4 +389,3 @@ METHOD onError( oError ) CLASS AutomationObject
RETURN xValue
#endif
/*----------------------------------------------------------------------*/

View File

@@ -77,7 +77,7 @@
/*----------------------------------------------------------------------*/
static HMODULE hLib = NULL;
static HMODULE s_hLib = NULL;
typedef BOOL ( CALLBACK *PATLAXWININIT )( void );
typedef BOOL ( CALLBACK *PATLAXWINTERM )( void );
@@ -209,7 +209,8 @@ typedef struct
} IEventHandlerVtbl;
#endif
typedef struct {
typedef struct
{
IEventHandlerVtbl* lpVtbl;
int count;
IConnectionPoint* pIConnectionPoint; /* Ref counted of course. */
@@ -260,12 +261,12 @@ hb_ToOutDebug( "..................if ( IsEqualIID( vTableGuid, HB_ID_REF( ( ( My
return S_OK;
}
*ppv = 0;
return( E_NOINTERFACE );
return E_NOINTERFACE;
}
static ULONG STDMETHODCALLTYPE AddRef( IEventHandler *self )
{
return( ++( ( MyRealIEventHandler * ) self )->count );
return ++( ( MyRealIEventHandler * ) self )->count;
}
@@ -279,12 +280,12 @@ static ULONG STDMETHODCALLTYPE Release( IEventHandler *self )
}
if( ( MyRealIEventHandler * ) self )
{
GlobalFree( ( MyRealIEventHandler * ) self );
}
return( ( ULONG ) 0 );
return ( ULONG ) 0;
}
return( ( ULONG ) ( ( MyRealIEventHandler * ) self )->count );
else
return ( ULONG ) ( ( MyRealIEventHandler * ) self )->count;
}
static HRESULT STDMETHODCALLTYPE GetTypeInfoCount( IEventHandler *self, UINT *pCount )
@@ -381,12 +382,16 @@ hb_ToOutDebug( "event = %i",(int)dispid );
}
iArg = params->cArgs;
if( iArg > HB_SIZEOFARRAY( pItemArray ) )
iArg = HB_SIZEOFARRAY( pItemArray );
for( i = 1; i <= iArg; i++ )
{
pItem = hb_itemNew( NULL );
hb_oleVariantToItem( pItem, &( params->rgvarg[ iArg-i ] ) );
pItemArray[ i-1 ] = pItem;
ulRefMask |= ( 1L << (i-1) ); /* set bit i */
hb_oleVariantToItem( pItem, &( params->rgvarg[ iArg - i ] ) );
pItemArray[ i - 1 ] = pItem;
ulRefMask |= ( 1L << ( i - 1 ) ); /* set bit i */
}
if( iArg )
@@ -400,15 +405,15 @@ hb_ToOutDebug( "event = %i",(int)dispid );
for( i = iArg; i > 0; i-- )
{
if( HB_IS_BYREF( pItemArray[ iArg-i ] ) )
hb_oleItemToVariant( &( params->rgvarg[ iArg-i ] ), pItemArray[ iArg-i ] );
if( HB_IS_BYREF( pItemArray[ iArg - i ] ) )
hb_oleItemToVariant( &( params->rgvarg[ iArg - i ] ), pItemArray[ iArg - i ] );
}
/* Pritpal */
if( iArg )
{
for( i = iArg; i > 0; i-- )
hb_itemRelease( pItemArray[ i-1 ] );
hb_itemRelease( pItemArray[ i - 1 ] );
}
hb_vmPopState();
}
@@ -420,7 +425,8 @@ hb_ToOutDebug( "event = %i",(int)dispid );
/*----------------------------------------------------------------------*/
static const IEventHandlerVtbl IEventHandler_Vtbl = {
static const IEventHandlerVtbl IEventHandler_Vtbl =
{
QueryInterface,
AddRef,
Release,
@@ -449,13 +455,9 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID
HB_SYMBOL_UNUSED( pn );
thisobj = ( IEventHandler * ) GlobalAlloc( GMEM_FIXED, sizeof( MyRealIEventHandler ) );
if( !( thisobj ) )
if( thisobj )
{
hr = E_OUTOFMEMORY;
}
else
{
( ( MyRealIEventHandler* ) thisobj)->lpVtbl = ( IEventHandlerVtbl * ) &IEventHandler_Vtbl;
( ( MyRealIEventHandler * ) thisobj )->lpVtbl = ( IEventHandlerVtbl * ) &IEventHandler_Vtbl;
( ( MyRealIEventHandler * ) thisobj )->pSelf = NULL;
( ( MyRealIEventHandler * ) thisobj )->count = 0;
( ( MyRealIEventHandler * ) thisobj )->iID_riid = 0;
@@ -508,6 +510,8 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID
pIUnknown = NULL;
}
}
else
hr = E_OUTOFMEMORY;
*pThis = ( void * ) thisobj;
@@ -527,9 +531,7 @@ HB_FUNC( HB_AX_SHUTDOWNCONNECTIONPOINT )
}
if( hSink && hSink->pEvents )
{
hb_itemRelease( hSink->pEvents );
}
}
/*----------------------------------------------------------------------*/
@@ -557,7 +559,7 @@ HB_FUNC( HB_AX_ATLAXWININIT )
{
BOOL bRet = FALSE;
if( !hLib )
if( !s_hLib )
{
PATLAXWININIT AtlAxWinInit;
@@ -594,11 +596,11 @@ HB_FUNC( HB_AX_ATLAXWININIT )
* developers of few well known MS-Win GUI projects for [x]Harbour.
* Please remember about it.
*/
hLib = LoadLibrary( szLibName );
s_hLib = LoadLibrary( szLibName );
if( hLib )
if( s_hLib )
{
AtlAxWinInit = ( PATLAXWININIT ) GetProcAddress( hLib, HBTEXT( "AtlAxWinInit" ) );
AtlAxWinInit = ( PATLAXWININIT ) GetProcAddress( s_hLib, HBTEXT( "AtlAxWinInit" ) );
if( AtlAxWinInit )
{
@@ -608,8 +610,8 @@ HB_FUNC( HB_AX_ATLAXWININIT )
if( !bRet )
{
FreeLibrary( hLib );
hLib = NULL;
FreeLibrary( s_hLib );
s_hLib = NULL;
}
}
}
@@ -625,16 +627,16 @@ HB_FUNC( HB_AX_ATLAXWINTERM )
PATLAXWINTERM AtlAxWinTerm;
BOOL bRet = FALSE;
if( hLib )
if( s_hLib )
{
AtlAxWinTerm = ( PATLAXWINTERM ) GetProcAddress( hLib, HBTEXT( "AtlAxWinTerm" ) );
AtlAxWinTerm = ( PATLAXWINTERM ) GetProcAddress( s_hLib, HBTEXT( "AtlAxWinTerm" ) );
if( AtlAxWinTerm )
{
if( AtlAxWinTerm() )
{
FreeLibrary( hLib );
hLib = NULL;
FreeLibrary( s_hLib );
s_hLib = NULL;
bRet = TRUE;
}
}
@@ -655,7 +657,7 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind
HWND hWnd = NULL;
char *lpcclass = hb_parcx( 1 );
HWND hParent = ( HWND ) ( HB_PTRDIFF ) hb_parnint( 2 );
char *Caption = HB_ISCHAR( 3 ) ? hb_parc( 3 ) : "" ;
char *Caption = hb_parcx( 3 );
HMENU id = HB_ISNUM( 4 ) ? ( HMENU ) ( HB_PTRDIFF ) hb_parnint( 4 ) : ( HMENU ) ( HB_PTRDIFF ) -1 ;
int x = HB_ISNUM( 5 ) ? hb_parni( 5 ) : 0;
int y = HB_ISNUM( 6 ) ? hb_parni( 6 ) : 0;
@@ -664,7 +666,7 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind
int Style = HB_ISNUM( 9 ) ? hb_parni( 9 ) : WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
int Exstyle = HB_ISNUM( 10 ) ? hb_parni( 10 ) : 0;
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) );
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) );
if( AtlAxGetControl )
{
LPTSTR cCaption = HB_TCHAR_CONVTO( Caption );
@@ -686,26 +688,12 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind
hb_itemReturnRelease( hb_oleItemPut( NULL, obj ) );
}
else
{
hb_ret();
}
}
else
{
hb_ret();
}
}
else
{
hb_ret();
}
/* return the control handle */
if ISBYREF( 12 )
hb_stornint( ( HB_PTRDIFF ) hWnd, 12 );
if ISBYREF( 13 )
hb_stornint( ( HB_PTRDIFF ) pUnk, 13 );
hb_stornint( ( HB_PTRDIFF ) hWnd, 12 );
hb_stornint( ( HB_PTRDIFF ) pUnk, 13 );
}
/*----------------------------------------------------------------------*/
@@ -715,7 +703,7 @@ HB_FUNC( HB_AX_ATLCREATEWINDOW ) /* HWND hWnd = handle of control container wind
HWND hWnd;
char *lpcclass = hb_parcx( 1 );
HWND hParent = ( HWND ) ( HB_PTRDIFF ) hb_parnint( 2 );
char *Caption = HB_ISCHAR( 3 ) ? hb_parc( 3 ) : "" ;
char *Caption = hb_parcx( 3 );
HMENU id = HB_ISNUM( 4 ) ? ( HMENU ) ( HB_PTRDIFF ) hb_parnint( 4 ) : ( HMENU ) ( HB_PTRDIFF ) -1 ;
int x = HB_ISNUM( 5 ) ? hb_parni( 5 ) : 0;
int y = HB_ISNUM( 6 ) ? hb_parni( 6 ) : 0;
@@ -744,7 +732,7 @@ HB_FUNC( HB_AX_ATLGETCONTROL ) /* HWND hWnd = handle of control container window
IUnknown *pUnk = NULL;
HWND hWnd = ( ISPOINTER( 1 ) ? ( HWND ) hb_parptr( 1 ) : ( HWND )( HB_PTRDIFF ) hb_parnint( 1 ) );
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) );
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) );
if( AtlAxGetControl )
{
if( hWnd )
@@ -757,24 +745,9 @@ HB_FUNC( HB_AX_ATLGETCONTROL ) /* HWND hWnd = handle of control container window
HB_VTBL( pUnk )->Release( HB_THIS( pUnk ) );
hb_itemReturnRelease( hb_oleItemPut( NULL, obj ) );
if( ISBYREF( 2 ) )
{
hb_stornint( ( HB_PTRDIFF ) pUnk, 2 );
}
}
else
{
hb_ret();
hb_stornint( ( HB_PTRDIFF ) pUnk, 2 );
}
}
else
{
hb_ret();
}
}
else
{
hb_ret();
}
}
@@ -786,7 +759,7 @@ HB_FUNC( HB_AX_ATLGETUNKNOWN ) /* HWND hWnd = handle of control container window
IUnknown *pUnk = NULL;
HWND hWnd = ( ISPOINTER( 1 ) ? ( HWND ) hb_parptr( 1 ) : ( HWND )( HB_PTRDIFF ) hb_parnint( 1 ) );
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) );
AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) );
if( AtlAxGetControl )
{
if( hWnd )

File diff suppressed because it is too large Load Diff

View File

@@ -26,6 +26,7 @@ C_SOURCES=\
PRG_HEADERS=\
ads.ch \
adsextrn.ch \
include $(TOP)$(ROOT)config/header.cf
INSTALL_RULE_HEADERS := $(INSTALL_RULE)

View File

@@ -576,7 +576,7 @@ static HB_ERRCODE adsScopeSet( ADSAREAP pArea, ADSHANDLE hOrder, USHORT nScope,
UNSIGNED16 ucLen = ( UNSIGNED16 ) hb_itemGetCLen( pItem );
UNSIGNED8 *pucScope = ( UNSIGNED8 * ) hb_itemGetCPtr( pItem );
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
UNSIGNED8 pszKeyFree = NULL;
UNSIGNED8 * pszKeyFree = NULL;
#endif
#ifdef ADS_USE_OEM_TRANSLATION
if( hb_ads_bOEM )
@@ -584,14 +584,14 @@ static HB_ERRCODE adsScopeSet( ADSAREAP pArea, ADSHANDLE hOrder, USHORT nScope,
#if ADS_LIB_VERSION >= 600
u16DataType = ADS_RAWKEY;
#else
pucScope = pszKeyFree = ( UNSIGNED8 * ) hb_adsOemToAnsi( ( char * ) pucScope, uiLen );
pucScope = pszKeyFree = ( UNSIGNED8 * ) hb_adsOemToAnsi( ( char * ) pucScope, ucLen );
#endif
}
#endif
AdsSetScope( hOrder, nScope, pucScope, ucLen, u16DataType );
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
if( pszKeyFree )
hb_adsOemAnsiFree( pszKeyFree );
hb_adsOemAnsiFree( ( char * ) pszKeyFree );
#endif
}
break;
@@ -944,12 +944,12 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
UNSIGNED32 u32RecNo = 0, u32NewRec;
UNSIGNED16 u16SeekType = ( bSoftSeek ) ? ADS_SOFTSEEK : ADS_HARDSEEK,
u16KeyType, u16Found, u16KeyLen;
UNSIGNED8 *pszKey, pKeyBuf[ 8 ];
UNSIGNED8 * pszKey, pKeyBuf[ 8 ];
double dValue;
UNSIGNED8 *pucSavedKey = NULL;
UNSIGNED8 * pucSavedKey = NULL;
UNSIGNED16 u16SavedKeyLen = ADS_MAX_KEY_LENGTH; /* this may be longer than the actual seek expression, so we don't pass it along */
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
UNSIGNED8 pszKeyFree = NULL;
UNSIGNED8 * pszKeyFree = NULL;
#endif
HB_TRACE(HB_TR_DEBUG, ("adsSeek(%p, %d, %p, %d)", pArea, bSoftSeek, pKey, bFindLast));
@@ -999,7 +999,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
else
{
dValue = hb_itemGetTD( pKey );
pszKey = ( UNSIGNED8* ) &dValue;
pszKey = ( UNSIGNED8 * ) &dValue;
u16KeyLen = ( UNSIGNED16 ) sizeof( double );
u16KeyType = ADS_DOUBLEKEY;
}
@@ -1007,13 +1007,13 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
else if( HB_IS_NUMERIC( pKey ) )
{
dValue = hb_itemGetND( pKey );
pszKey = ( UNSIGNED8* ) &dValue;
pszKey = ( UNSIGNED8 * ) &dValue;
u16KeyLen = ( UNSIGNED16 ) sizeof( double );
u16KeyType = ADS_DOUBLEKEY;
}
else if( HB_IS_LOGICAL( pKey ) )
{
pszKey = ( UNSIGNED8* ) ( hb_itemGetL( pKey ) ? "1" : "0" );
pszKey = ( UNSIGNED8 * ) ( hb_itemGetL( pKey ) ? "1" : "0" );
u16KeyLen = 1;
u16KeyType = ADS_STRINGKEY;
}
@@ -1022,7 +1022,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0, NULL );
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
if( pszKeyFree )
hb_adsOemAnsiFree( pszKeyFree );
hb_adsOemAnsiFree( ( char * ) pszKeyFree );
#endif
return HB_FAILURE;
}
@@ -1072,7 +1072,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
pArea->fBof = FALSE;
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
if( pszKeyFree )
hb_adsOemAnsiFree( pszKeyFree );
hb_adsOemAnsiFree( ( char * ) pszKeyFree );
#endif
return errCode;
}
@@ -1148,7 +1148,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
hb_xfree( pucSavedKey );
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
if( pszKeyFree )
hb_adsOemAnsiFree( pszKeyFree );
hb_adsOemAnsiFree( ( char * ) pszKeyFree );
#endif
return HB_FAILURE;
}
@@ -1187,7 +1187,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b
hb_xfree( pucSavedKey );
#if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600
if( pszKeyFree )
hb_adsOemAnsiFree( pszKeyFree );
hb_adsOemAnsiFree( ( char * ) pszKeyFree );
#endif
return HB_SUCCESS;

View File

@@ -0,0 +1,188 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* ADS functions
*
* Copyright 2009 Viktor Szakats <harbour.01 syenar.hu>
* www - http://www.harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#ifndef _ADSEXTERN_CH_
#define _ADSEXTERN_CH_
EXTERNAL ADSGETRELKEYPOS
EXTERNAL ADSSETRELKEYPOS
EXTERNAL ADSCUSTOMIZEAOF
EXTERNAL ADSTESTRECLOCKS
EXTERNAL ADSSETFILETYPE
EXTERNAL ADSSETSERVERTYPE
EXTERNAL ADSSETDATEFORMAT
EXTERNAL ADSSETEPOCH
EXTERNAL ADSAPPLICATIONEXIT
EXTERNAL ADSISSERVERLOADED
EXTERNAL ADSGETCONNECTIONTYPE
EXTERNAL ADSUNLOCKRECORD
EXTERNAL ADSGETTABLECONTYPE
EXTERNAL ADSGETSERVERTIME
EXTERNAL ADSISTABLELOCKED
EXTERNAL ADSISRECORDLOCKED
EXTERNAL ADSLOCKING
EXTERNAL ADSRIGHTSCHECK
EXTERNAL ADSSETCHARTYPE
EXTERNAL ADSGETTABLECHARTYPE
EXTERNAL ADSSETDEFAULT
EXTERNAL ADSSETSEARCHPATH
EXTERNAL ADSSETDELETED
EXTERNAL ADSSETEXACT
EXTERNAL ADSBLOB2FILE
EXTERNAL ADSFILE2BLOB
EXTERNAL ADSKEYNO
EXTERNAL ADSKEYCOUNT
EXTERNAL ADSADDCUSTOMKEY
EXTERNAL ADSDELETECUSTOMKEY
EXTERNAL ADSCLEARAOF
EXTERNAL ADSEVALAOF
EXTERNAL ADSGETTABLEALIAS
EXTERNAL ADSGETAOF
EXTERNAL ADSGETAOFOPTLEVEL
EXTERNAL ADSGETAOFNOOPT
EXTERNAL ADSISRECORDINAOF
EXTERNAL ADSISRECORDVALID
EXTERNAL ADSREFRESHAOF
EXTERNAL ADSSETAOF
EXTERNAL ADSGETFILTER
EXTERNAL ADSENABLEENCRYPTION
EXTERNAL ADSDISABLEENCRYPTION
EXTERNAL ADSENCRYPTTABLE
EXTERNAL ADSDECRYPTTABLE
EXTERNAL ADSENCRYPTRECORD
EXTERNAL ADSDECRYPTRECORD
EXTERNAL ADSISENCRYPTIONENABLED
EXTERNAL ADSISRECORDENCRYPTED
EXTERNAL ADSISTABLEENCRYPTED
EXTERNAL ADSCONNECT
EXTERNAL ADSDISCONNECT
EXTERNAL ADSSTMTSETTABLELOCKTYPE
EXTERNAL ADSCREATESQLSTATEMENT
EXTERNAL ADSEXECUTESQLDIRECT
EXTERNAL ADSPREPARESQL
EXTERNAL ADSEXECUTESQL
EXTERNAL ADSCLOSEALLTABLES
EXTERNAL ADSWRITEALLRECORDS
EXTERNAL ADSREFRESHRECORD
EXTERNAL ADSCOPYTABLE
EXTERNAL ADSCONVERTTABLE
EXTERNAL ADSREGCALLBACK
EXTERNAL ADSCLRCALLBACK
EXTERNAL ADSISINDEXED
EXTERNAL ADSISEXPRVALID
EXTERNAL ADSGETNUMINDEXES
EXTERNAL ADSCONNECTION
EXTERNAL ADSGETHANDLETYPE
EXTERNAL ADSGETLASTERROR
EXTERNAL ADSGETNUMOPENTABLES
EXTERNAL ADSSHOWERROR
EXTERNAL ADSBEGINTRANSACTION
EXTERNAL ADSCOMMITTRANSACTION
EXTERNAL ADSFAILEDTRANSACTIONRECOVERY
EXTERNAL ADSINTRANSACTION
EXTERNAL ADSROLLBACK
EXTERNAL ADSCACHERECORDS
EXTERNAL ADSREINDEX
EXTERNAL ADSVERSION
EXTERNAL ADSCACHEOPENTABLES
EXTERNAL ADSCACHEOPENCURSORS
EXTERNAL ADSISEMPTY
EXTERNAL ADSDDADDTABLE
EXTERNAL ADSDDREMOVETABLE
EXTERNAL ADSDDREMOVEINDEXFILE
EXTERNAL ADSDDADDUSERTOGROUP
EXTERNAL ADSDDREMOVEUSERFROMGROUP
EXTERNAL ADSCONNECT60
EXTERNAL ADSDDCREATE
EXTERNAL ADSDDCREATEUSER
EXTERNAL ADSDDDELETEUSER
EXTERNAL ADSDDGETDATABASEPROPERTY
EXTERNAL ADSDDSETDATABASEPROPERTY
EXTERNAL ADSDDGETUSERPROPERTY
EXTERNAL ADSTESTLOGIN
EXTERNAL ADSRESTRUCTURETABLE
EXTERNAL ADSCOPYTABLECONTENTS
EXTERNAL ADSDIRECTORY
EXTERNAL ADSCHECKEXISTENCE
EXTERNAL ADSDELETEFILE
EXTERNAL ADSSTMTSETTABLEPASSWORD
EXTERNAL ADSGETSERVERNAME
EXTERNAL ADSVERIFYSQL
EXTERNAL ADSGETNUMACTIVELINKS
EXTERNAL ADSCLOSECACHEDTABLES
EXTERNAL ADSCREATEFTSINDEX
EXTERNAL ADSCREATESAVEPOINT
EXTERNAL ADSROLLBACKSAVEPOINT
EXTERNAL ADSDDCREATELINK
EXTERNAL ADSDDMODIFYLINK
EXTERNAL ADSDDDROPLINK
EXTERNAL ADSMGCONNECT
EXTERNAL ADSMGDISCONNECT
EXTERNAL ADSMGGETHANDLE
EXTERNAL ADSMGSETHANDLE
EXTERNAL ADSMGKILLUSER
EXTERNAL ADSMGGETSERVERTYPE
EXTERNAL ADSMGGETINSTALLINFO
EXTERNAL ADSMGGETACTIVITYINFO
EXTERNAL ADSMGGETCOMMSTATS
EXTERNAL ADSMGRESETCOMMSTATS
EXTERNAL ADSMGGETCONFIGINFO
EXTERNAL ADSMGGETUSERNAMES
EXTERNAL ADSMGGETLOCKOWNER
EXTERNAL ADSMGGETOPENTABLES
EXTERNAL ADSMGGETOPENTABLES2
EXTERNAL ADSMGGETOPENINDEXES
EXTERNAL ADSMGGETLOCKS
EXTERNAL ADSMGGETWORKERTHREADACTIVITY
#endif

View File

@@ -1317,10 +1317,9 @@ HB_FUNC( ADSEXECUTESQL )
hb_retl( FALSE );
}
#if ADS_LIB_VERSION >= 620
HB_FUNC( ADSVERIFYSQL )
{
#if ADS_LIB_VERSION >= 620
ADSAREAP pArea = hb_adsGetWorkAreaPointer();
if( pArea && pArea->hStatement && ISCHAR( 1 ) )
@@ -1333,10 +1332,11 @@ HB_FUNC( ADSVERIFYSQL )
}
else
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME );
#else
hb_retl( FALSE );
#endif
}
#endif /* ADS_LIB_VERSION >= 620 */
HB_FUNC( ADSCLOSEALLTABLES )
{
hb_retnl( AdsCloseAllTables() );
@@ -1661,27 +1661,23 @@ HB_FUNC( ADSISEMPTY )
hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME );
}
/* Please add all-version functions above this block */
#if ADS_LIB_VERSION >= 620
HB_FUNC( ADSGETNUMACTIVELINKS ) /* Only valid for a DataDict */
{
UNSIGNED16 pusNumLinks = 0;
#if ADS_LIB_VERSION >= 620
ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 1 );
if( hConnect )
AdsGetNumActiveLinks( hConnect, &pusNumLinks );
#endif
hb_retni( pusNumLinks );
}
#endif
#if ADS_LIB_VERSION >= 600
/* Please add all-version functions above this block */
HB_FUNC( ADSDDADDTABLE )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDAddTable( HB_ADS_PARCONNECTION( 4 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pTableFileName */,
@@ -1689,39 +1685,59 @@ HB_FUNC( ADSDDADDTABLE )
( UNSIGNED16 ) hb_ads_iCharType,
( UNSIGNED8 * ) hb_parcx( 3 ) /* pTableIndexFileName */,
NULL ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDREMOVETABLE )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDRemoveTable( HB_ADS_PARCONNECTION( 4 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */,
( UNSIGNED16 ) ( ISNUM( 2 ) ? hb_parni( 2 ) : ( ISLOG( 2 ) ? hb_parl( 2 ) : 0 ) ) /* usDeleteFiles */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDREMOVEINDEXFILE )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDRemoveIndexFile( HB_ADS_PARCONNECTION( 4 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pIndexName */,
( UNSIGNED16 ) ( ISNUM( 3 ) ? hb_parni( 3 ) : ( ISLOG( 3 ) ? hb_parl( 3 ) : 0 ) ) /* usDeleteFiles */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDADDUSERTOGROUP )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDAddUserToGroup( HB_ADS_PARCONNECTION( 3 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pGroup */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pName */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDREMOVEUSERFROMGROUP )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDRemoveUserFromGroup( HB_ADS_PARCONNECTION( 3 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pGroup */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pName */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSCONNECT60 )
{
#if ADS_LIB_VERSION >= 600
ADSHANDLE hConnect = 0;
if( AdsConnect60( ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucServerPath */,
@@ -1739,10 +1755,14 @@ HB_FUNC( ADSCONNECT60 )
}
else
hb_retl( FALSE );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDCREATE )
{
#if ADS_LIB_VERSION >= 600
ADSHANDLE hConnect = 0;
if( AdsDDCreate( ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucDictionaryPath */,
@@ -1755,25 +1775,37 @@ HB_FUNC( ADSDDCREATE )
}
else
hb_retl( FALSE );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDCREATEUSER )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDCreateUser( HB_ADS_PARCONNECTION( 5 ) /* hConnect */,
( UNSIGNED8 * ) hb_parc( 1 ) /* pucGroupName */,
( UNSIGNED8 * ) hb_parc( 2 ) /* pucUserName */,
( UNSIGNED8 * ) hb_parc( 3 ) /* pucPassword */,
( UNSIGNED8 * ) hb_parc( 4 ) /* pucDescription */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDDELETEUSER )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDDDeleteUser( HB_ADS_PARCONNECTION( 2 ) /* hConnect */,
( UNSIGNED8 * ) hb_parc( 1 ) /* pucUserName */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDGETDATABASEPROPERTY )
{
#if ADS_LIB_VERSION >= 600
UNSIGNED16 ulProperty = ( UNSIGNED16 ) hb_parni( 1 );
ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 2 );
@@ -1965,9 +1997,11 @@ HB_FUNC( ADSDDGETUSERPROPERTY )
}
else
hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME );
#else
hb_retl( FALSE );
#endif
}
/*
Verify if a username/password combination is valid for this database
Call : ADSTESTLOGIN( cServerPath, nServerTypes, cUserName, cPassword, options,
@@ -1983,6 +2017,7 @@ HB_FUNC( ADSDDGETUSERPROPERTY )
*/
HB_FUNC( ADSTESTLOGIN )
{
#if ADS_LIB_VERSION >= 600
UNSIGNED8 * pucUserName = ( UNSIGNED8 * ) hb_parc( 3 );
ADSHANDLE adsTestHandle = 0;
@@ -2011,10 +2046,14 @@ HB_FUNC( ADSTESTLOGIN )
}
else
hb_retl( FALSE );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSRESTRUCTURETABLE )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsRestructureTable( HB_ADS_PARCONNECTION( 5 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */,
NULL /* pucAlias */,
@@ -2025,10 +2064,14 @@ HB_FUNC( ADSRESTRUCTURETABLE )
( UNSIGNED8 * ) hb_parcx( 2 ) /* pucAddFields */,
( UNSIGNED8 * ) hb_parcx( 3 ) /* pucDeleteFields */,
( UNSIGNED8 * ) hb_parcx( 4 ) /* pucChangeFields */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSCOPYTABLECONTENTS )
{
#if ADS_LIB_VERSION >= 600
ADSAREAP pArea = hb_adsGetWorkAreaPointer(); /* Source */
if( pArea )
@@ -2053,10 +2096,14 @@ HB_FUNC( ADSCOPYTABLECONTENTS )
}
else
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDIRECTORY )
{
#if ADS_LIB_VERSION >= 600
UNSIGNED32 ulRetVal;
UNSIGNED8 ucFileName[ ADS_MAX_TABLE_NAME ];
UNSIGNED16 usFileNameLen = ADS_MAX_TABLE_NAME;
@@ -2097,25 +2144,37 @@ HB_FUNC( ADSDIRECTORY )
}
hb_itemReturnRelease( pitmDir );
#else
hb_reta( 0 );
#endif
}
HB_FUNC( ADSCHECKEXISTENCE )
{
#if ADS_LIB_VERSION >= 600
UNSIGNED16 usExist = 0;
hb_retl( AdsCheckExistence( HB_ADS_PARCONNECTION( 2 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pucFilename */,
&usExist ) == AE_SUCCESS && usExist != 0 );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDELETEFILE )
{
#if ADS_LIB_VERSION >= 600
hb_retl( AdsDeleteFile( HB_ADS_PARCONNECTION( 2 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 1 ) /* pucFilename */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSSTMTSETTABLEPASSWORD )
{
#if ADS_LIB_VERSION >= 600
char * pucTableName = hb_parcx( 1 );
char * pucPassword = hb_parcx( 2 );
@@ -2133,27 +2192,28 @@ HB_FUNC( ADSSTMTSETTABLEPASSWORD )
}
else
hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME );
#else
hb_retnl( 0 );
#endif
}
HB_FUNC( ADSGETSERVERNAME )
{
#if ADS_LIB_VERSION >= 600
UNSIGNED8 buf[ 256 ];
UNSIGNED16 usLen = 256;
UNSIGNED16 usLen = sizeof( buf );
if( AdsGetServerName( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
buf,
&usLen ) == AE_SUCCESS )
hb_retclen( ( char * ) buf, usLen );
#endif
/* QUESTION: Design decision or mistake to return NIL on error? [vszakats] */
}
#endif /* ADS_LIB_VERSION >= 600 */
#if ADS_LIB_VERSION >= 700
HB_FUNC( ADSCLOSECACHEDTABLES )
{
#if ADS_LIB_VERSION >= 700
ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 1 );
if( hConnect )
@@ -2163,10 +2223,14 @@ HB_FUNC( ADSCLOSECACHEDTABLES )
}
else
hb_retl( FALSE );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSCREATEFTSINDEX )
{
#if ADS_LIB_VERSION >= 700
ADSAREAP pArea = hb_adsGetWorkAreaPointer();
if( pArea )
@@ -2190,55 +2254,68 @@ HB_FUNC( ADSCREATEFTSINDEX )
( UNSIGNED32 ) ISNUM( 17 ) ? hb_parnl( 17 ) : ADS_DEFAULT /* ulOptions */ ) );
else
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME );
#else
hb_retnl( 0 );
#endif
}
#endif /* ADS_LIB_VERSION >= 700 */
#if ADS_LIB_VERSION >= 800
HB_FUNC( ADSCREATESAVEPOINT )
{
#if ADS_LIB_VERSION >= 800
hb_retnl( AdsCreateSavepoint( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
( UNSIGNED8 * ) hb_parc( 2 ) /* pucSavepoint */,
ADS_DEFAULT /* ulOptions */ ) );
#else
hb_retnl( 0 );
#endif
}
HB_FUNC( ADSROLLBACKSAVEPOINT )
{
#if ADS_LIB_VERSION >= 800
hb_retnl( AdsRollbackTransaction80( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
( UNSIGNED8 * ) hb_parc( 2 ) /* pucSavepoint */,
ADS_DEFAULT /* ulOptions */ ) );
#else
hb_retnl( 0 );
#endif
}
#endif /* ADS_LIB_VERSION >= 800 */
#if ADS_LIB_VERSION >= 900
HB_FUNC( ADSDDCREATELINK )
{
#if ADS_LIB_VERSION >= 900
hb_retl( AdsDDCreateLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */,
( UNSIGNED8 * ) hb_parcx( 3 ) /* pucServerPath */,
( UNSIGNED8 * ) hb_parc( 4 ) /* pucUserName */,
( UNSIGNED8 * ) hb_parc( 5 ) /* pucPassword */,
( UNSIGNED32 ) ( ISNUM( 6 ) ? hb_parnl( 6 ) : ADS_DEFAULT ) /* ulOptions */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDMODIFYLINK )
{
#if ADS_LIB_VERSION >= 900
hb_retl( AdsDDModifyLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */,
( UNSIGNED8 * ) hb_parcx( 3 ) /* pucServerPath */,
( UNSIGNED8 * ) hb_parc( 4 ) /* pucUserName */,
( UNSIGNED8 * ) hb_parc( 5 ) /* pucPassword */,
( UNSIGNED32 ) ( ISNUM( 6 ) ? hb_parnl( 6 ) : ADS_DEFAULT ) /* ulOptions */ ) == AE_SUCCESS );
#else
hb_retl( FALSE );
#endif
}
HB_FUNC( ADSDDDROPLINK )
{
#if ADS_LIB_VERSION >= 900
hb_retl( AdsDDDropLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */,
( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */,
( UNSIGNED16 ) hb_parl( 3 ) /* usDropGlobal */ ) == AE_SUCCESS ); /* NOTE: Defaults to 0/FALSE for non logical parameters. */
#else
hb_retl( FALSE );
#endif
}
#endif /* ADS_LIB_VERSION >= 900 */