2007-03-14 14:45 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapiitm.h
* harbour/source/vm/eval.c
+ added C function hb_execFromArray()
* harbour/common.mak
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbinet.c
+ added xHarbour compatible INET*() functions - code borrowed
from xHarbour with some minor modifications and fixes
* harbour/include/hbextern.ch
+ added regex functions
+ added INET*() functions when compiled with HB_COMPAT_XHB
This commit is contained in:
@@ -8,6 +8,21 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2007-03-14 14:45 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hbapiitm.h
|
||||
* harbour/source/vm/eval.c
|
||||
+ added C function hb_execFromArray()
|
||||
|
||||
* harbour/common.mak
|
||||
* harbour/source/rtl/Makefile
|
||||
+ harbour/source/rtl/hbinet.c
|
||||
+ added xHarbour compatible INET*() functions - code borrowed
|
||||
from xHarbour with some minor modifications and fixes
|
||||
|
||||
* harbour/include/hbextern.ch
|
||||
+ added regex functions
|
||||
+ added INET*() functions when compiled with HB_COMPAT_XHB
|
||||
|
||||
2007-03-13 23:35 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/pp/pplib.c
|
||||
! fixed std rules initialization - now it should also use GC pointer
|
||||
|
||||
@@ -378,8 +378,9 @@ RTL_LIB_OBJS = \
|
||||
$(OBJ_DIR)\hardcr.obj \
|
||||
$(OBJ_DIR)\hbffind.obj \
|
||||
$(OBJ_DIR)\hbgtcore.obj \
|
||||
$(OBJ_DIR)\hbinet.obj \
|
||||
$(OBJ_DIR)\hbrandom.obj \
|
||||
$(OBJ_DIR)\hbregex.obj \
|
||||
$(OBJ_DIR)\hbregex.obj \
|
||||
$(OBJ_DIR)\idle.obj \
|
||||
$(OBJ_DIR)\inkey.obj \
|
||||
$(OBJ_DIR)\is.obj \
|
||||
|
||||
@@ -74,6 +74,8 @@ extern HB_EXPORT void hb_evalBlock( PHB_ITEM pCodeBlock, ... );
|
||||
extern HB_EXPORT void hb_evalBlock0( PHB_ITEM pCodeBlock );
|
||||
extern HB_EXPORT void hb_evalBlock1( PHB_ITEM pCodeBlock, PHB_ITEM pParam );
|
||||
|
||||
extern HB_EXPORT BOOL hb_execFromArray( PHB_ITEM pParam );
|
||||
|
||||
extern HB_EXPORT PHB_ITEM hb_itemDo ( PHB_ITEM pItem, ULONG ulPCount, ... );
|
||||
extern HB_EXPORT PHB_ITEM hb_itemDoC ( char * szFunc, ULONG ulPCount, ... );
|
||||
|
||||
|
||||
@@ -684,6 +684,15 @@ EXTERNAL HB_TRACELEVEL
|
||||
EXTERNAL HB_TRACESTATE
|
||||
EXTERNAL HB_VALTOSTR
|
||||
|
||||
EXTERNAL HB_REGEXCOMP
|
||||
EXTERNAL HB_ISREGEX
|
||||
EXTERNAL HB_ATX
|
||||
EXTERNAL HB_REGEX
|
||||
EXTERNAL HB_REGEXMATCH
|
||||
EXTERNAL HB_REGEXSPLIT
|
||||
EXTERNAL HB_REGEXATX
|
||||
EXTERNAL HB_REGEXALL
|
||||
|
||||
#endif /* HB_EXTENSION */
|
||||
|
||||
/* FlagShip extension */
|
||||
@@ -696,4 +705,53 @@ EXTERNAL SECONDSCPU
|
||||
|
||||
#endif /* HB_COMPAT_FLAGSHIP */
|
||||
|
||||
/* xHarbour extension */
|
||||
|
||||
#ifdef HB_COMPAT_XHB
|
||||
|
||||
#ifndef __PLATFORM__DOS
|
||||
EXTERNAL INETINIT
|
||||
EXTERNAL INETCLEANUP
|
||||
EXTERNAL INETCREATE
|
||||
EXTERNAL INETCLOSE
|
||||
EXTERNAL INETDESTROY
|
||||
EXTERNAL INETSTATUS
|
||||
EXTERNAL INETSTATUSDESC
|
||||
EXTERNAL INETERRORCODE
|
||||
EXTERNAL INETERRORDESC
|
||||
EXTERNAL INETCLEARERROR
|
||||
EXTERNAL INETCOUNT
|
||||
EXTERNAL INETADDRESS
|
||||
EXTERNAL INETPORT
|
||||
EXTERNAL INETSETTIMEOUT
|
||||
EXTERNAL INETGETTIMEOUT
|
||||
EXTERNAL INETCLEARTIMEOUT
|
||||
EXTERNAL INETSETTIMELIMIT
|
||||
EXTERNAL INETGETTIMELIMIT
|
||||
EXTERNAL INETCLEARTIMELIMIT
|
||||
EXTERNAL INETSETPERIODCALLBACK
|
||||
EXTERNAL INETGETPERIODCALLBACK
|
||||
EXTERNAL INETCLEARPERIODCALLBACK
|
||||
EXTERNAL INETRECV
|
||||
EXTERNAL INETRECVALL
|
||||
EXTERNAL INETRECVLINE
|
||||
EXTERNAL INETRECVENDBLOCK
|
||||
EXTERNAL INETDATAREADY
|
||||
EXTERNAL INETSEND
|
||||
EXTERNAL INETSENDALL
|
||||
EXTERNAL INETGETHOSTS
|
||||
EXTERNAL INETGETALIAS
|
||||
EXTERNAL INETSERVER
|
||||
EXTERNAL INETACCEPT
|
||||
EXTERNAL INETCONNECT
|
||||
EXTERNAL INETCONNECTIP
|
||||
EXTERNAL INETDGRAMBIND
|
||||
EXTERNAL INETDGRAM
|
||||
EXTERNAL INETDGRAMSEND
|
||||
EXTERNAL INETDGRAMRECV
|
||||
EXTERNAL INETCRLF
|
||||
#endif /* __PLATFORM__DOS */
|
||||
|
||||
#endif /* HB_COMPAT_XHB */
|
||||
|
||||
#endif /* HB_EXTERN_CH_ */
|
||||
|
||||
@@ -50,6 +50,7 @@ C_SOURCES=\
|
||||
hardcr.c \
|
||||
hbffind.c \
|
||||
hbgtcore.c \
|
||||
hbinet.c \
|
||||
hbrandom.c \
|
||||
hbregex.c \
|
||||
idle.c \
|
||||
|
||||
2074
harbour/source/rtl/hbinet.c
Normal file
2074
harbour/source/rtl/hbinet.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -495,3 +495,74 @@ HB_FUNC( HB_EXECFROMARRAY )
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL hb_execFromArray( PHB_ITEM pParam )
|
||||
{
|
||||
PHB_ITEM pFunc = NULL;
|
||||
PHB_ITEM pSelf = NULL;
|
||||
PHB_ITEM pArray = NULL;
|
||||
PHB_ITEM pItem;
|
||||
PHB_SYMB pExecSym = NULL;
|
||||
ULONG ulParamOffset = 0;
|
||||
|
||||
if( HB_IS_ARRAY( pParam ) && !HB_IS_OBJECT( pParam ) )
|
||||
{
|
||||
pArray = pParam;
|
||||
pItem = hb_arrayGetItemPtr( pArray, 1 );
|
||||
if( HB_IS_OBJECT( pItem ) )
|
||||
{
|
||||
pSelf = pItem;
|
||||
pFunc = hb_arrayGetItemPtr( pArray, 2 );
|
||||
ulParamOffset = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
pFunc = pItem;
|
||||
ulParamOffset = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
pFunc = pParam;
|
||||
|
||||
if( pFunc )
|
||||
{
|
||||
if( HB_IS_SYMBOL( pFunc ) )
|
||||
pExecSym = hb_itemGetSymbol( pFunc );
|
||||
else if( HB_IS_STRING( pFunc ) )
|
||||
pExecSym = hb_dynsymGet( hb_itemGetCPtr( pFunc ) )->pSymbol;
|
||||
else if( HB_IS_BLOCK( pFunc ) && !pSelf )
|
||||
{
|
||||
pSelf = pFunc;
|
||||
pExecSym = &hb_symEval;
|
||||
}
|
||||
}
|
||||
|
||||
if( pExecSym )
|
||||
{
|
||||
USHORT usPCount = 0;
|
||||
hb_vmPushSymbol( pExecSym );
|
||||
if( pSelf )
|
||||
hb_vmPush( pSelf );
|
||||
else
|
||||
hb_vmPushNil();
|
||||
if( pArray )
|
||||
{
|
||||
pItem = hb_arrayGetItemPtr( pArray, ++ulParamOffset );
|
||||
while( pItem && usPCount < 255 )
|
||||
{
|
||||
hb_vmPush( pItem );
|
||||
++usPCount;
|
||||
pItem = hb_arrayGetItemPtr( pArray, ++ulParamOffset );
|
||||
}
|
||||
}
|
||||
|
||||
if( pSelf )
|
||||
hb_vmSend( usPCount );
|
||||
else
|
||||
hb_vmDo( usPCount );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 1099, NULL, "HB_EXECFROMARRAY", HB_ERR_ARGS_BASEPARAMS );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user