2024-02-09 20:56 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* contrib/hbcurl/core.c
  * contrib/hbcurl/hbcurl.ch
    + added HB_CURLOPT_XFERINFODATA and HB_CURLOPT_XFERINFOFUNCTION
    ! use CURLOPT_XFERINFO* instead of depreciated CURLOPT_PROGRESS*
      to implement HB_CURLOPT_PROGRESSBLOCK
    ! do not use depreciated CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET,
      they serve no purpose anymore
    + added macros for new protocols
    + added HB_CURLOPT_PROTOCOLS_STR and HB_CURLOPT_REDIR_PROTOCOLS_STR
    ! use CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR instead
      of depreciated CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS
    * emulate CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS using
      CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR in new curl
      versions
    + added support for HB_CURLOPT_MIMEPOST
    ! use CURLOPT_MIMEPOST to emulate depreciated in new curl versions
      CURLOPT_HTTPPOST
    + added support for HB_CURLOPT_PROXY_SERVICE_NAME
    ! use CURLOPT_PROXY_SERVICE_NAME to emulate depreciated in new curl
      versions CURLOPT_SOCKS5_GSSAPI_SERVICE
    + added HB_CURLINFO_ACTIVESOCKET
    ! use CURLINFO_ACTIVESOCKET instead of depreciated CURLINFO_LASTSOCKET
    + added HB_CURLINFO_SIZE_UPLOAD_T, HB_CURLINFO_SIZE_DOWNLOAD_T,
      HB_CURLINFO_SPEED_DOWNLOAD_T, HB_CURLINFO_SPEED_UPLOAD_T,
      HB_CURLINFO_CONTENT_LENGTH_DOWNLOAD_T and
      HB_CURLINFO_CONTENT_LENGTH_UPLOAD_T
    ! use CURLINFO_*_T actions instead of depreciated ones which operate
      double as file offset and emulate old actions using new ones in
      new curl versions

  * contrib/hbssl/evp.c
    ! Do no use EVP_cleanup() in OpenSSL 1.1.0 and newer.
      It no longer has any effect.

  * contrib/hbssl/hbssl.h
    * set OPENSSL_API_COMPAT to 1.2.0 to pacify OpenSSL 3.0 API.
      It hides OpenSSL 3.0 warnings but we should update the code to use
      new suggested API.

  * contrib/hbwin/olecore.c
    ! invoke assign methods with DISPATCH_PROPERTYPUTREF instead of
      DISPATCH_PROPERTYPUT if assigned value is OLE object. If such
      functionality is not implemented by the object (some OLE
      implementations do not support it and returns DISP_E_MEMBERNOTFOUND)
      then call it again but in previous form with DISPATCH_PROPERTYPUT

  * include/hbapirdd.h
  * src/rdd/dbcmd.c
    ! fixed error codes set by DbSetRelations() to be Cl*pper compatible

  * src/rdd/dbcmd.c
    + accept symbol items in Select() and DbSelectArea() just like in
      ( <alias> ) -> <exp>

  * include/hbcompdf.h
  * include/hbexprb.c
  * src/common/funcid.c
    + added compile time optimization for Select() function without parameters
    + added compile time optimization DbSelectArea( <nNum> | <sSym> )
    + added support for hb_PIsByRef( @localVarName ) -> <lPassedByRef>
      When the parameter is passed by reference Harbour verifies if it's
      existing local variable and change it to its index in parameter list
      so effectively it works like hb_IsByRef( @localVarName ) in xHarbour

  * contrib/xhb/hbcompat.ch
    + added translations for
      hb_PIsByRef( @<localVar> ) <=> hb_IsByRef( @<localVar> )
This commit is contained in:
Przemysław Czerpak
2024-02-09 20:56:36 +01:00
parent c892443bb8
commit 7eec5d2672
12 changed files with 469 additions and 75 deletions

View File

@@ -64,12 +64,14 @@ HB_EXTERN_BEGIN
#define EDBCMD_SEEK_BADPARAMETER 1001
#define EDBCMD_NOALIAS 1002
#define EDBCMD_NOVAR 1003
#define EDBCMD_REL_BADPARAMETER 1004
#define EDBCMD_USE_BADPARAMETER 1005
#define EDBCMD_REL_BADPARAMETER 1006
#define EDBCMD_ORD_BADPARAMETER 1006
#define EDBCMD_ORDLSTADD_BADPARAMETER 1008
#define EDBCMD_FIELDNAME_BADPARAMETER 1009
#define EDBCMD_BADALIAS 1010
#define EDBCMD_DUPALIAS 1011
#define EDBCMD_REL_SAMEALIAS 1013
#define EDBCMD_DBCMDBADPARAMETER 1014
#define EDBCMD_BADPARAMETER 1015
#define EDBCMD_INFOBADPARAMETER 1032

View File

@@ -261,6 +261,7 @@ typedef enum
HB_F_CTOD,
HB_F_DATE,
HB_F_DAY,
HB_F_DBSELECTAREA,
HB_F_DELETED,
HB_F_DEVPOS,
HB_F_DOW,
@@ -329,6 +330,7 @@ typedef enum
HB_F_BITTEST,
HB_F_BITNOT,
HB_F_ARRAYTOPARAMS,
HB_F_PISBYREF,
HB_F_I18N_GETTEXT,
HB_F_I18N_GETTEXT_STRICT,
HB_F_I18N_GETTEXT_NOOP,

View File

@@ -2140,6 +2140,31 @@ static HB_EXPR_FUNC( hb_compExprUseFunCall )
HB_GEN_FUNC3( PCode3, HB_P_ARRAYDIM, HB_LOBYTE( usCount ), HB_HIBYTE( usCount ) );
break;
}
else if( pSelf->value.asFunCall.pFunName->value.asSymbol.funcid == HB_F_SELECT && usCount == 0 )
{
HB_GEN_FUNC1( PCode1, HB_P_PUSHALIAS );
break;
}
#ifndef HB_MACRO_SUPPORT
else if( pSelf->value.asFunCall.pFunName->value.asSymbol.funcid == HB_F_PISBYREF && usCount == 1 &&
pSelf->value.asFunCall.pParms->value.asList.pExprList->ExprType == HB_ET_VARREF )
{
PHB_HFUNC pFunc = HB_COMP_PARAM->functions.pLast;
int iVar, iScope;
hb_compVariableFind( HB_COMP_PARAM, pSelf->value.asFunCall.pParms->value.asList.pExprList->value.asSymbol.name,
&iVar, &iScope );
if( pFunc->wParamCount && ( pFunc->funFlags & HB_FUNF_USES_LOCAL_PARAMS ) != 0 &&
iScope == HB_VS_LOCAL_VAR && ( HB_USHORT ) iVar <= pFunc->wParamCount )
{
HB_COMP_EXPR_FREE( pSelf->value.asFunCall.pParms );
pSelf->value.asFunCall.pParms = hb_compExprNewLong( iVar, HB_COMP_PARAM );
}
else
hb_compErrorRefer( HB_COMP_PARAM, NULL, pSelf->value.asFunCall.pParms->value.asList.pExprList->value.asSymbol.name );
}
#endif
}
HB_GEN_FUNC2( PushFunCall, pSelf->value.asFunCall.pFunName->value.asSymbol.name,
pSelf->value.asFunCall.pFunName->value.asSymbol.flags );
@@ -2174,8 +2199,22 @@ static HB_EXPR_FUNC( hb_compExprUseFunCall )
HB_BOOL fArgsList = HB_FALSE;
HB_USHORT usCount = 0;
if( pSelf->value.asFunCall.pParms )
{
usCount = ( HB_USHORT ) hb_compExprParamListCheck( HB_COMP_PARAM, pSelf->value.asFunCall.pParms );
fArgsList = pSelf->value.asFunCall.pParms->ExprType == HB_ET_MACROARGLIST;
}
if( pSelf->value.asFunCall.pFunName->ExprType == HB_ET_FUNNAME )
{
if( pSelf->value.asFunCall.pFunName->value.asSymbol.funcid == HB_F_DBSELECTAREA && usCount == 1 &&
( pSelf->value.asFunCall.pParms->value.asList.pExprList->ExprType == HB_ET_FUNREF ||
hb_compExprIsInteger( pSelf->value.asFunCall.pParms->value.asList.pExprList ) ) )
{
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
HB_GEN_FUNC1( PCode1, HB_P_POPALIAS );
break;
}
HB_GEN_FUNC2( PushFunCall, pSelf->value.asFunCall.pFunName->value.asSymbol.name,
pSelf->value.asFunCall.pFunName->value.asSymbol.flags );
}
@@ -2185,13 +2224,8 @@ static HB_EXPR_FUNC( hb_compExprUseFunCall )
HB_GEN_FUNC1( PCode1, HB_P_PUSHNIL );
}
if( pSelf->value.asFunCall.pParms )
{
usCount = ( HB_USHORT ) hb_compExprParamListCheck( HB_COMP_PARAM, pSelf->value.asFunCall.pParms );
fArgsList = pSelf->value.asFunCall.pParms->ExprType == HB_ET_MACROARGLIST;
if( usCount )
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
}
if( usCount )
HB_EXPR_USE( pSelf->value.asFunCall.pParms, HB_EA_PUSH_PCODE );
if( fArgsList )
{