33#define GDX_NS gdxlib::
56 enum class TraceLevels : uint8_t
63 void SetTraceLevel( TraceLevels tl );
71 [[nodiscard]]
int gdxStoreDomainSets()
const;
79 void gdxStoreDomainSetsSet(
int flag);
91 [[nodiscard]]
int gdxAllowBogusDomains()
const;
104 void gdxAllowBogusDomainsSet(
int flag);
110 [[nodiscard]]
int gdxMapAcronymsToNaN()
const;
116 void gdxMapAcronymsToNaNSet(
int flag);
129 int gdxAddAlias(
const char *Id1,
const char *Id2 );
139 int gdxAutoConvert(
int NV );
145 int64_t gdxGetMemoryUsed();
174 int gdxAcronymAdd(
const char *AName,
const char *Txt,
int AIndx );
181 int gdxAcronymCount()
const;
195 int gdxAcronymGetInfo(
int N,
char *AName,
char *Txt,
int &AIndx )
const;
212 int gdxAcronymGetMapping(
int N,
int &orgIndx,
int &newIndx,
int &autoIndex );
220 int gdxAcronymIndex(
double V )
const;
233 int gdxAcronymName(
double V,
char *AName );
251 int gdxAcronymNextNr(
int NV );
275 int gdxAcronymSetInfo(
int N,
const char *AName,
const char *Txt,
int AIndx );
284 double gdxAcronymValue(
int AIndx )
const;
300 int gdxSymbolAddComment(
int SyNr,
const char *Txt );
312 int gdxSymbolGetComment(
int SyNr,
int N,
char *Txt );
329 int gdxSymbolGetDomain(
int SyNr,
int *DomainSyNrs );
357 int gdxSymbolGetDomainX(
int SyNr,
char **DomainIDs );
372 int gdxSymbolSetDomain(
const char **DomainIDs );
386 int gdxSymbolSetDomainX(
int SyNr,
const char **DomainIDs );
417 int gdxGetDomainElements(
int SyNr,
int DimPos,
int FilterNr, TDomainIndexProc_t DP,
int &NrElem,
void *Uptr );
429 int gdxErrorCount()
const;
439 int gdxErrorStr(
int ErrNr,
char *ErrMsg )
const;
450 int gdxGetLastError();
488 int gdxOpenAppend(
const char *FileName,
const char *Producer,
int &ErrNr );
507 int gdxOpenRead(
const char *FileName,
int &ErrNr );
528 int gdxOpenReadEx(
const char *FileName,
int ReadMode,
int &ErrNr );
541 int gdxOpenWrite(
const char *FileName,
const char *Producer,
int &ErrNr );
566 int gdxOpenWriteEx(
const char *FileName,
const char *Producer,
int Compr,
int &ErrNr );
580 int gdxFilterExists(
int FilterNr );
592 int gdxFilterRegister(
int UelMap );
599 int gdxFilterRegisterDone();
610 int gdxFilterRegisterStart(
int FilterNr );
633 int gdxFindSymbol(
const char *SyId,
int &SyNr );
645 int gdxGetUEL(
int UelNr,
char *Uel );
661 int gdxSymbIndxMaxLength(
int SyNr,
int *LengthInfo );
667 int gdxSymbMaxLength()
const;
674 int gdxUELMaxLength();
691 int gdxDataErrorCount()
const;
713 int gdxDataErrorRecord(
int RecNr,
int *KeyInt,
double *Values );
733 int gdxDataErrorRecordX(
int RecNr,
int *KeyInt,
double *Values );
745 int gdxSetErrorRecordCutoff(
int maxDataErrorRecords );
753 int gdxDataReadDone();
815 int gdxDataReadFilteredStart(
int SyNr,
const int *FilterAction,
int &NrRecs );
826 int gdxDataReadMap(
int RecNr,
int *KeyInt,
double *Values,
int &DimFrst );
836 int gdxDataReadMapStart(
int SyNr,
int &NrRecs );
847 int gdxDataReadRaw(
int *KeyInt,
double *Values,
int &DimFrst );
869 int gdxDataReadRawFast(
int SyNr, TDataStoreProc_t DP,
int &NrRecs );
898 int gdxDataReadRawFastEx(
int SyNr, TDataStoreExProc_t DP,
int &NrRecs,
void *Uptr );
939 int gdxDataReadRawFastFilt(
int SyNr,
const char **UelFilterStr, TDataStoreFiltProc_t DP );
949 int gdxDataReadRawStart(
int SyNr,
int &NrRecs );
972 int gdxDataReadSlice(
const char **UelFilterStr,
int &Dimen, TDataStoreProc_t DP );
983 int gdxDataReadSliceStart(
int SyNr,
int *ElemCounts );
1002 int gdxDataReadStr(
char **KeyStr,
double *Values,
int &DimFrst );
1022 int gdxDataReadStrStart(
int SyNr,
int &NrRecs );
1035 int gdxDataSliceUELS(
const int *SliceKeyInt,
char **KeyStr );
1050 int gdxGetSpecialValues(
double *AVals );
1059 int gdxMapValue(
double D,
int &sv );
1066 int gdxResetSpecialValues();
1079 int gdxSetReadSpecialValues(
const double *AVals );
1093 int gdxSetSpecialValues(
const double *AVals );
1106 int gdxFileInfo(
int &FileVer,
int &ComprLev )
const;
1114 int gdxSymbolDim(
int SyNr );
1127 int gdxSymbolInfo(
int SyNr,
char *SyId,
int &Dimen,
int &Typ );
1192 int gdxSymbolInfoX(
int SyNr,
int &RecCnt,
int &UserInfo,
char *ExplTxt );
1200 int gdxSystemInfo(
int &SyCnt,
int &UelCnt );
1212 int gdxCurrentDim()
const;
1230 int gdxAddSetText(
const char *Txt,
int &TxtNr );
1267 int gdxGetElemText(
int TxtNr,
char *Txt,
int &Node );
1276 int gdxSetHasText(
int SyNr );
1288 int gdxSetTextNodeNr(
int TxtNr,
int Node );
1300 int gdxUELRegisterDone();
1315 int gdxUELRegisterMap(
int UMap,
const char *Uel );
1322 int gdxUELRegisterMapStart();
1335 int gdxUELRegisterRaw(
const char *Uel );
1342 int gdxUELRegisterRawStart();
1357 int gdxUELRegisterStr(
const char *Uel,
int &UelNr );
1364 int gdxUELRegisterStrStart();
1373 int gdxUMFindUEL(
const char *Uel,
int &UelNr,
int &UelMap );
1384 int gdxUMUelGet(
int UelNr,
char *Uel,
int &UelMap );
1393 int gdxUMUelInfo(
int &UelCnt,
int &HighMap );
1403 int gdxRenameUEL(
const char *OldName,
const char *NewName );
1416 static int gdxGetDLLVersion(
char *V );
1426 int gdxFileVersion(
char *FileStr,
char *ProduceStr )
const;
1434 int gdxSetTraceLevel(
int N,
const char *s );
1447 int gdxDataWriteDone();
1456 int gdxDataWriteMap(
const int *KeyInt,
const double *Values );
1521 int gdxDataWriteMapStart(
const char *SyId,
const char *ExplTxt,
int Dimen,
int Typ,
int UserInfo );
1536 int gdxDataWriteRaw(
const int *KeyInt,
const double *Values );
1603 int gdxDataWriteRawStart(
const char *SyId,
const char *ExplTxt,
int Dimen,
int Typ,
int UserInfo );
1676 int gdxDataWriteRawStartKeyBounds(
const char *SyId,
const char *ExplTxt,
int Dimen,
int Typ,
int UserInfo,
const int *MinUELIndices,
const int *MaxUELIndices );
1732 int gdxDataWriteStr(
const char **KeyStr,
const double *Values );
1749 int gdxDataWriteStrStart(
const char *SyId,
const char *ExplTxt,
int Dimen,
int Typ,
int UserInfo );
1756std::unique_ptr<gdlib::gmsstrm::TMiBufferedStream> FFile;
1757std::string lastFileName {};
1758TgxFileMode fmode { f_not_open }, fmode_AftReg { f_not_open };
1764} fstatus { stat_notopen };
1766std::unique_ptr<TUELTable> UELTable;
1767std::unique_ptr<TSetTextList> SetTextList {};
1768std::unique_ptr<int[]> MapSetText {};
1770std::array<int, GLOBAL_MAX_INDEX_DIM> LastElem {}, PrevElem {}, MinElem {}, MaxElem {};
1771std::array<std::array<char, GLOBAL_UEL_IDENT_SIZE>, GLOBAL_MAX_INDEX_DIM> LastStrElem {};
1773tvarvaltype LastDataField {};
1774std::unique_ptr<TNameList> NameList;
1775std::unique_ptr<TDomainStrList> DomainStrList;
1776std::unique_ptr<LinkedDataType> SortList;
1777std::optional<LinkedDataIteratorType> ReadPtr;
1778std::unique_ptr<TTblGamsDataImpl<double>> ErrorList;
1779int MaxErrorRecords {11};
1780PgdxSymbRecord CurSyPtr {};
1781int ErrCnt {}, ErrCntTotal {};
1782int LastError {}, LastRepError {};
1783std::unique_ptr<TFilterList> FilterList;
1785TDomainList DomainList {};
1786bool StoreDomainSets {
true }, AllowBogusDomain {
true }, MapAcrToNaN {};
1787TIntlValueMapDbl intlValueMapDbl {}, readIntlValueMapDbl {};
1788TIntlValueMapI64 intlValueMapI64 {};
1789TraceLevels TraceLevel { TraceLevels::trl_all };
1790std::string TraceStr;
1792std::string FProducer, FProducer2, FileSystemID;
1793int64_t MajorIndexPosition {};
1794int64_t NextWritePosition {};
1795int DataCount {}, NrMappedAdded {};
1796std::array<TgdxElemSize, GLOBAL_MAX_INDEX_DIM> ElemType {};
1797std::string MajContext;
1798std::array<TIntegerMapping, GLOBAL_MAX_INDEX_DIM> SliceIndxs {}, SliceRevMap {};
1800std::array<std::string, GMS_MAX_INDEX_DIM> SliceElems;
1801bool DoUncompress {},
1803int DeltaForWrite {};
1806std::unique_ptr<TAcronymList> AcronymList;
1807std::array<TSetBitMap *, GLOBAL_MAX_INDEX_DIM> WrBitMaps {};
1808bool ReadUniverse {};
1809int UniverseNr {}, UelCntOrig {};
1810int AutoConvert { 1 };
1811int NextAutoAcronym {};
1812bool AppendActive {};
1814#ifndef VERBOSE_TRACE
1815const TraceLevels defaultTraceLevel { TraceLevels::trl_none };
1816const bool verboseTrace {};
1818const TraceLevels defaultTraceLevel { TraceLevels::trl_all };
1819const bool verboseTrace {
true };
1823TDataStoreFiltProc_t gdxDataReadRawFastFilt_DP {};
1824TDomainIndexProc_t gdxGetDomainElements_DP {};
1826int64_t ReadUELPos {}, ReadAcronymPos {}, ReadSetTextPos {};
1827bool UelReadDeferred {}, SetTextReadDeferred {};
1829bool PrepareSymbolWrite( std::string_view Caller,
const char *AName,
const char *AText,
int ADim,
int AType,
int AUserInfo );
1830int PrepareSymbolRead( std::string_view Caller,
int SyNr,
const int *ADomainNrs, TgxFileMode newmode );
1833void SetError(
int N );
1834void ReportError(
int N );
1835bool ErrorCondition(
bool cnd,
int N );
1837bool MajorCheckMode( std::string_view Routine, TgxFileMode m );
1838bool MajorCheckMode( std::string_view Routine,
const TgxModeSet &MS );
1840bool CheckMode( std::string_view Routine );
1841bool CheckMode( std::string_view Routine, TgxFileMode m );
1842bool CheckMode( std::string_view Routine,
const TgxModeSet &MS );
1844void WriteTrace( std::string_view s )
const;
1845void InitDoWrite(
int NrRecs );
1846bool DoWrite(
const int *AElements,
const double *AVals );
1847bool DoRead(
double *AVals,
int &AFDim );
1848void AddToErrorListDomErrs(
const std::array<int, GLOBAL_MAX_INDEX_DIM> &AElements,
const double *AVals );
1849void AddToErrorList(
const int *AElements,
const double *AVals );
1850void GetDefaultRecord(
double *Avals )
const;
1851double AcronymRemap(
double V );
1852bool IsGoodNewSymbol(
const char *s );
1853bool ResultWillBeSorted(
const int *ADomainNrs )
const;
1855int gdxOpenReadXX(
const char *Afn,
int filemode,
int ReadMode,
int &ErrNr );
1856int ReadUELTable(
bool isDeferred);
1857int ReadSetTextList(
bool isDeferred);
1860void gdxGetDomainElements_DP_FC(
int RawIndex,
int MappedIndex,
void *Uptr );
1861int gdxDataReadRawFastFilt_DP_FC(
const int *Indx,
const double *Vals,
void *Uptr );
1863void mapDefaultRecordValues(
double *AVals)
const;
1866bool gdxGetDomainElements_DP_CallByRef {},
1867 gdxDataReadRawFastFilt_DP_CallByRef {},
1868 gdxDataReadRawFastEx_DP_CallByRef {};
1873namespace gdx = GDX_NS gdx;
Definition: gxfile.hpp:196
Definition: gxfile.hpp:92