From dd70ff8bf32c2d7ed365004b1770058265db1978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 11 Mar 2023 18:15:37 +0100 Subject: New upstream version 4.1.0 --- src/include/xbase.h | 7 ++++- src/include/xbblkread.h | 70 ++++++++++++++++++++++++++++++++++++++++++ src/include/xbconfig.h.in | 2 ++ src/include/xbdate.h | 1 - src/include/xbdbf.h | 37 +++++++++++++++------- src/include/xbfile.h | 4 +++ src/include/xbfilter.h | 6 ++-- src/include/xbretcod.h | 5 ++- src/include/xbsql.h | 78 ++++++++++++++++++++++++++++++++++++++++++++++- src/include/xbssv.h | 31 +++++++++++++------ src/include/xbstring.h | 2 ++ src/include/xbtblmgr.h | 9 +++--- src/include/xbuda.h | 6 ++-- src/include/xbxbase.h | 10 +++++- 14 files changed, 232 insertions(+), 36 deletions(-) create mode 100755 src/include/xbblkread.h (limited to 'src/include') diff --git a/src/include/xbase.h b/src/include/xbase.h index 480d716..4ab8892 100755 --- a/src/include/xbase.h +++ b/src/include/xbase.h @@ -3,7 +3,7 @@ Xbase64 Software Library -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license @@ -41,6 +41,10 @@ Email Contact: #include #endif +#ifdef HAVE_PWD_H +#include +#endif + #ifdef HAVE_STDARG_H #include #endif @@ -89,6 +93,7 @@ Email Contact: #include #include +#include #include /* dbf base class */ #include /* index base class */ #include diff --git a/src/include/xbblkread.h b/src/include/xbblkread.h new file mode 100755 index 0000000..353c618 --- /dev/null +++ b/src/include/xbblkread.h @@ -0,0 +1,70 @@ +/* xbblkread.h + +XBase64 Software Library + +Copyright (c) 1997,2003,2014,2022 Gary A Kunkel + +The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. + +Email Contact: + + XDB-devel@lists.sourceforge.net + XDB-users@lists.sourceforge.net + +*/ + +#ifndef __XB_BLKREAD_H__ +#define __XB_BLKREAD_H__ + +namespace xb{ +#ifdef XB_BLOCKREAD_SUPPORT + + + +//! @brief xbBlockRead class. +/*! +The xbBlockRead class can be used to read blocks of records at one time +rather than one record at a time for perfomance improvements when reading a DBF file sequentially.
+ +*/ + + +class XBDLLEXPORT xbBlockRead { + + public: + xbBlockRead( xbDbf * d ); + ~xbBlockRead(); + + #ifdef XB_DEBUG_SUPPORT + void DumpReadBlockInternals(); + #endif + + xbInt16 Init( xbUInt32 ulBlkSize = 0 ); + + xbUInt32 GetBlockFirstRecNo() const; + xbUInt32 GetBlockRecCnt() const; + xbUInt32 GetBlockSize() const; + + xbInt16 GetRecord( xbUInt32 ulRecNo ); // retrieve a data record from a block to RecBuf + xbInt16 SetBlockSize( xbUInt32 ulBlkSize ); + + + private: + + xbInt16 GetBlockForRecNo( xbUInt32 ulRecNo ); // retrieve block from disk for a given record number + + char *pBlock; // block pointer + xbUInt32 ulBlkSize; // block size in bytes + xbUInt32 ulFirstBlkRec; // first recod number in the block + xbUInt32 ulRecCnt; // number of records in block + xbUInt32 ulMaxRecs; // max number of records block can handle + xbBool bEof; // EOF flag + xbDbf *dbf; // reference to associated dbf file +// xbXBase *xbase; // reference to main xbXBase structure + time_t tFmTime; // file modify time at time of block read + +}; + +#endif // XB_BLOCKREAD +} /* namespace */ +#endif /* __XB_BLOCKREAD_H__ */ diff --git a/src/include/xbconfig.h.in b/src/include/xbconfig.h.in index 969b761..f0d475a 100755 --- a/src/include/xbconfig.h.in +++ b/src/include/xbconfig.h.in @@ -51,6 +51,7 @@ #cmakedefine HAVE_DOS_H #cmakedefine HAVE_FCNTL_H #cmakedefine HAVE_INTTYPES_H +#cmakedefine HAVE_PWD_H #cmakedefine HAVE_STDARG_H #cmakedefine HAVE_STDARGS_H #cmakedefine HAVE_STRING_H @@ -100,6 +101,7 @@ #cmakedefine XB_SQL_SUPPORT #cmakedefine XB_INF_SUPPORT #cmakedefine XB_FILTER_SUPPORT +#cmakedefine XB_BLOCKREAD_SUPPORT #cmakedefine XB_UTILS_SUPPORT #cmakedefine XB_EXAMPLES_SUPPORT diff --git a/src/include/xbdate.h b/src/include/xbdate.h index 5406cbb..8dff463 100755 --- a/src/include/xbdate.h +++ b/src/include/xbdate.h @@ -92,7 +92,6 @@ class XBDLLEXPORT xbDate : public xbSsv { xbBool DateIsValid ( const xbString &sDate8 ) const; xbInt16 DayOf( xbInt16 iFormat ) const; xbInt16 CTOD( const xbString &sCtodInDate ); -// xbInt16 FormatDate( const char *sFmtIn, xbString &sFmtOut ); xbInt16 FormatDate( const xbString &sFmtIn, xbString &sFmtOut ); const char *Str() const; xbBool IsLeapYear( xbInt16 iYear ) const; diff --git a/src/include/xbdbf.h b/src/include/xbdbf.h index c0842cb..16799f2 100755 --- a/src/include/xbdbf.h +++ b/src/include/xbdbf.h @@ -2,7 +2,7 @@ XBase64 Software Library -Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. @@ -168,11 +168,14 @@ class XBDLLEXPORT xbDbf : public xbFile { virtual xbInt16 DumpRecord ( xbUInt32 ulRecNo, xbInt16 iOutputDest = 0, xbInt16 iOutputFmt = 0 ); virtual xbInt16 GetAutoCommit () const; virtual xbInt16 GetAutoCommit ( xbInt16 iOption ) const; + virtual xbBool GetBof (); virtual xbUInt32 GetCurRecNo () const; virtual xbInt16 GetDbfStatus () const; + virtual xbBool GetEof (); virtual xbInt32 GetFieldCnt () const; virtual xbInt16 GetFirstRecord (); virtual xbInt16 GetFirstRecord ( xbInt16 iOption ); + virtual xbUInt16 GetHeaderLen () const; virtual xbInt16 GetLastRecord (); virtual xbInt16 GetLastRecord ( xbInt16 iOption ); @@ -360,7 +363,11 @@ class XBDLLEXPORT xbDbf : public xbFile { //virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize ); //#endif - + #ifdef XB_BLOCKREAD_SUPPORT + xbInt16 DisableBlockReadProcessing(); + xbInt16 EnableBlockReadProcessing(); + xbBool GetBlockReadStatus() const; + #endif // XB_BLOCKREAD_SUPPORT protected: #ifdef XB_INDEX_SUPPORT @@ -378,6 +385,10 @@ class XBDLLEXPORT xbDbf : public xbFile { virtual xbInt16 GetInfFileName( xbString &sNdxIdxFileName ); #endif // XB_INF_SUPPORT + #ifdef XB_BLOCKREAD_SUPPORT + friend class xbBlockRead; + #endif // XB_BLOCKREAD_SUPPORT + #ifdef XB_LOCKING_SUPPORT void SetHeaderLocked ( xbBool bTableLocked ); @@ -426,7 +437,7 @@ class XBDLLEXPORT xbDbf : public xbFile { xbSchemaRec *SchemaPtr; // Pointer to field data char *RecBuf; // Pointer to record buffer - char *RecBuf2; // Pointer to original rec buf + char *RecBuf2; // Pointer to original rec buf allocation /* Next several variables are database header fields, up through dbase V */ @@ -448,28 +459,32 @@ class XBDLLEXPORT xbDbf : public xbFile { void ResetNoOfRecords(); -#ifdef XB_LOCKING_SUPPORT + #ifdef XB_LOCKING_SUPPORT xbInt16 iAutoLock; // 0 - autolock off, 1 - autolock on xbInt16 iLockFlavor; xbBool bTableLocked; // is the table locked xbBool bHeaderLocked; // is the header locked xbUInt32 ulAppendLocked; // record number of the new record for the append lock operation xbLinkListOrd lloRecLocks; // ordered link list of locked records -#endif - + #endif -#ifdef XB_INDEX_SUPPORT + #ifdef XB_INDEX_SUPPORT xbIxList *ixList; // pointer to a list of indices associated with the table xbIx *pCurIx; // Pointer to current index class void *vpCurIxTag; // Pointer to current tag xbString sCurIxType; // Current index type xbLinkList llTags; // linked list of open tags + #endif // XB_INDEX_SUPPORT -#endif // XB_INDEX_SUPPORT + #ifdef XB_INF_SUPPORT + xbLinkList llInfData; // linked list of strings containing ndx file entries + #endif // XB_INF_SUPPORT + + #ifdef XB_BLOCKREAD_SUPPORT + xbBlockRead *pRb; + xbBool bBlockReadEnabled; // if true, then block read mode is on + #endif -#ifdef XB_INF_SUPPORT - xbLinkList llInfData; // linked list of strings containing ndx file entries -#endif // XB_INF_SUPPORT }; diff --git a/src/include/xbfile.h b/src/include/xbfile.h index ffbda06..af04e98 100755 --- a/src/include/xbfile.h +++ b/src/include/xbfile.h @@ -60,6 +60,9 @@ class XBDLLEXPORT xbFile : public xbSsv { xbFile( xbXBase * x ); ~xbFile(); + + xbInt16 SetHomeFolders(); + xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut ); xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut, xbInt16 iOption ); @@ -158,6 +161,7 @@ class XBDLLEXPORT xbFile : public xbSsv { #ifdef XB_DEBUG_SUPPORT xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlockSize ); + xbInt16 DumpMemToDisk ( char *p, size_t lBlockSize ); #endif diff --git a/src/include/xbfilter.h b/src/include/xbfilter.h index 8722256..635d117 100755 --- a/src/include/xbfilter.h +++ b/src/include/xbfilter.h @@ -37,9 +37,10 @@ namespace xb{ class XBDLLEXPORT xbFilter { public: - xbFilter( xbXBase *xbase, xbDbf *dbf ); + xbFilter( xbDbf *dbf ); ~xbFilter(); xbInt16 Set( xbString &sFilterExpression ); + xbInt16 Set( const char *sFilterExpression ); xbInt16 GetFirstRecord( xbInt16 iOpt = 1 ); xbInt16 GetNextRecord ( xbInt16 iOpt = 1 ); xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 ); @@ -50,7 +51,6 @@ class XBDLLEXPORT xbFilter { xbInt32 GetQryCnt() const; #ifdef XB_INDEX_SUPPORT -// void Set( xbIx *pIx, void *vpTag ); xbInt16 GetFirstRecordIx( xbInt16 iOpt = 1 ); xbInt16 GetNextRecordIx ( xbInt16 iOpt = 1 ); xbInt16 GetPrevRecordIx ( xbInt16 iOpt = 1 ); @@ -59,7 +59,7 @@ class XBDLLEXPORT xbFilter { private: - xbXBase *xbase; +// xbXBase *xbase; xbDbf *dbf; xbExp *exp; diff --git a/src/include/xbretcod.h b/src/include/xbretcod.h index 6b73527..ec1f91b 100755 --- a/src/include/xbretcod.h +++ b/src/include/xbretcod.h @@ -2,7 +2,7 @@ XBase64 Software Library -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. @@ -27,6 +27,7 @@ namespace xb{ #define XB_DUP_TABLE_OR_ALIAS -110 // table manager #define XB_INVALID_NODELINK -120 // linklist #define XB_KEY_NOT_UNIQUE -121 // linklist + #define XB_MEMCPY_ERROR -122 // memcpy failure #define XB_FILE_EXISTS -200 // file #define XB_ALREADY_OPEN -201 // file @@ -51,6 +52,8 @@ namespace xb{ #define XB_INVALID_TABLE_NAME -220 // file #define XB_EMPTY -221 // file #define XB_LIMIT_REACHED -222 // file + #define XB_BLOCKREAD_NOT_ENABLED -223 // file + #define XB_DIRECTORY_ERROR -224 // file #define XB_INVALID_FIELD_TYPE -300 // field #define XB_INVALID_FIELD_NO -301 // field diff --git a/src/include/xbsql.h b/src/include/xbsql.h index 653096c..07ffb70 100755 --- a/src/include/xbsql.h +++ b/src/include/xbsql.h @@ -39,7 +39,83 @@ struct XBDLLEXPORT xbSqlFld{ xbSqlFld * Next; // Next field in list }; +class xbStmt; + + +struct XBDLLEXPORT xbTblJoin { // structure for defining joined tables in the query + + xbString sTableName; + xbString sAlias; + xbString sJoinExp; // table join expression + xbDbf *pDbf; // pointer the the dbf structure for this table + xbTag *pTag; // pointer to relevant tag for this table, null for record order + xbExp *pLinkExp; // pointer to parsed linkage expression + char cJoinType; // M - Master + // L - Left or Full Left + // R - Right or Full Right + // I - Inner + // O - Outer or Full Outer Outer + + xbTblJoin *pMaster; // pointer to master table, null if this is the primary master + xbLinkList llSubList; // linked list of subordinate tables +// xbStmt *pSubQuery; // pointer to sub query + xbTblJoin *next; // next tbl +}; + + +class XBDLLEXPORT xbStmt : public xbSsv{ + + public: + xbStmt( xbXBase *x ); + ~xbStmt(); + + #ifdef XB_DEBUG_SUPPORT + xbInt16 DumpStmtInternals(); + xbInt16 Test(); + #endif + + xbInt16 ExecuteQuery( const xbString &sCmdLine ); + +// xbInt16 FetchFirst(); +// xbInt16 FetchNext(); +// xbInt16 FetchPrev(); +// xbInt16 FetchLast(); +// xbString &GetField( const xbString sFldName ); + protected: + + private: + + xbInt16 AddQryTbl( const xbString &sTable, const xbString &sAlias, const xbString &sExpression, const char cJoinType ); + xbInt16 CvtSqlExp2DbaseExp( const xbString &sExpIn, xbString &sExpOut ); + xbInt16 GetNextFromSeg( const xbString &sLineIn, xbString &sFromSegOut ); + xbUInt32 GetNextToken( const xbString &sCmdLineIn, xbString &sTokenOut, xbUInt32 ulStartPos ); + xbInt16 GetParenCnt( const xbString &sToken ); + xbInt16 ParseFromStmt( const xbString &sFromLine ); + xbInt16 ParseStmt( const xbString &sCmdLine ); + xbInt16 ProcessFromSeg( const xbString &sFromStmtSeg ); + xbInt16 UpdateJoinList( char cType, const xbString &sTableName, const xbString &sAlias, const xbString &sExp, xbDbf *d, xbExp *e ); //, xbTag *t); + + xbXBase *xbase; // pointer to xbase structure + + + xbTblJoin * pTblList; + xbSqlFld *fl; // field list in sql select statement + xbString sStmt; // complete query statment + xbString sFields; // list of fields + xbString sFrom; // from statment + xbString sWhere; // where clause + xbString sOrderBy; // sort order + xbString sGroupBy; // group by + xbString sHaving; // having + xbUInt32 ulFromPos; + xbUInt32 ulWherePos; + xbUInt32 ulOrderByPos; + xbUInt32 ulGroupByPos; + xbUInt32 ulHavingPos; + + +}; class XBDLLEXPORT xbSql : public xbSsv { @@ -68,7 +144,7 @@ class XBDLLEXPORT xbSql : public xbSsv { // xbInt16 SqlCreateView( const xbString &sCmdLine ); // xbInt16 SqlDropView( const xbString &sCmdLine ); // xbInt16 SqlUpdate( const xbString &sCmdLine ); - xbInt16 SqlSelect( const xbString &sCmdLine ); +// xbInt16 SqlSelect( const xbString &sCmdLine ); void SqlHelp() const; xbInt16 SqlInsert( const xbString &sCmLine ); diff --git a/src/include/xbssv.h b/src/include/xbssv.h index b9345fd..d050bcb 100755 --- a/src/include/xbssv.h +++ b/src/include/xbssv.h @@ -2,7 +2,7 @@ XBase64 Software Library -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. @@ -77,9 +77,11 @@ class XBDLLEXPORT xbSsv{ xbBool GetDefaultAutoCommit () const; void SetDefaultAutoCommit ( xbBool bDefaultAutoCommit ); - xbString& GetDefaultLogDirectory () const; - xbString& GetDefaultLogFileName () const; - void SetDefaultLogDirectory ( const xbString &sDefaultLogDirectory ); + void GetHomeDir ( xbString &sHomeDirOut ); + + xbString& GetLogDirectory () const; + xbString& GetLogFileName () const; + void SetLogDirectory ( const xbString &sLogDirectory ); xbBool GetMultiUser () const; void SetMultiUser ( xbBool bMultiUser ); @@ -87,7 +89,7 @@ class XBDLLEXPORT xbSsv{ #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT) xbInt16 GetUniqueKeyOpt () const; xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt ); - #endif + #endif // (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT) #ifdef XB_LOCKING_SUPPORT xbInt16 GetDefaultLockRetries () const; @@ -100,12 +102,18 @@ class XBDLLEXPORT xbSsv{ void SetDefaultAutoLock ( xbBool bAutoLock ); void EnableDefaultAutoLock (); void DisableDefaultAutoLock (); - #endif + #endif // XB_LOCKING_SUPPORT #ifdef XB_MDX_SUPPORT xbInt16 GetCreateMdxBlockSize() const; xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize ); - #endif + #endif // XB_MDX_SUPPORT + + #ifdef XB_BLOCKREAD_SUPPORT + xbUInt32 GetDefaultBlockReadSize() const; + void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize ); + #endif // XB_BLOCKREAD_SUPPORT + protected: @@ -121,8 +129,8 @@ class XBDLLEXPORT xbSsv{ static xbString sDataDirectory; //Data file directory #ifdef XB_LOGGING_SUPPORT - static xbString sDefaultLogDirectory; //Default location to store log files - static xbString sDefaultLogFileName; //Default LogFileName + static xbString sLogDirectory; //Default location to store log files + static xbString sLogFileName; //Default LogFileName #endif static xbInt16 iDefaultFileVersion; // 3 = DBase 3 @@ -150,7 +158,6 @@ class XBDLLEXPORT xbSsv{ #endif - #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT) static xbInt16 iUniqueKeyOpt; @@ -167,6 +174,10 @@ class XBDLLEXPORT xbSsv{ #endif // XB_MDX_SUPPORT +#ifdef XB_BLOCKREAD_SUPPORT + static xbUInt32 ulDefaultBlockReadSize; +#endif // XB_BLOCKREAD_SUPPORT + }; diff --git a/src/include/xbstring.h b/src/include/xbstring.h index f5a22da..3e70acc 100755 --- a/src/include/xbstring.h +++ b/src/include/xbstring.h @@ -131,6 +131,8 @@ class XBDLLEXPORT xbString { xbString &Mid(xbUInt32 ulPos, xbUInt32 lLen ); xbString &PadLeft( char c, xbUInt32 ulLen ); xbString &PadRight( char c, xbUInt32 ulLen ); + + xbUInt32 Pos(char c, xbUInt32 ulStartPos ) const; xbUInt32 Pos(char c) const; xbUInt32 Pos(const char *s) const; xbString &PutAt(xbUInt32 ulPos, char c); diff --git a/src/include/xbtblmgr.h b/src/include/xbtblmgr.h index 150026b..2c31e45 100755 --- a/src/include/xbtblmgr.h +++ b/src/include/xbtblmgr.h @@ -30,8 +30,9 @@ class XBDLLEXPORT xbDbf; /* this structure is a linked list of open tables */ struct XBDLLEXPORT xbTblList{ xbTblList *pNext; - xbString *psTblName; /* Name of table - same table can be opened multiple times, but must have unique alias */ - xbString *psTblAlias; /* TblAliasName must be unique */ + xbString *psFqTblName; // Fully qualified name of table - same table can be opened multiple times, but must have unique alias + xbString *psTblName; // Table name without path, without extension + xbString *psTblAlias; // TblAliasName must be unique, same as TblNAme if Alias not provided xbDbf *pDbf; }; @@ -39,8 +40,8 @@ class XBDLLEXPORT xbTblMgr : public xbSsv { public: xbTblMgr(); ~xbTblMgr(); - xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sTblName ); - xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sTblName, const xbString &sTblAlias ); + xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sFqTblName ); + xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sFqTblName, const xbString &sTblAlias ); xbInt16 DisplayTableList () const; xbDbf * GetDbfPtr ( const xbString &sTblAlias ) const; xbDbf * GetDbfPtr ( xbInt16 sItemNo ) const; diff --git a/src/include/xbuda.h b/src/include/xbuda.h index 84eccee..e5c0e91 100755 --- a/src/include/xbuda.h +++ b/src/include/xbuda.h @@ -2,7 +2,7 @@ XBase64 Software Library -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. @@ -34,7 +34,7 @@ class XBDLLEXPORT xbUda { public: xbUda(); ~xbUda(); - + xbInt16 AddTokenForKey( const xbString &sKey, const xbString &sToken ); void Clear(); xbInt16 DelTokenForKey( const xbString &sKey ); @@ -42,7 +42,7 @@ class XBDLLEXPORT xbUda { xbInt16 GetTokenForKey( const xbString &sKey, xbString &sData ); xbInt16 UpdTokenForKey( const xbString &sKey, const xbString &sToken ); void DumpUda() const; - + private: xbLinkListOrd llOrd; diff --git a/src/include/xbxbase.h b/src/include/xbxbase.h index 204e744..fe1f323 100755 --- a/src/include/xbxbase.h +++ b/src/include/xbxbase.h @@ -2,7 +2,7 @@ XBase64 Software Library -Copyright (c) 1997,2003,2014,2022 Gary A Kunkel +Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel The xb64 software library is covered under the terms of the GPL Version 3, 2007 license. @@ -148,6 +148,9 @@ class XBDLLEXPORT xbXBase : public xbTblMgr{ void xbSleep ( xbInt32 lMillisecs ); + xbInt16 GetCmdLineOpt ( xbInt32 lArgc, char **argv, const char *sOptRqst, xbString &sParmOut ); + xbInt16 GetCmdLineOpt ( xbInt32 lArgc, char **argv, xbString &sOptRqst, xbString &sParmOut ); + /* xbase functions */ #ifdef XB_FUNCTION_SUPPORT @@ -207,6 +210,11 @@ class XBDLLEXPORT xbXBase : public xbTblMgr{ friend class xbBcd; friend class xbExp; + #ifdef XB_BLOCKREAD_SUPPORT + friend class xbBlockRead; + #endif // XB_BLOCKREAD_SUPPORT + + xbInt16 GetFunctionInfo( const xbString &sExpLine, char &cReturnType, xbInt16 &iReturnLenCalc, xbInt32 &lReturnLenVal ) const; static xbInt16 xbMemcmp( const unsigned char *s1, const unsigned char *s2, size_t n ); -- cgit v1.2.3