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:
Przemyslaw Czerpak
2007-03-14 13:47:39 +00:00
parent aae5c40c3a
commit a193cd605d
7 changed files with 2223 additions and 1 deletions

View File

@@ -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

View File

@@ -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 \

View File

@@ -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, ... );

View File

@@ -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_ */

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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;
}