mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-15 04:15:53 +08:00
Compare commits
6 Commits
core/devel
...
core/devel
| Author | SHA1 | Date | |
|---|---|---|---|
| b19191b286 | |||
| 77f8ab6875 | |||
| 6fc6f9ead3 | |||
| 270c1fa2ac | |||
| f76a03fab8 | |||
| 09e6d3f760 |
@ -48,7 +48,6 @@ public:
|
||||
~AutoFilter();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "ChartFrtInfo.h"
|
||||
#include <Logic/Biff_structures/FrtHeaderOld.h>
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -37,6 +37,8 @@ namespace XLS
|
||||
|
||||
DConRef::DConRef()
|
||||
{
|
||||
bFilePath = false;
|
||||
bSheetName = false;
|
||||
}
|
||||
|
||||
|
||||
@ -52,10 +54,33 @@ BaseObjectPtr DConRef::clone()
|
||||
|
||||
void DConRef::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### DConRef record is not implemented")
|
||||
Log::error("DConRef record is not implemented.");
|
||||
record >> ref >> cchFile;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
if (cchFile > 1)
|
||||
{
|
||||
XLUnicodeStringNoCch stFile_;
|
||||
stFile_.setSize(cchFile);
|
||||
record >> stFile_;
|
||||
//dcon-file = external-virt-path / self-reference
|
||||
//external-virt-path = volume / unc-volume / rel-volume / transfer-protocol / startup / alt-startup / library / simple-file-path-dcon
|
||||
//simple-file-path-dcon = %x0001 file-path
|
||||
//self-reference = %x0002 sheet-name
|
||||
|
||||
stFile = stFile_.value();
|
||||
if (stFile.substr(0, 1) == L"\x0001")
|
||||
{
|
||||
bFilePath = true;
|
||||
stFile = stFile.substr(1);
|
||||
}
|
||||
else if (stFile.substr(0, 1) == L"\x0002")
|
||||
{
|
||||
bSheetName = true;
|
||||
stFile = stFile.substr(1);
|
||||
}
|
||||
}
|
||||
|
||||
int unused = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(unused);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -33,11 +33,12 @@
|
||||
|
||||
#include "BiffRecord.h"
|
||||
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of DConRef record in BIFF8
|
||||
class DConRef: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(DConRef)
|
||||
@ -47,12 +48,17 @@ public:
|
||||
~DConRef();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeDConRef;
|
||||
static const ElementType type = typeDConRef;
|
||||
|
||||
RefU ref;
|
||||
unsigned short cchFile;
|
||||
std::wstring stFile;
|
||||
|
||||
bool bFilePath;
|
||||
bool bSheetName;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "EndObject.h"
|
||||
#include <Logic/Biff_structures/FrtHeaderOld.h>
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -54,7 +54,7 @@ void MTRSettings::readFields(CFRecord& record)
|
||||
{
|
||||
record.skipNunBytes(12);
|
||||
_UINT32 temp1, temp2;
|
||||
#pragma message("############################ frtHeader skipped here")
|
||||
|
||||
record >> temp1 >> temp2 >> cUserThreadCount;
|
||||
|
||||
fMTREnabled = temp1;
|
||||
|
||||
@ -52,9 +52,9 @@ BaseObjectPtr OleDbConn::clone()
|
||||
|
||||
void OleDbConn::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### OleDbConn record is not implemented")
|
||||
Log::error("OleDbConn record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr PicF::clone()
|
||||
|
||||
void PicF::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### PicF record is not implemented")
|
||||
Log::error("PicF record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr PivotChartBits::clone()
|
||||
|
||||
void PivotChartBits::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### PivotChartBits record is not implemented")
|
||||
Log::error("PivotChartBits record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,9 @@ BaseObjectPtr Qsi::clone()
|
||||
|
||||
void Qsi::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### Qsi record is not implemented")
|
||||
Log::error("Qsi record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,22 @@ BaseObjectPtr QsiSXTag::clone()
|
||||
|
||||
void QsiSXTag::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### QsiSXTag record is not implemented")
|
||||
Log::error("QsiSXTag record is not implemented.");
|
||||
//record >> some_value;
|
||||
unsigned char reserved1;
|
||||
unsigned short flags, reserved2;
|
||||
|
||||
record >> frtHeaderOld >> fSx >> flags;
|
||||
|
||||
fEnableRefresh = GETBIT(flags, 0);
|
||||
fInvalid = GETBIT(flags, 1);
|
||||
fTensorEx = GETBIT(flags, 2);
|
||||
|
||||
record >> dwQsiFuture >> verSxLastUpdated >> verSxUpdatableMin >> obCchName >> reserved1;
|
||||
record >> stName;
|
||||
|
||||
record >> reserved2;
|
||||
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of QsiSXTag record in BIFF8
|
||||
class QsiSXTag: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(QsiSXTag)
|
||||
@ -47,12 +47,24 @@ public:
|
||||
~QsiSXTag();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeQsiSXTag;
|
||||
static const ElementType type = typeQsiSXTag;
|
||||
|
||||
FrtHeaderOld frtHeaderOld;
|
||||
unsigned short fSx;
|
||||
|
||||
bool fEnableRefresh;
|
||||
bool fInvalid;
|
||||
bool fTensorEx;
|
||||
|
||||
_UINT32 dwQsiFuture;
|
||||
unsigned char verSxLastUpdated;
|
||||
unsigned char verSxUpdatableMin;
|
||||
|
||||
unsigned char obCchName;
|
||||
XLUnicodeString stName;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr Qsif::clone()
|
||||
|
||||
void Qsif::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### Qsif record is not implemented")
|
||||
Log::error("Qsif record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,9 @@ BaseObjectPtr RRSort::clone()
|
||||
|
||||
void RRSort::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### RRSort record is not implemented")
|
||||
Log::error("RRSort record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -83,7 +83,7 @@ int SST::serialize(std::wostream & stream)
|
||||
{
|
||||
CP_XML_WRITER(stream)
|
||||
{
|
||||
for (int i=0; i < rgb.size(); i++)
|
||||
for (size_t i=0; i < rgb.size(); i++)
|
||||
{
|
||||
XLUnicodeRichExtendedString *richText = dynamic_cast<XLUnicodeRichExtendedString *>(rgb[i].get());
|
||||
|
||||
|
||||
@ -52,11 +52,66 @@ BaseObjectPtr SXAddl::clone()
|
||||
|
||||
void SXAddl::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXAddl record is not implemented")
|
||||
//Log::error("SXAddl record is not implemented.");
|
||||
//record >> some_value;
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
Log::error("SXAddl record is not implemented.");
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
void SXAddl_SXCCache_SXDId::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
short reserved;
|
||||
record >> idCache >> reserved;
|
||||
}
|
||||
|
||||
void SXAddl_SXCCache_SXDEnd::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
_UINT32 reserved1;
|
||||
short reserved2;
|
||||
record >> reserved1 >> reserved2;
|
||||
}
|
||||
|
||||
void SXAddl_SXCCache_SXDVer10Info::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
_UINT32 reserved1;
|
||||
short reserved2;
|
||||
record >> reserved1 >> reserved2;
|
||||
|
||||
record >> citmGhostMax >> bVerCacheLastRefresh >> bVerCacheRefreshableMin;
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
record >> numDateCopy[i];
|
||||
|
||||
record >> reserved2;
|
||||
}
|
||||
void SXAddl_SXCCache_SXDInfo12::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
_UINT32 flags;
|
||||
short reserved;
|
||||
|
||||
record >> flags >> reserved;
|
||||
|
||||
fSheetData = GETBIT(flags, 0);
|
||||
fSrvSupportAttribDrill = GETBIT(flags, 1);
|
||||
fSrvSupportSubQuery = GETBIT(flags, 2);
|
||||
}
|
||||
void SXAddl_SXCCache_SXDVerSXMacro::readFields(CFRecord& record)
|
||||
{
|
||||
m_SXAddlHdr.load(record);
|
||||
|
||||
unsigned char reserved1;
|
||||
short reserved2, reserved3;
|
||||
|
||||
record >> dwVer >> reserved1 >> reserved2 >> reserved3;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -43,129 +43,188 @@ class SXAddl: public BiffRecord
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXAddl)
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SXAddl)
|
||||
public:
|
||||
struct _SXAddlHdr
|
||||
{
|
||||
_UINT32 frtHeaderOld;
|
||||
unsigned char sxc;
|
||||
unsigned char sxd;
|
||||
|
||||
void load(CFRecord& record)
|
||||
{
|
||||
record >> frtHeaderOld >> sxc >> sxd;
|
||||
}
|
||||
}m_SXAddlHdr;
|
||||
|
||||
SXAddl();
|
||||
~SXAddl();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXAddl;
|
||||
};
|
||||
|
||||
class Continue_SxaddlSxString : public SXAddl
|
||||
{
|
||||
public:
|
||||
//virtual void readFields(CFRecord& record);
|
||||
|
||||
};
|
||||
class SXAddl_SXCAutoSort_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCAutoSort_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDEnd : public SXAddl
|
||||
{
|
||||
public:
|
||||
virtual void readFields(CFRecord& record);
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDId : public SXAddl
|
||||
{
|
||||
public:
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
_UINT32 idCache;
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDInfo12 : public SXAddl
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
bool fSheetData;
|
||||
bool fSrvSupportAttribDrill;
|
||||
bool fSrvSupportSubQuery;
|
||||
|
||||
};
|
||||
|
||||
// The following classes are not implemented and most probably won't be.
|
||||
// So we save some compilation and link time and resulting dll size
|
||||
class Continue_SxaddlSxString : public SXAddl {};
|
||||
class SXAddl_SXCAutoSort_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCAutoSort_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDInfo12 : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDInvRefreshReal : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDVer10Info : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDVerSXMacro : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDCaption : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDIfdbMempropMap : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDIfdbMpMapCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDPropName : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDSxrmitmCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpMapCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpropMap : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDSxrmitmDisp : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDAutoshow : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDISXTH : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDMemberCaption : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVer12Info : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDVer10Info : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDGrpInfo : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDMember : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDGrpLevelInfo : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDDisplayFolder : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDFilterMember : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDFilterMember12 : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDIconSet : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDInfo12 : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIGoal : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIStatus : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPITime : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPITrend : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIValue : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIWeight : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDMeasureGrp : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDParentKPI : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDSXSetParentUnique : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDUserCaption : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCQsi_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQsi_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDReconnCond : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcConnFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcDataFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDXMLSource : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmt_SXDSXCondFmt : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmts_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmts_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDSxdh : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXfilt : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXItm : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDCaption : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilter : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterDesc : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterValue1 : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterValue2 : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilter : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilterValue1 : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilterValue2 : public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDUserCaption : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDMGrpSXDHMap : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDSXrule : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCalcMember : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCalcMemString : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactColHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactRwHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDSXPIIvmb : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDTableStyleClient : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVer10Info : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVer12Info : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCCache_SXDInvRefreshReal : public SXAddl
|
||||
{
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDVer10Info : public SXAddl
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
_INT32 citmGhostMax;
|
||||
unsigned char bVerCacheLastRefresh;
|
||||
unsigned char bVerCacheRefreshableMin;
|
||||
|
||||
unsigned char numDateCopy[8];
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDVerSXMacro : public SXAddl
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void readFields(CFRecord& record);
|
||||
|
||||
unsigned char dwVer;
|
||||
};
|
||||
|
||||
class SXAddl_SXCCache_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDCaption : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDIfdbMempropMap: public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDIfdbMpMapCount: public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDPropName : public SXAddl {};
|
||||
class SXAddl_SXCCacheField_SXDSxrmitmCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpMapCount : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDItmMpropMap : public SXAddl {};
|
||||
class SXAddl_SXCCacheItem_SXDSxrmitmDisp : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDAutoshow : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDISXTH : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDMemberCaption : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVer12Info : public SXAddl {};
|
||||
class SXAddl_SXCField12_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCField_SXDVer10Info : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDGrpInfo : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCGroup_SXDMember : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDGrpLevelInfo : public SXAddl {};
|
||||
class SXAddl_SXCGrpLevel_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDDisplayFolder : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDFilterMember : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDFilterMember12 : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDIconSet : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDInfo12 : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIGoal : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIStatus : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPITime : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPITrend : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIValue : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDKPIWeight : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDMeasureGrp : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDParentKPI : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDProperty : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDSXSetParentUnique : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDUserCaption : public SXAddl {};
|
||||
class SXAddl_SXCHierarchy_SXDVerUpdInv : public SXAddl {};
|
||||
class SXAddl_SXCQsi_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQsi_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDReconnCond : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcConnFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDSrcDataFile : public SXAddl {};
|
||||
class SXAddl_SXCQuery_SXDXMLSource : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmt_SXDSXCondFmt : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmts_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXCondFmts_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXDH_SXDSxdh : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXfilt : public SXAddl {};
|
||||
class SXAddl_SXCSXfilt_SXDSXItm : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDCaption : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilter : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterDesc : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterValue1: public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDSXFilterValue2: public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilter : public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilterValue1: public SXAddl {};
|
||||
class SXAddl_SXCSXFilter12_SXDXlsFilterValue2: public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXFilters12_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMg_SXDUserCaption : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXMgs_SXDMGrpSXDHMap : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCSXrule_SXDSXrule : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCalcMember : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCalcMemString : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactColHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDCompactRwHdr : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDEnd : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDId : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDSXPIIvmb : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDTableStyleClient : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVer10Info : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVer12Info : public SXAddl {};
|
||||
class SXAddl_SXCView_SXDVerUpdInv : public SXAddl {};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXDI::clone()
|
||||
|
||||
void SXDI::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXDI record is not implemented")
|
||||
Log::error("SXDI record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,57 @@ BaseObjectPtr SXEx::clone()
|
||||
|
||||
void SXEx::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXEx record is not implemented")
|
||||
Log::error("SXEx record is not implemented.");
|
||||
//record >> some_value;
|
||||
record >> csxformat >> cchErrorString >> cchNullString >> cchTag >> csxselect;
|
||||
|
||||
_UINT32 flags;
|
||||
record >> crwPage >> ccolPage >> flags;
|
||||
|
||||
fAcrossPageLay = GETBIT(flags, 0);
|
||||
cWrapPage = GETBITS(flags, 1, 9);
|
||||
fEnableWizard = GETBIT(flags, 16);
|
||||
fEnableDrilldown = GETBIT(flags, 17);
|
||||
fEnableFieldDialog = GETBIT(flags, 18);
|
||||
fPreserveFormatting = GETBIT(flags, 19);
|
||||
fMergeLabels = GETBIT(flags, 20);
|
||||
fDisplayErrorString = GETBIT(flags, 21);
|
||||
fDisplayNullString = GETBIT(flags, 22);
|
||||
fSubtotalHiddenPageItems = GETBIT(flags, 23);
|
||||
|
||||
record >> cchPageFieldStyle >> cchTableStyle >> cchVacateStyle;
|
||||
|
||||
if (cchErrorString > 0 && cchErrorString != 0xffff)
|
||||
{
|
||||
stError.setSize(cchErrorString);
|
||||
record >> stError;
|
||||
}
|
||||
if (cchNullString > 0 && cchNullString != 0xffff)
|
||||
{
|
||||
stDisplayNull.setSize(cchNullString);
|
||||
record >> stDisplayNull;
|
||||
}
|
||||
if (cchTag > 0 && cchTag != 0xffff)
|
||||
{
|
||||
stTag.setSize(cchTag);
|
||||
record >> stTag;
|
||||
}
|
||||
if (cchPageFieldStyle > 0 && cchPageFieldStyle != 0xffff)
|
||||
{
|
||||
stPageFieldStyle.setSize(cchPageFieldStyle);
|
||||
record >> stPageFieldStyle;
|
||||
}
|
||||
if (cchTableStyle > 0 && cchTableStyle != 0xffff)
|
||||
{
|
||||
stTableStyle.setSize(cchTableStyle);
|
||||
record >> cchTableStyle;
|
||||
}
|
||||
if (cchVacateStyle > 0 && cchVacateStyle != 0xffff)
|
||||
{
|
||||
stVacateStyle.setSize(cchVacateStyle);
|
||||
record >> cchVacateStyle;
|
||||
}
|
||||
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,12 +32,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXEx record in BIFF8
|
||||
class SXEx: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXEx)
|
||||
@ -47,13 +47,41 @@ public:
|
||||
~SXEx();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXEx;
|
||||
static const ElementType type = typeSXEx;
|
||||
|
||||
unsigned short csxformat;
|
||||
unsigned short cchErrorString;
|
||||
unsigned short cchNullString;
|
||||
unsigned short cchTag;
|
||||
unsigned short csxselect;
|
||||
|
||||
DRw crwPage;
|
||||
ColU ccolPage;
|
||||
|
||||
bool fAcrossPageLay;
|
||||
unsigned char cWrapPage;
|
||||
bool fEnableWizard;
|
||||
bool fEnableDrilldown;
|
||||
bool fEnableFieldDialog;
|
||||
bool fPreserveFormatting;
|
||||
bool fMergeLabels;
|
||||
bool fDisplayErrorString;
|
||||
bool fDisplayNullString;
|
||||
bool fSubtotalHiddenPageItems;
|
||||
|
||||
unsigned short cchPageFieldStyle;
|
||||
unsigned short cchTableStyle;
|
||||
unsigned short cchVacateStyle;
|
||||
|
||||
XLUnicodeStringNoCch stError;
|
||||
XLUnicodeStringNoCch stDisplayNull;
|
||||
XLUnicodeStringNoCch stTag;
|
||||
XLUnicodeStringNoCch stPageFieldStyle;
|
||||
XLUnicodeStringNoCch stTableStyle;
|
||||
XLUnicodeStringNoCch stVacateStyle;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXLI::clone()
|
||||
|
||||
void SXLI::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXLI record is not implemented")
|
||||
Log::error("SXLI record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXPI::clone()
|
||||
|
||||
void SXPI::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXPI record is not implemented")
|
||||
Log::error("SXPI record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXPIEx::clone()
|
||||
|
||||
void SXPIEx::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXPIEx record is not implemented")
|
||||
Log::error("SXPIEx record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -53,10 +53,7 @@ BaseObjectPtr SXStreamID::clone()
|
||||
|
||||
void SXStreamID::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXStreamID record is not implemented")
|
||||
Log::error("SXStreamID record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
record >> idStm;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,8 +53,7 @@ public:
|
||||
|
||||
static const ElementType type = typeSXStreamID;
|
||||
|
||||
|
||||
|
||||
short idStm;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SXString::clone()
|
||||
|
||||
void SXString::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXString record is not implemented")
|
||||
Log::error("SXString record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SXTBRGIITM::clone()
|
||||
|
||||
void SXTBRGIITM::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXTBRGIITM record is not implemented")
|
||||
Log::error("SXTBRGIITM record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SXTH::clone()
|
||||
|
||||
void SXTH::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXTH record is not implemented")
|
||||
Log::error("SXTH record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXTbl::clone()
|
||||
|
||||
void SXTbl::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXTbl record is not implemented")
|
||||
Log::error("SXTbl record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SXVDEx::clone()
|
||||
|
||||
void SXVDEx::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXVDEx record is not implemented")
|
||||
//Log::error("SXVDEx record is not implemented.");
|
||||
//record >> some_value;
|
||||
Log::error("SXVDEx record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXVDTEx::clone()
|
||||
|
||||
void SXVDTEx::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXVDTEx record is not implemented")
|
||||
Log::error("SXVDTEx record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXVI::clone()
|
||||
|
||||
void SXVI::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXVI record is not implemented")
|
||||
//Log::error("SXVI record is not implemented.");
|
||||
//record >> some_value;
|
||||
Log::error("SXVI record is not implemented.");
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,12 +52,7 @@ BaseObjectPtr SXVS::clone()
|
||||
|
||||
void SXVS::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXVS record is not implemented")
|
||||
Log::error("SXVS record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
|
||||
record >> sxvs;
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -47,13 +47,18 @@ public:
|
||||
~SXVS();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXVS;
|
||||
|
||||
short sxvs;
|
||||
|
||||
//enum
|
||||
//SHEET 0x0001
|
||||
//EXTERNAL 0x0002
|
||||
//CONSOLIDATION 0x0004
|
||||
//SCENARIO 0x0010
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -35,16 +35,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
SXViewEx::SXViewEx()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SXViewEx::~SXViewEx()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SXViewEx::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SXViewEx(*this));
|
||||
@ -52,9 +42,11 @@ BaseObjectPtr SXViewEx::clone()
|
||||
|
||||
void SXViewEx::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXViewEx record is not implemented")
|
||||
Log::error("SXViewEx record is not implemented.");
|
||||
//record >> some_value;
|
||||
record >> frtHeaderOld >> csxth >> csxpi >> csxvdtex >> cbFuture;
|
||||
|
||||
if (cbFuture)
|
||||
rgbFuture = std::string(record.getCurData<char>(), cbFuture);
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
@ -43,16 +44,22 @@ class SXViewEx: public BiffRecord
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SXViewEx)
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SXViewEx)
|
||||
public:
|
||||
SXViewEx();
|
||||
~SXViewEx();
|
||||
SXViewEx() {}
|
||||
~SXViewEx(){}
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXViewEx;
|
||||
static const ElementType type = typeSXViewEx;
|
||||
|
||||
FrtHeaderOld frtHeaderOld;
|
||||
_INT32 csxth;
|
||||
_INT32 csxpi;
|
||||
_INT32 csxvdtex;
|
||||
_UINT32 cbFuture;
|
||||
|
||||
std::string rgbFuture;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SXViewEx9::clone()
|
||||
|
||||
void SXViewEx9::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXViewEx9 record is not implemented")
|
||||
Log::error("SXViewEx9 record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SXViewLink::clone()
|
||||
|
||||
void SXViewLink::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SXViewLink record is not implemented")
|
||||
Log::error("SXViewLink record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -55,13 +55,14 @@ void Sort::readFields(CFRecord& record)
|
||||
{
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
fCol = GETBIT(flags, 0);
|
||||
fKey1Dsc = GETBIT(flags, 1);
|
||||
fKey2Dsc = GETBIT(flags, 2);
|
||||
fKey3Dsc = GETBIT(flags, 3);
|
||||
|
||||
fCol = GETBIT(flags, 0);
|
||||
fKey1Dsc = GETBIT(flags, 1);
|
||||
fKey2Dsc = GETBIT(flags, 2);
|
||||
fKey3Dsc = GETBIT(flags, 3);
|
||||
fCaseSensitive = GETBIT(flags, 4);
|
||||
iOrder = GETBITS(flags, 5, 9);
|
||||
fAltMethod = GETBIT(flags, 10);
|
||||
iOrder = GETBITS(flags, 5, 9);
|
||||
fAltMethod = GETBIT(flags, 10);
|
||||
|
||||
unsigned char cchKey1;
|
||||
unsigned char cchKey2;
|
||||
|
||||
@ -48,7 +48,6 @@ public:
|
||||
~Sort();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
*/
|
||||
|
||||
#include "StartObject.h"
|
||||
#include <Logic/Biff_structures/FrtHeaderOld.h>
|
||||
#include "../Biff_structures/FrtHeaderOld.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SxDXF::clone()
|
||||
|
||||
void SxDXF::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxDXF record is not implemented")
|
||||
Log::error("SxDXF record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SxFilt::clone()
|
||||
|
||||
void SxFilt::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxFilt record is not implemented")
|
||||
Log::error("SxFilt record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -47,7 +47,6 @@ public:
|
||||
~SxFilt();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SxFormat::clone()
|
||||
|
||||
void SxFormat::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxFormat record is not implemented")
|
||||
Log::error("SxFormat record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -52,9 +52,8 @@ BaseObjectPtr SxItm::clone()
|
||||
|
||||
void SxItm::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxItm record is not implemented")
|
||||
Log::error("SxItm record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -35,16 +35,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
SxIvd::SxIvd()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SxIvd::~SxIvd()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BaseObjectPtr SxIvd::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxIvd(*this));
|
||||
@ -53,10 +43,17 @@ BaseObjectPtr SxIvd::clone()
|
||||
|
||||
void SxIvd::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxIvd record is not implemented")
|
||||
Log::error("SxIvd record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
int rgSize = record.getDataSize() / 2;
|
||||
|
||||
for (int i = 0; i < rgSize; i++)
|
||||
{
|
||||
short val;
|
||||
record >> val;
|
||||
rgSxivd.push_back(val);
|
||||
}
|
||||
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -36,22 +36,21 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SxIvd record in BIFF8
|
||||
class SxIvd: public BiffRecordContinued
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxIvd)
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SxIvd)
|
||||
public:
|
||||
SxIvd();
|
||||
~SxIvd();
|
||||
SxIvd() {}
|
||||
~SxIvd(){}
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxIvd;
|
||||
static const ElementType type = typeSxIvd;
|
||||
|
||||
std::vector<short> rgSxivd;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SxRule::clone()
|
||||
|
||||
void SxRule::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxRule record is not implemented")
|
||||
Log::error("SxRule record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -47,13 +47,10 @@ public:
|
||||
~SxRule();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxRule;
|
||||
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -53,9 +53,8 @@ BaseObjectPtr SxSelect::clone()
|
||||
|
||||
void SxSelect::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxSelect record is not implemented")
|
||||
Log::error("SxSelect record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
|
||||
|
||||
@ -47,7 +47,6 @@ public:
|
||||
~SxSelect();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
|
||||
@ -53,9 +53,7 @@ BaseObjectPtr SxTbpg::clone()
|
||||
|
||||
void SxTbpg::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxTbpg record is not implemented")
|
||||
Log::error("SxTbpg record is not implemented.");
|
||||
//record >> some_value;
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
|
||||
|
||||
@ -35,16 +35,20 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
SxView::SxView()
|
||||
BiffStructurePtr SXAxis::clone()
|
||||
{
|
||||
return BiffStructurePtr(new SXAxis(*this));
|
||||
}
|
||||
|
||||
|
||||
SxView::~SxView()
|
||||
void SXAxis::load(CFRecord& record)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned short flags;
|
||||
record >> flags;
|
||||
|
||||
bRw = GETBIT(flags, 0);
|
||||
bCol = GETBIT(flags, 1);
|
||||
bPage = GETBIT(flags, 2);
|
||||
bData = GETBIT(flags, 3);
|
||||
}
|
||||
BaseObjectPtr SxView::clone()
|
||||
{
|
||||
return BaseObjectPtr(new SxView(*this));
|
||||
@ -52,10 +56,36 @@ BaseObjectPtr SxView::clone()
|
||||
|
||||
void SxView::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### SxView record is not implemented")
|
||||
Log::error("SxView record is not implemented.");
|
||||
//record >> some_value;
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
short reserved, flags;
|
||||
record >> ref >> rwFirstHead >> rwFirstData >> colFirstData >> iCache >> reserved;
|
||||
record >> sxaxis4Data >> ipos4Data;
|
||||
record >> cDim >> cDimRw >> cDimCol >> cDimPg >> cDimData >> cRw >> cCol;
|
||||
|
||||
record >> flags;
|
||||
fRwGrand = GETBIT(flags, 0);
|
||||
fColGrand = GETBIT(flags, 1);
|
||||
fAutoFormat = GETBIT(flags, 3);
|
||||
fAtrNum = GETBIT(flags, 4);
|
||||
fAtrFnt = GETBIT(flags, 5);
|
||||
fAtrAlc = GETBIT(flags, 6);
|
||||
fAtrBdr = GETBIT(flags, 7);
|
||||
fAtrPat = GETBIT(flags, 8);
|
||||
fAtrProc = GETBIT(flags, 9);
|
||||
|
||||
record >> itblAutoFmt >> cchTableName >> cchDataName;
|
||||
|
||||
if(cchTableName && cchTableName <= 0x00FF)
|
||||
{
|
||||
stTable.setSize(cchTableName);
|
||||
record >> stTable;
|
||||
}
|
||||
if(cchDataName > 0 && cchDataName <= 0x00FE)
|
||||
{
|
||||
stData.setSize(cchDataName);
|
||||
record >> stData;
|
||||
}
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);
|
||||
}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -32,27 +32,78 @@
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "../Biff_structures/BiffString.h"
|
||||
#include "../Biff_structures/CellRangeRef.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
class SXAxis : public BiffStructure
|
||||
{
|
||||
BASE_STRUCTURE_DEFINE_CLASS_NAME(SXAxis)
|
||||
public:
|
||||
|
||||
SXAxis(){}
|
||||
~SXAxis(){}
|
||||
|
||||
BiffStructurePtr clone();
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSXAxis;
|
||||
|
||||
bool bRw;
|
||||
bool bCol;
|
||||
bool bPage;
|
||||
bool bData;
|
||||
|
||||
};
|
||||
|
||||
// Logical representation of SxView record in BIFF8
|
||||
class SxView: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(SxView)
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SxView)
|
||||
public:
|
||||
SxView();
|
||||
~SxView();
|
||||
SxView() {cchTableName = cchDataName = 0;}
|
||||
~SxView() {}
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxView;
|
||||
static const ElementType type = typeSxView;
|
||||
|
||||
Ref8U ref;
|
||||
RwU rwFirstHead;
|
||||
RwU rwFirstData;
|
||||
ColU colFirstData;
|
||||
short iCache;
|
||||
short reserved;
|
||||
SXAxis sxaxis4Data;
|
||||
short ipos4Data;
|
||||
short cDim;
|
||||
unsigned short cDimRw;
|
||||
unsigned short cDimCol;
|
||||
unsigned short cDimPg;
|
||||
short cDimData;
|
||||
unsigned short cRw;
|
||||
unsigned short cCol;
|
||||
|
||||
bool fRwGrand;
|
||||
bool fColGrand;
|
||||
bool fAutoFormat;
|
||||
bool fAtrNum;
|
||||
bool fAtrFnt;
|
||||
bool fAtrAlc;
|
||||
bool fAtrBdr;
|
||||
bool fAtrPat;
|
||||
bool fAtrProc;
|
||||
|
||||
unsigned short itblAutoFmt; //enum AutoFmt8
|
||||
unsigned short cchTableName;
|
||||
unsigned short cchDataName;
|
||||
|
||||
XLUnicodeStringNoCch stTable;
|
||||
XLUnicodeStringNoCch stData;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -37,6 +37,7 @@ namespace XLS
|
||||
|
||||
Sxvd::Sxvd()
|
||||
{
|
||||
cchName = 0;
|
||||
}
|
||||
|
||||
|
||||
@ -52,12 +53,31 @@ BaseObjectPtr Sxvd::clone()
|
||||
|
||||
void Sxvd::readFields(CFRecord& record)
|
||||
{
|
||||
#pragma message("####################### Sxvd record is not implemented")
|
||||
//Log::error("Sxvd record is not implemented.");
|
||||
//record >> some_value;
|
||||
short flags;
|
||||
record >> sxaxis >> cSub >> flags;
|
||||
|
||||
fDefault = GETBIT(flags, 0);
|
||||
fSum = GETBIT(flags, 1);
|
||||
fCounta = GETBIT(flags, 2);
|
||||
fAverage = GETBIT(flags, 3);
|
||||
fMax = GETBIT(flags, 4);
|
||||
fMin = GETBIT(flags, 5);
|
||||
fProduct = GETBIT(flags, 6);
|
||||
fCount = GETBIT(flags, 7);
|
||||
fStdev = GETBIT(flags, 8);
|
||||
fStdevp = GETBIT(flags, 9);
|
||||
fVariance = GETBIT(flags, 10);
|
||||
fVariancep = GETBIT(flags, 11);
|
||||
|
||||
record.skipNunBytes(record.getDataSize() - record.getRdPtr());
|
||||
}
|
||||
record >> cItm >> cchName;
|
||||
|
||||
if(cchName && cchName != 0xffff)
|
||||
{
|
||||
stName.setSize(cchName);
|
||||
record >> stName;
|
||||
}
|
||||
int skip = record.getDataSize() - record.getRdPtr();
|
||||
record.skipNunBytes(skip);}
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
|
||||
@ -31,13 +31,11 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "BiffRecord.h"
|
||||
#include "SxView.h"
|
||||
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of Sxvd record in BIFF8
|
||||
class Sxvd: public BiffRecord
|
||||
{
|
||||
BIFF_RECORD_DEFINE_TYPE_INFO(Sxvd)
|
||||
@ -47,12 +45,31 @@ public:
|
||||
~Sxvd();
|
||||
|
||||
BaseObjectPtr clone();
|
||||
|
||||
|
||||
void readFields(CFRecord& record);
|
||||
|
||||
static const ElementType type = typeSxvd;
|
||||
|
||||
SXAxis sxaxis;
|
||||
unsigned short cSub;
|
||||
|
||||
bool fDefault;
|
||||
bool fSum;
|
||||
bool fCounta;
|
||||
bool fAverage;
|
||||
bool fMax;
|
||||
bool fMin;
|
||||
bool fProduct;
|
||||
bool fCount;
|
||||
bool fStdev;
|
||||
bool fStdevp;
|
||||
bool fVariance;
|
||||
bool fVariancep;
|
||||
|
||||
short cItm;
|
||||
unsigned short cchName;
|
||||
XLUnicodeStringNoCch stName;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -43,18 +43,15 @@ class Bes : public BiffStructure
|
||||
public:
|
||||
BiffStructurePtr clone();
|
||||
|
||||
static const ElementType type = typeBes;
|
||||
|
||||
static const ElementType type = typeBes;
|
||||
|
||||
virtual void load(CFRecord& record);
|
||||
|
||||
|
||||
const std::wstring toString();
|
||||
void fromString(const std::wstring str);
|
||||
|
||||
private:
|
||||
unsigned char bBoolErr;
|
||||
Boolean<unsigned char> fError;
|
||||
unsigned char bBoolErr;
|
||||
Boolean<unsigned char> fError;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -57,8 +57,8 @@ void ExtPtgArea3D::load(CFRecord& record)
|
||||
|
||||
void ExtPtgArea3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
|
||||
{
|
||||
#pragma message("####################### ExtPtgArea3D record is not implemented")
|
||||
Log::info("ExtPtgArea3D record is not implemented.");
|
||||
|
||||
ptg_stack.push(L"#REF!");
|
||||
}
|
||||
|
||||
|
||||
@ -52,8 +52,8 @@ void ExtPtgAreaErr3D::load(CFRecord& record)
|
||||
|
||||
void ExtPtgAreaErr3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
|
||||
{
|
||||
#pragma message("####################### ExtPtgAreaErr3D record is not implemented")
|
||||
Log::info("ExtPtgAreaErr3D record is not implemented.");
|
||||
|
||||
ptg_stack.push(L"#REF!");
|
||||
}
|
||||
|
||||
|
||||
@ -57,8 +57,8 @@ void ExtPtgRef3D::load(CFRecord& record)
|
||||
|
||||
void ExtPtgRef3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref )
|
||||
{
|
||||
#pragma message("####################### ExtPtgRef3D record is not implemented")
|
||||
Log::info("ExtPtgRef3D record is not implemented.");
|
||||
|
||||
ptg_stack.push(L"#REF!");
|
||||
}
|
||||
|
||||
|
||||
@ -51,8 +51,8 @@ void ExtPtgRefErr3D::load(CFRecord& record)
|
||||
|
||||
void ExtPtgRefErr3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
|
||||
{
|
||||
#pragma message("####################### ExtPtgRefErr3D record is not implemented")
|
||||
Log::info("ExtPtgRefErr3D record is not implemented.");
|
||||
|
||||
ptg_stack.push(L"#REF!");
|
||||
}
|
||||
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of AXES union of records
|
||||
class AXES: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(AXES)
|
||||
|
||||
@ -47,39 +47,9 @@ PIVOTADDL::PIVOTADDL()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PIVOTADDL::~PIVOTADDL()
|
||||
{
|
||||
}
|
||||
/*
|
||||
int b = 5;
|
||||
boost::shared_ptr<int> by;
|
||||
|
||||
void raw_ptr(const int* ptr) // указатель на константный объект.
|
||||
{
|
||||
ptr = &b; // компилится, потому что указатель не константный
|
||||
*ptr = 4; // не компилится, потому что объект константный
|
||||
}
|
||||
// то же самое для shared_ptr
|
||||
void raw_ptr(boost::shared_ptr<const int> ptr) // указатель на константный объект.
|
||||
{
|
||||
ptr = by; // компилится, потому что указатель не константный
|
||||
*ptr = 4; // не компилится, потому что объект константный
|
||||
}
|
||||
// ===================== теперь наоборот
|
||||
void raw_ptr2(int* const ptr) // константный указатель на неконстантный объект.
|
||||
{
|
||||
ptr = &b; // не компилится, потому что указатель - константный
|
||||
*ptr = 4; // компилится, потому что объект не константный
|
||||
}
|
||||
// то же самое для shared_ptr
|
||||
void raw_ptr2(const boost::shared_ptr<int> ptr) // константный указатель на не константный объект.
|
||||
{
|
||||
ptr = by; // не компилится, потому что указатель - константный
|
||||
*ptr = 4; // компилится, потому что объект не константный
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
BaseObjectPtr PIVOTADDL::clone()
|
||||
{
|
||||
@ -101,31 +71,51 @@ const bool PIVOTADDL::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
proc.optional<SXAddl_SXCView_SXDVer10Info>();
|
||||
proc.optional<SXAddl_SXCView_SXDVer12Info>();
|
||||
proc.repeated<SXADDLCALCMEMBER>(0, 0);
|
||||
proc.repeated<SXADDLHIERARCHY>(0, 0);
|
||||
proc.repeated<SXADDLFIELD>(0, 0);
|
||||
proc.repeated<UNKNOWNFRT>(0, 0);
|
||||
proc.optional<SXAddl_SXCView_SXDTableStyleClient>();
|
||||
int count = 0;
|
||||
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDVer10Info>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXAddl_SXCView_SXDVer12Info>())
|
||||
{
|
||||
}
|
||||
count = proc.repeated<SXADDLCALCMEMBER>(0, 0);
|
||||
count = proc.repeated<SXADDLHIERARCHY>(0, 0);
|
||||
count = proc.repeated<SXADDLFIELD>(0, 0);
|
||||
count = proc.repeated<UNKNOWNFRT>(0, 0);
|
||||
|
||||
if (proc.optional<SXAddl_SXCView_SXDTableStyleClient>())
|
||||
{
|
||||
}
|
||||
|
||||
if(proc.optional<SXAddl_SXCView_SXDCompactRwHdr>())
|
||||
{
|
||||
proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
}
|
||||
if(proc.optional<SXAddl_SXCView_SXDCompactColHdr>())
|
||||
{
|
||||
proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
}
|
||||
|
||||
proc.optional<SXAddl_SXCView_SXDVerUpdInv>();
|
||||
proc.optional<SXADDLCONDFMTS>();
|
||||
proc.optional<SXADDLSXFILTERS12>();
|
||||
proc.repeated<SXAddl_SXCView_SXDVerUpdInv>(0, 0);
|
||||
proc.repeated<SXAddl_SXCView_SXDSXPIIvmb>(0, 0);
|
||||
proc.optional<SXAddl_SXCView_SXDVerUpdInv>();
|
||||
proc.mandatory<SXAddl_SXCView_SXDEnd>();
|
||||
if (proc.optional<SXAddl_SXCView_SXDVerUpdInv>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXADDLCONDFMTS>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXADDLSXFILTERS12>())
|
||||
{
|
||||
}
|
||||
count = proc.repeated<SXAddl_SXCView_SXDVerUpdInv>(0, 0);
|
||||
count = proc.repeated<SXAddl_SXCView_SXDSXPIIvmb>(0, 0);
|
||||
if (proc.optional<SXAddl_SXCView_SXDVerUpdInv>())
|
||||
{
|
||||
}
|
||||
if (proc.mandatory<SXAddl_SXCView_SXDEnd>())
|
||||
{
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -63,11 +63,24 @@ const bool PIVOTCACHEDEFINITION::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#pragma message("####################### PIVOTCACHEDEFINITION union is not implemented")
|
||||
Log::info("PIVOTCACHEDEFINITION union is not implemented!!!!!!!!!!!!!!!");
|
||||
proc.mandatory<SXVS>();
|
||||
proc.optional<SXSRC>();
|
||||
proc.optional<SXADDLCACHE>();
|
||||
m_SXStreamID = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
if (proc.mandatory<SXVS>())
|
||||
{
|
||||
m_SXVS = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXSRC>())
|
||||
{
|
||||
m_SXSRC = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXADDLCACHE>())
|
||||
{
|
||||
m_SXADDLCACHE = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -50,6 +50,11 @@ public:
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTCACHEDEFINITION;
|
||||
|
||||
BaseObjectPtr m_SXStreamID;
|
||||
BaseObjectPtr m_SXVS;
|
||||
BaseObjectPtr m_SXSRC;
|
||||
BaseObjectPtr m_SXADDLCACHE;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -66,12 +66,45 @@ const bool PIVOTCORE::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<PIVOTVD>(0, 0);
|
||||
proc.repeated<PIVOTIVD>(0, 2);
|
||||
proc.optional<PIVOTPI>();
|
||||
proc.repeated<SXDI>(0, 0);
|
||||
proc.repeated<PIVOTLI>(0, 0);
|
||||
proc.mandatory<PIVOTEX>();
|
||||
m_SxView = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
int count = 0;
|
||||
|
||||
count = proc.repeated<PIVOTVD>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arPIVOTVD.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
count = proc.repeated<PIVOTIVD>(0, 2);
|
||||
while(count--)
|
||||
{
|
||||
m_arPIVOTIVD.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
if (proc.optional<PIVOTPI>())
|
||||
{
|
||||
m_PIVOTPI= elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
count = proc.repeated<SXDI>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arSXDI.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
count = proc.repeated<PIVOTLI>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arPIVOTLI.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
if (proc.mandatory<PIVOTEX>())
|
||||
{
|
||||
m_PIVOTEX = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTCORE union of records
|
||||
class PIVOTCORE: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTCORE)
|
||||
@ -50,6 +48,15 @@ public:
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTCORE;
|
||||
|
||||
BaseObjectPtr m_SxView;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTVD;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTIVD;
|
||||
BaseObjectPtr m_PIVOTPI;
|
||||
std::vector<BaseObjectPtr> m_arSXDI;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTLI;
|
||||
BaseObjectPtr m_PIVOTEX;
|
||||
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -62,8 +62,9 @@ const bool PIVOTEX::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<PIVOTSELECT>(0, 0);
|
||||
proc.repeated<PIVOTFORMAT>(0, 0);
|
||||
int count = 0;
|
||||
count = proc.repeated<PIVOTSELECT>(0, 0);
|
||||
count = proc.repeated<PIVOTFORMAT>(0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -62,8 +62,12 @@ const bool PIVOTFORMAT::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.mandatory<PIVOTRULE>();
|
||||
proc.optional<SxDXF>();
|
||||
if (proc.mandatory<PIVOTRULE>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SxDXF>())
|
||||
{
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -57,14 +57,14 @@ BaseObjectPtr PIVOTFRT::clone()
|
||||
// PIVOTFRT = PIVOTFRT9 [PIVOTADDL]
|
||||
const bool PIVOTFRT::loadContent(BinProcessor& proc)
|
||||
{
|
||||
|
||||
if(!proc.mandatory<PIVOTFRT9>())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#pragma message("####################### PIVOTFRT union is not implemented")
|
||||
Log::info("PIVOTFRT union is not implemented!!!!!!!!!!!!!!!");
|
||||
proc.optional<PIVOTADDL>();
|
||||
|
||||
if (proc.optional<PIVOTADDL>())
|
||||
{
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -63,9 +63,26 @@ const bool PIVOTFRT9::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.optional<DBQUERYEXT>();
|
||||
proc.optional<PIVOTVIEWEX>();
|
||||
proc.mandatory<SXViewEx9>();
|
||||
m_QsiSXTag = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
if (proc.optional<DBQUERYEXT>())
|
||||
{
|
||||
m_DBQUERYEXT = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<PIVOTVIEWEX>())
|
||||
{
|
||||
m_PIVOTVIEWEX = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.mandatory<SXViewEx9>())
|
||||
{
|
||||
m_SXViewEx9 = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTFRT9 union of records
|
||||
class PIVOTFRT9: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTFRT9)
|
||||
@ -49,7 +47,12 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTFRT9;
|
||||
static const ElementType type = typePIVOTFRT9;
|
||||
|
||||
BaseObjectPtr m_QsiSXTag;
|
||||
BaseObjectPtr m_SXViewEx9;
|
||||
BaseObjectPtr m_DBQUERYEXT;
|
||||
BaseObjectPtr m_PIVOTVIEWEX;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -61,7 +61,10 @@ const bool PIVOTIVD::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<Continue>(0, 0);
|
||||
m_SxIvd = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
int count = proc.repeated<Continue>(0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTIVD union of records
|
||||
class PIVOTIVD: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTIVD)
|
||||
@ -49,7 +47,9 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTIVD;
|
||||
static const ElementType type = typePIVOTIVD;
|
||||
|
||||
BaseObjectPtr m_SxIvd;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -61,7 +61,7 @@ const bool PIVOTRULE::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<PRFILTER>(0, 0);
|
||||
int count = proc.repeated<PRFILTER>(0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -61,7 +61,9 @@ const bool PIVOTSELECT::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.mandatory<PIVOTRULE>();
|
||||
if (proc.mandatory<PIVOTRULE>())
|
||||
{
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -62,8 +62,20 @@ const bool PIVOTVD::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<SXVI>(0, 0);
|
||||
proc.mandatory<SXVDEx>();
|
||||
m_Sxvd = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
int count = proc.repeated<SXVI>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arSXVI.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
if (proc.mandatory<SXVDEx>())
|
||||
{
|
||||
m_SXVDEx = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTVD union of records
|
||||
class PIVOTVD: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTVD)
|
||||
@ -49,7 +47,11 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTVD;
|
||||
static const ElementType type = typePIVOTVD;
|
||||
|
||||
BaseObjectPtr m_Sxvd;
|
||||
std::vector<BaseObjectPtr> m_arSXVI;
|
||||
BaseObjectPtr m_SXVDEx;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -61,7 +61,14 @@ const bool PIVOTVIEW::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.optional<PIVOTFRT>();
|
||||
m_PIVOTCORE = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
if (proc.optional<PIVOTFRT>())
|
||||
{
|
||||
m_PIVOTFRT = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTVIEW union of records
|
||||
class PIVOTVIEW: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTVIEW)
|
||||
@ -49,7 +47,10 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTVIEW;
|
||||
static const ElementType type = typePIVOTVIEW;
|
||||
|
||||
BaseObjectPtr m_PIVOTCORE;
|
||||
BaseObjectPtr m_PIVOTFRT;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -63,9 +63,27 @@ const bool PIVOTVIEWEX::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.repeated<PIVOTTH>(0, 0);
|
||||
proc.repeated<SXPIEx>(0, 0);
|
||||
proc.repeated<PIVOTVDTEX>(0, 0);
|
||||
m_SXViewEx = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
int count = 0;
|
||||
count = proc.repeated<PIVOTTH>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arPIVOTTH.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
count = proc.repeated<SXPIEx>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arSXPIEx.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
count = proc.repeated<PIVOTVDTEX>(0, 0);
|
||||
while(count--)
|
||||
{
|
||||
m_arPIVOTVDTEX.push_back(elements_.front()); elements_.pop_front();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of PIVOTVIEWEX union of records
|
||||
class PIVOTVIEWEX: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(PIVOTVIEWEX)
|
||||
@ -49,7 +47,12 @@ public:
|
||||
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typePIVOTVIEWEX;
|
||||
static const ElementType type = typePIVOTVIEWEX;
|
||||
|
||||
BaseObjectPtr m_SXViewEx;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTTH;
|
||||
std::vector<BaseObjectPtr> m_arSXPIEx;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTVDTEX;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -64,7 +64,7 @@ const bool PRFILTER::loadContent(BinProcessor& proc)
|
||||
}
|
||||
if(proc.optional<SxItm>())
|
||||
{
|
||||
proc.repeated<Continue>(0, 0);
|
||||
int count = proc.repeated<Continue>(0, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@ -57,19 +57,38 @@ BaseObjectPtr SXADDLCACHE::clone()
|
||||
}
|
||||
|
||||
|
||||
// [SXADDLCACHE12] [SXADDLDBQUERY] *UNKNOWNFRT SXAddl_SXCCache_SXDEnd
|
||||
//[SXADDLCACHE12] [SXADDLDBQUERY] *UNKNOWNFRT SXAddl_SXCCache_SXDEnd
|
||||
const bool SXADDLCACHE::loadContent(BinProcessor& proc)
|
||||
{
|
||||
if(!proc.mandatory<SXAddl_SXCCache_SXDId>())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.mandatory<SXAddl_SXCCache_SXDVer10Info>();
|
||||
proc.optional<SXAddl_SXCCache_SXDVerSXMacro>();
|
||||
proc.optional<SXADDLCACHE12>();
|
||||
proc.optional<SXADDLDBQUERY>();
|
||||
proc.repeated<UNKNOWNFRT>(0, 0);
|
||||
proc.mandatory<SXAddl_SXCCache_SXDEnd>();
|
||||
m_SXCCache_SXDId = elements_.back();
|
||||
elements_.pop_back();
|
||||
|
||||
if (proc.mandatory<SXAddl_SXCCache_SXDVer10Info>())
|
||||
{
|
||||
m_SXDVer10Info = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXAddl_SXCCache_SXDVerSXMacro>())
|
||||
{
|
||||
m_SXDVerSXMacro = elements_.back();
|
||||
elements_.pop_back();
|
||||
}
|
||||
if (proc.optional<SXADDLCACHE12>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXADDLDBQUERY>())
|
||||
{
|
||||
}
|
||||
int count = proc.repeated<UNKNOWNFRT>(0, 0);
|
||||
|
||||
if (proc.mandatory<SXAddl_SXCCache_SXDEnd>())
|
||||
{
|
||||
elements_.pop_back();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -36,8 +36,6 @@
|
||||
namespace XLS
|
||||
{
|
||||
|
||||
|
||||
// Logical representation of SXADDLCACHE union of records
|
||||
class SXADDLCACHE: public CompositeObject
|
||||
{
|
||||
BASE_OBJECT_DEFINE_CLASS_NAME(SXADDLCACHE)
|
||||
@ -50,6 +48,10 @@ public:
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typeSXADDLCACHE;
|
||||
|
||||
BaseObjectPtr m_SXCCache_SXDId;
|
||||
BaseObjectPtr m_SXDVer10Info;
|
||||
BaseObjectPtr m_SXDVerSXMacro;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -57,7 +57,7 @@ BaseObjectPtr SXADDLCACHE12::clone()
|
||||
}
|
||||
|
||||
|
||||
// *SXADDLCACHEFIELD [SXADDLSXDH] [SXADDLSXMGS] SXAddl_SXCCache_SXDVerUpdInv
|
||||
// *SXADDLCACHEFIELD [SXADDLSXDH] [SXADDLSXMGS] SXAddl_SXCCache_SXDVerUpdInv
|
||||
const bool SXADDLCACHE12::loadContent(BinProcessor& proc)
|
||||
{
|
||||
|
||||
@ -65,12 +65,24 @@ const bool SXADDLCACHE12::loadContent(BinProcessor& proc)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
proc.mandatory<SXAddl_SXCCache_SXDInfo12>();
|
||||
proc.mandatory<SXAddl_SXCCache_SXDInvRefreshReal>();
|
||||
proc.repeated<SXADDLCACHEFIELD>(0, 0);
|
||||
proc.optional<SXADDLSXDH>();
|
||||
proc.optional<SXADDLSXMGS>();
|
||||
proc.mandatory<SXAddl_SXCCache_SXDVerUpdInv>();
|
||||
if (proc.mandatory<SXAddl_SXCCache_SXDInfo12>())
|
||||
{
|
||||
}
|
||||
if (proc.mandatory<SXAddl_SXCCache_SXDInvRefreshReal>())
|
||||
{
|
||||
}
|
||||
|
||||
int count = proc.repeated<SXADDLCACHEFIELD>(0, 0);
|
||||
|
||||
if (proc.optional<SXADDLSXDH>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXADDLSXMGS>())
|
||||
{
|
||||
}
|
||||
if (proc.mandatory<SXAddl_SXCCache_SXDVerUpdInv>())
|
||||
{
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -60,15 +60,21 @@ SXADDLFIELD = [SXAddl_SXCField_SXDId *Continue_SxaddlSxString SXAddl_SXCField_SX
|
||||
*/
|
||||
const bool SXADDLFIELD::loadContent(BinProcessor& proc)
|
||||
{
|
||||
|
||||
if(proc.optional<SXAddl_SXCField_SXDId>())
|
||||
{
|
||||
proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
proc.mandatory<SXAddl_SXCField_SXDVer10Info>();
|
||||
proc.mandatory<SXAddl_SXCField_SXDEnd>();
|
||||
proc.optional<SXADDLFIELD12>();
|
||||
int count = proc.repeated<Continue_SxaddlSxString>(0, 0);
|
||||
if (proc.mandatory<SXAddl_SXCField_SXDVer10Info>())
|
||||
{
|
||||
}
|
||||
if (proc.mandatory<SXAddl_SXCField_SXDEnd>())
|
||||
{
|
||||
}
|
||||
if (proc.optional<SXADDLFIELD12>())
|
||||
{
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return proc.optional<SXADDLFIELD12>();
|
||||
}
|
||||
|
||||
|
||||
@ -68,6 +68,8 @@ const bool SXSRC::loadContent(BinProcessor& proc)
|
||||
}
|
||||
}
|
||||
}
|
||||
m_source = elements_.back();
|
||||
elements_.pop_back();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -50,7 +50,8 @@ public:
|
||||
virtual const bool loadContent(BinProcessor& proc);
|
||||
|
||||
static const ElementType type = typeSXSRC;
|
||||
|
||||
|
||||
BaseObjectPtr m_source;
|
||||
};
|
||||
|
||||
} // namespace XLS
|
||||
|
||||
@ -315,7 +315,16 @@ const bool GlobalsSubstream::loadContent(BinProcessor& proc)
|
||||
//}
|
||||
}
|
||||
}break;
|
||||
case rt_SXStreamID: proc.repeated<PIVOTCACHEDEFINITION>(0, 0); break;
|
||||
case rt_SXStreamID:
|
||||
{
|
||||
count = proc.repeated<PIVOTCACHEDEFINITION>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arPIVOTCACHEDEFINITION.insert(m_arPIVOTCACHEDEFINITION.begin(), elements_.back());
|
||||
elements_.pop_back();
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_DocRoute: proc.repeated<DOCROUTE>(0, 0); break;
|
||||
case rt_UserBView:
|
||||
{
|
||||
|
||||
@ -71,6 +71,7 @@ public:
|
||||
std::vector<BaseObjectPtr> m_arWindow1;
|
||||
std::vector<BaseObjectPtr> m_arUserBView;
|
||||
std::vector<BaseObjectPtr> m_arSUPBOOK;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTCACHEDEFINITION;
|
||||
|
||||
std::vector<BiffStructurePtr> m_arHFPictureDrawing;
|
||||
|
||||
|
||||
@ -284,7 +284,16 @@ const bool WorksheetSubstream::loadContent(BinProcessor& proc)
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_SxView: proc.repeated<PIVOTVIEW>(0, 0); break;
|
||||
case rt_SxView:
|
||||
{
|
||||
count = proc.repeated<PIVOTVIEW>(0, 0);
|
||||
while(count > 0)
|
||||
{
|
||||
m_arPIVOTVIEW.insert(m_arPIVOTVIEW.begin(), elements_.back());
|
||||
elements_.pop_back();
|
||||
count--;
|
||||
}
|
||||
}break;
|
||||
case rt_DCon: proc.optional<DCON> (); break;
|
||||
case rt_UserSViewBegin:
|
||||
{
|
||||
|
||||
@ -75,6 +75,7 @@ public:
|
||||
std::vector<BaseObjectPtr> m_arMergeCells;
|
||||
std::vector<BaseObjectPtr> m_arWINDOW;
|
||||
std::vector<BaseObjectPtr> m_arCUSTOMVIEW;
|
||||
std::vector<BaseObjectPtr> m_arPIVOTVIEW;
|
||||
std::vector<BaseObjectPtr> m_arFEAT;
|
||||
std::vector<BaseObjectPtr> m_arFEAT11;
|
||||
std::vector<BaseObjectPtr> m_arNote;
|
||||
|
||||
@ -318,6 +318,7 @@ enum ElementType
|
||||
typeSXVDTEx,
|
||||
typeSXVI,
|
||||
typeSxView,
|
||||
typeSXAxis,
|
||||
typeSXViewEx,
|
||||
typeSXViewEx9,
|
||||
typeSXViewLink,
|
||||
|
||||
@ -16,11 +16,13 @@ int ICertificateSelectDialogOpenSsl::LoadCert(std::wstring file, std::string pas
|
||||
|
||||
#if defined(_LINUX) && !defined(_MAC)
|
||||
#include "./XmlSigner_openssl.h"
|
||||
#define XML_CERTIFICATE_USE_OPENSSL
|
||||
#define CCertificate CCertificate_openssl
|
||||
#endif
|
||||
|
||||
#ifdef _MAC
|
||||
#include "./XmlSigner_openssl.h"
|
||||
#define XML_CERTIFICATE_USE_OPENSSL
|
||||
#define CCertificate CCertificate_openssl
|
||||
#endif
|
||||
|
||||
@ -118,5 +120,14 @@ ICertificate* ICertificate::GetById(const std::string& id)
|
||||
CertCloseStore(hStoreHandle, 0);
|
||||
#endif
|
||||
|
||||
#ifdef XML_CERTIFICATE_USE_OPENSSL
|
||||
|
||||
CCertificate_openssl* pCertificate = (CCertificate_openssl*)CreateInstance();
|
||||
if (pCertificate->FromId(id))
|
||||
return pCertificate;
|
||||
delete pCertificate;
|
||||
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -50,6 +50,9 @@ protected:
|
||||
X509* m_cert;
|
||||
EVP_PKEY* m_key;
|
||||
|
||||
std::string m_separator;
|
||||
std::string m_id;
|
||||
|
||||
public:
|
||||
ICertificate* m_pBase;
|
||||
|
||||
@ -62,6 +65,7 @@ public:
|
||||
m_key = NULL;
|
||||
|
||||
m_pBase = NULL;
|
||||
m_separator = ";;;;;;;ONLYOFFICE;;;;;;;";
|
||||
}
|
||||
virtual ~CCertificate_openssl_private()
|
||||
{
|
||||
@ -71,6 +75,17 @@ public:
|
||||
EVP_PKEY_FREE(m_key);
|
||||
}
|
||||
|
||||
protected:
|
||||
static void string_replace(std::string& text, const std::string& replaceFrom, const std::string& replaceTo)
|
||||
{
|
||||
size_t posn = 0;
|
||||
while (std::string::npos != (posn = text.find(replaceFrom, posn)))
|
||||
{
|
||||
text.replace(posn, replaceFrom.length(), replaceTo);
|
||||
posn += replaceTo.length();
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
std::string GetNumber()
|
||||
{
|
||||
@ -110,6 +125,10 @@ public:
|
||||
std::string sName(buffer);
|
||||
std::wstring sNameW = UTF8_TO_U(sName);
|
||||
|
||||
std::wstring::size_type pos = sNameW.find(L"CN=");
|
||||
if (std::wstring::npos != pos)
|
||||
sNameW = sNameW.substr(pos + 3);
|
||||
|
||||
return sNameW;
|
||||
}
|
||||
|
||||
@ -127,6 +146,16 @@ public:
|
||||
|
||||
std::string sReturn((char*)data, (size_t)len);
|
||||
|
||||
std::string sFindFirst = "-----BEGIN TRUSTED CERTIFICATE-----";
|
||||
std::string::size_type nPos1 = sReturn.find(sFindFirst);
|
||||
std::string::size_type nPos2 = sReturn.find("-----END TRUSTED CERTIFICATE-----");
|
||||
if (std::string::npos != nPos1 && std::string::npos != nPos2)
|
||||
{
|
||||
std::string::size_type nStart = nPos1 + sFindFirst.length();
|
||||
sReturn = sReturn.substr(nStart, nPos2 - nStart);
|
||||
}
|
||||
string_replace(sReturn, "\n", "");
|
||||
|
||||
BIO_free(bio);
|
||||
return sReturn;
|
||||
}
|
||||
@ -175,6 +204,8 @@ public:
|
||||
std::string GetId()
|
||||
{
|
||||
// TODO: + public key?
|
||||
if (!m_id.empty())
|
||||
return m_id;
|
||||
return GetNumber();
|
||||
}
|
||||
|
||||
@ -198,7 +229,14 @@ public:
|
||||
|
||||
EVP_MD_CTX_destroy(pCtx);
|
||||
|
||||
return std::string((char*)pSignature, (size_t)nSignatureLen);
|
||||
char* pBase64 = NULL;
|
||||
int nBase64Len = 0;
|
||||
NSFile::CBase64Converter::Encode(pSignature, (int)nSignatureLen, pBase64, nBase64Len, NSBase64::B64_BASE64_FLAG_NONE);
|
||||
|
||||
std::string sReturn(pBase64, nBase64Len);
|
||||
delete[] pBase64;
|
||||
|
||||
return sReturn;
|
||||
}
|
||||
|
||||
std::string GetHash(unsigned char* pData, unsigned int nSize, int nAlg)
|
||||
@ -252,12 +290,12 @@ public:
|
||||
int nDigestLen = 0;
|
||||
NSFile::CBase64Converter::Decode(sXmlSignature.c_str(), (int)sXmlSignature.length(), pDigestValue, nDigestLen);
|
||||
|
||||
int n2 = EVP_VerifyUpdate(pCtx, pDigestValue, (size_t)nDigestLen);
|
||||
int n2 = EVP_VerifyUpdate(pCtx, (BYTE*)sXml.c_str(), (size_t)sXml.length());
|
||||
n2 = n2;
|
||||
|
||||
EVP_PKEY* pubkey = X509_get_pubkey(m_cert);
|
||||
|
||||
int n3 = EVP_VerifyFinal(pCtx, (BYTE*)sXml.c_str(), (unsigned int)sXml.length(), pubkey);
|
||||
int n3 = EVP_VerifyFinal(pCtx, pDigestValue, (unsigned int)nDigestLen, pubkey);
|
||||
n3 = n3;
|
||||
|
||||
EVP_MD_CTX_destroy(pCtx);
|
||||
@ -309,6 +347,14 @@ public:
|
||||
std::wstring sCertPasswordW = m_pDialog->GetCertificatePassword();
|
||||
std::string sCertPassword = U_TO_UTF8(sCertPasswordW);
|
||||
|
||||
return FromFiles(sKeyPath, sKeyPassword, sCertPath, sCertPassword);
|
||||
}
|
||||
|
||||
bool FromFiles(const std::wstring& sKeyPath, const std::string& sKeyPassword, const std::wstring& certPath, const std::string& certPassword)
|
||||
{
|
||||
std::wstring sCertPath = certPath;
|
||||
std::string sCertPassword = certPassword;
|
||||
|
||||
if (sCertPath.empty())
|
||||
{
|
||||
sCertPath = sKeyPath;
|
||||
@ -325,8 +371,45 @@ public:
|
||||
if (nErr != OPEN_SSL_WARNING_OK && nErr != OPEN_SSL_WARNING_ALL_OK)
|
||||
return false;
|
||||
|
||||
m_id = U_TO_UTF8(sKeyPath);
|
||||
m_id += m_separator;
|
||||
m_id += sKeyPassword;
|
||||
m_id += m_separator;
|
||||
m_id += U_TO_UTF8(sCertPath);
|
||||
m_id += m_separator;
|
||||
m_id += sCertPassword;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FromKey(const std::string& sId)
|
||||
{
|
||||
std::string id = sId;
|
||||
std::vector<std::string> arr;
|
||||
size_t pos = 0;
|
||||
while ((pos = id.find(m_separator)) != std::string::npos)
|
||||
{
|
||||
arr.push_back(id.substr(0, pos));
|
||||
id.erase(0, pos + m_separator.length());
|
||||
}
|
||||
|
||||
if (!id.empty())
|
||||
arr.push_back(id);
|
||||
|
||||
if (4 != arr.size())
|
||||
return false;
|
||||
|
||||
std::string sKeyPathA = arr[0];
|
||||
std::string sKeyPasswordA = arr[1];
|
||||
std::string sCertPathA = arr[2];
|
||||
std::string sCertPasswordA = arr[3];
|
||||
|
||||
std::wstring sKeyPath = UTF8_TO_U(sKeyPathA);
|
||||
std::wstring sCertPath = UTF8_TO_U(sCertPathA);
|
||||
|
||||
return FromFiles(sKeyPath, sKeyPasswordA, sCertPath, sCertPasswordA);
|
||||
}
|
||||
|
||||
int ShowCertificate()
|
||||
{
|
||||
if (m_pDialog)
|
||||
@ -671,6 +754,16 @@ int CCertificate_openssl::ShowCertificate()
|
||||
return m_internal->ShowCertificate();
|
||||
}
|
||||
|
||||
bool CCertificate_openssl::FromFiles(const std::wstring& keyPath, const std::string& keyPassword, const std::wstring& certPath, const std::string& certPassword)
|
||||
{
|
||||
return m_internal->FromFiles(keyPath, keyPassword, certPath, certPassword);
|
||||
}
|
||||
|
||||
bool CCertificate_openssl::FromId(const std::string& id)
|
||||
{
|
||||
return m_internal->FromKey(id);
|
||||
}
|
||||
|
||||
void CCertificate_openssl::SetOpenSslDialog(ICertificateSelectDialogOpenSsl* pDialog)
|
||||
{
|
||||
return m_internal->SetOpenSslDialog(pDialog);
|
||||
|
||||
@ -43,6 +43,9 @@ public:
|
||||
virtual bool ShowSelectDialog();
|
||||
virtual int ShowCertificate();
|
||||
|
||||
bool FromFiles(const std::wstring& keyPath, const std::string& keyPassword, const std::wstring& certPath, const std::string& certPassword);
|
||||
bool FromId(const std::string& id);
|
||||
|
||||
virtual void SetOpenSslDialog(ICertificateSelectDialogOpenSsl* pDialog);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user