Commit ad4907f3 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

XlsFormat - DefinedNames - анализ некорректных диапазонов, запись неверного...

XlsFormat - DefinedNames - анализ некорректных диапазонов, запись неверного (оригинального) значения в Comment DefineNames
Xlst - протащен DefineNames:Comment 

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@68937 954022d7-b5bf-4e40-9824-e11837661b57
parent 91e48f67
......@@ -642,7 +642,7 @@ const std::wstring xti_indexes2sheet_name(const short itabFirst, const short ita
return L"#REF!";
}
static boost::wregex correct_sheet_name(L"^\\'.+?\\'$");
static boost::wregex test_sheet_name(L"[\\s\\':.]+");
static boost::wregex test_sheet_name(L"[\\s\\':.-]+");
std::wstring sheet_first = tab2sheet_name(itabFirst, sheets_names);
if(!boost::regex_search(sheet_first.begin(), sheet_first.end(), correct_sheet_name))
......@@ -673,14 +673,17 @@ const std::wstring xti_indexes2sheet_name(const short itabFirst, const short ita
return sheet_first + sheet_last;
}
const std::wstring make3dRef(const unsigned short ixti, const std::wstring cell_ref, std::vector<std::wstring>& xti_parsed)
const std::wstring make3dRef(const unsigned short ixti, const std::wstring cell_ref, std::vector<std::wstring>& xti_parsed, bool full_ref)
{
std::wstring sheets_prefix = xti2sheets(ixti, xti_parsed);
if(L"#REF!" == sheets_prefix)
{
return sheets_prefix;
}
else if (!sheets_prefix.empty()) sheets_prefix += L"!";
else if (!sheets_prefix.empty()) sheets_prefix += L"!";
else if (sheets_prefix.empty() && full_ref) sheets_prefix += L"#REF!";
return sheets_prefix + cell_ref;
}
......
......@@ -67,7 +67,7 @@ namespace XMLSTUFF
// Makes a new tag and append it to parent (no attributes set)
//BiffStructurePtr createElement(const std::wstring & tag_name, BiffStructurePtr & parent);
const std::wstring make3dRef(const unsigned short ixti, const std::wstring cell_ref, std::vector<std::wstring>& xti_parsed);
const std::wstring make3dRef(const unsigned short ixti, const std::wstring cell_ref, std::vector<std::wstring>& xti_parsed, bool full_ref = false);
//const unsigned short sheetsnames2ixti(const std::wstring str, MSXML2::IXMLDOMDocumentPtr doc);
const std::wstring xti_indexes2sheet_name(const short itabFirst, const short itabLast, std::vector<std::wstring>& sheets_names);
......
......@@ -50,7 +50,7 @@ void ExtPtgArea3D::load(CFRecord& record)
}
void ExtPtgArea3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
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.");
......
......@@ -19,7 +19,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
ExtSheetPair iTabs;
RgceAreaRel area;
......
......@@ -44,7 +44,7 @@ void ExtPtgAreaErr3D::load(CFRecord& record)
}
void ExtPtgAreaErr3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
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.");
......
......@@ -17,7 +17,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
ExtSheetPair iTabs;
};
......
......@@ -24,7 +24,7 @@ void ExtPtgErr::load(CFRecord& record)
}
void ExtPtgErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void ExtPtgErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(err.toString());
}
......
......@@ -17,7 +17,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
BErr err;
};
......
......@@ -29,7 +29,7 @@ void ExtPtgRef3D::load(CFRecord& record)
}
void ExtPtgRef3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
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.");
......
......@@ -18,7 +18,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
ExtSheetPair iTabs;
RgceLocRel loc;
......
......@@ -27,7 +27,7 @@ void ExtPtgRefErr3D::load(CFRecord& record)
}
void ExtPtgRefErr3D::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
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.");
......
......@@ -17,7 +17,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
ExtSheetPair iTabs;
};
......
......@@ -24,7 +24,7 @@ class BOperatorPtg_T: public OperatorPtg
public:
BOperatorPtg_T() : OperatorPtg(fixedPtgId) {};
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false)
{
std::wstring operand2(ptg_stack.top());
ptg_stack.pop();
......@@ -41,7 +41,7 @@ class UOperatorPtg_T: public OperatorPtg
{
public:
UOperatorPtg_T() : OperatorPtg(fixedType) {};
void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false)
{
ptg_stack.top() = T::getSymbols() + ptg_stack.top();
};
......@@ -302,7 +302,7 @@ public:
static const std::wstring symbols(L"%");
return symbols;
}
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false)
{
ptg_stack.top() += getOperatorSymbols();
};
......
......@@ -40,7 +40,7 @@ const bool ParsedFormula::HasPtgTbl() const
}
const std::wstring ParsedFormula::getAssembledFormula() const
const std::wstring ParsedFormula::getAssembledFormula(bool full_ref) const
{
const PtgVector& ptgs = rgce.getPtgs();
if(ptgs.empty())
......@@ -51,7 +51,7 @@ const std::wstring ParsedFormula::getAssembledFormula() const
PtgQueue extra_data = rgcb.getPtgs();
for(PtgVectorIterator it = ptgs.begin(), itEnd = ptgs.end(); it != itEnd; ++it)
{
(*it)->assemble(ptg_stack, extra_data);
(*it)->assemble(ptg_stack, extra_data, full_ref);
}
if(1 != ptg_stack.size())
{
......
......@@ -19,7 +19,7 @@ public:
const bool HasPtgTbl() const;
const std::wstring getAssembledFormula() const;
const std::wstring getAssembledFormula(bool full_names = false) const;
static const ElementType type = typeParsedFormula;
......
#include "Ptg.h"
#include <Binary/CFRecord.h>
//#include <Exception/UnexpectedProgramPath.h>
namespace XLS
......@@ -11,43 +10,36 @@ Ptg::Ptg()
{
}
Ptg::Ptg(const unsigned short ptg_id_init)
: ptg_id(ptg_id_init)
{
}
const unsigned short Ptg::getPtgId() const
{
return ptg_id.get_value_or(0);
}
const size_t Ptg::getOffsetInRecord() const
{
return offset_in_record.get_value_or(0);
}
const size_t Ptg::getSizeOfStruct() const
{
return size_of_struct.get_value_or(0);
}
void Ptg::addFuncWrapper(AssemblerStack& ptg_stack, const std::wstring& func_name)
{
ptg_stack.top() = func_name + L'(' + ptg_stack.top() + L')';
}
void Ptg::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void Ptg::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
}
void Ptg::store(CFRecord& record)
{
offset_in_record = record.getDataSize();
......
......@@ -39,7 +39,7 @@ public:
const size_t getOffsetInRecord() const;
const size_t getSizeOfStruct() const;
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
_CP_OPT(unsigned short) ptg_id;
_CP_OPT(size_t) offset_in_record;
......
......@@ -44,7 +44,7 @@ void PtgArea::loadFields(CFRecord& record)
}
void PtgArea::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgArea::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RgceArea range(area);
if(!ptg_stack.empty())
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x05;
......
......@@ -46,7 +46,7 @@ void PtgArea3d::loadFields(CFRecord& record)
}
void PtgArea3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgArea3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevExternPtr tab_ids;
if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast<RevExtern>(extra_data.front())))
......@@ -60,7 +60,7 @@ void PtgArea3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
std::wstring range_ref = area.toString();
ptg_stack.push(XMLSTUFF::make3dRef(ixti, range_ref, global_info->xti_parsed));
ptg_stack.push(XMLSTUFF::make3dRef(ixti, range_ref, global_info->xti_parsed, full_ref));
}
......
......@@ -21,7 +21,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1B;
unsigned short ixti;
......
......@@ -35,7 +35,7 @@ void PtgAreaErr::loadFields(CFRecord& record)
}
void PtgAreaErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAreaErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
if(!ptg_stack.empty() && 0 == ptg_stack.top().find(L"#PtgElfRadical"))
{
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
virtual const unsigned short getPtgId() const { return id_fixed | (static_cast<unsigned char>(data_type) << 5);}
......
......@@ -28,7 +28,7 @@ void PtgAreaErr3d::loadFields(CFRecord& record)
}
void PtgAreaErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAreaErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevExternPtr tab_ids;
if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast<RevExtern>(extra_data.front())))
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
unsigned short ixti;
GlobalWorkbookInfoPtr global_info;
......
......@@ -27,13 +27,6 @@ BiffStructurePtr PtgAreaN::clone()
return BiffStructurePtr(new PtgAreaN(*this));
}
//void PtgAreaN::setXMLAttributes(BiffStructurePtr & xml_tag)
//{
// (area + cell_base_ref).toXML(xml_tag);
//}
void PtgAreaN::storeFields(CFRecord& record)
{
record << area;
......@@ -46,7 +39,7 @@ void PtgAreaN::loadFields(CFRecord& record)
}
void PtgAreaN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAreaN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push((area + cell_base_ref).toString());
}
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x0D;
......
......@@ -36,7 +36,7 @@ void PtgArray::loadFields(CFRecord& record)
}
void PtgArray::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgArray::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
std::wstring array_string;
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x00;
};
......
......@@ -11,13 +11,6 @@ BiffStructurePtr PtgAttrBaxcel::clone()
return BiffStructurePtr(new PtgAttrBaxcel(*this));
}
//
//void PtgAttrBaxcel::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"bitSemi", bitSemi);
//}
void PtgAttrBaxcel::storeFields(CFRecord& record)
{
record.reserveNunBytes(2); // unused
......@@ -31,7 +24,7 @@ void PtgAttrBaxcel::loadFields(CFRecord& record)
}
void PtgAttrBaxcel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_datat)
void PtgAttrBaxcel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// volatile property is not seen in the textual form
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
bool bitSemi;
};
......
......@@ -11,19 +11,6 @@ BiffStructurePtr PtgAttrChoose::clone()
return BiffStructurePtr(new PtgAttrChoose(*this));
}
//void PtgAttrChoose::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cOffset", cOffset);
//
// for(size_t i = 0; i < rgOffset.size(); ++i)
// {
// MSXML2::IXMLDOMElementPtr own_tag2 = XMLSTUFF::createElement(L"offset", xml_tag);
// own_tag2->Puttext(STR::int2str(rgOffset[i], 10).c_str());
// }
//}
void PtgAttrChoose::storeFields(CFRecord& record)
{
#pragma message("####################### PtgAttrChoose record has no BiffStructure::store() implemented")
......@@ -44,9 +31,8 @@ void PtgAttrChoose::loadFields(CFRecord& record)
}
void PtgAttrChoose::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrChoose::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// All control tokens shall be skipped
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
unsigned short cOffset;
std::vector<unsigned short> rgOffset;
......
......@@ -11,13 +11,6 @@ BiffStructurePtr PtgAttrGoto::clone()
return BiffStructurePtr(new PtgAttrGoto(*this));
}
//void PtgAttrGoto::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"offset", offset);
//}
void PtgAttrGoto::storeFields(CFRecord& record)
{
record << offset;
......@@ -30,9 +23,8 @@ void PtgAttrGoto::loadFields(CFRecord& record)
}
void PtgAttrGoto::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrGoto::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// All control tokens shall be skipped
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
unsigned short offset;
};
......
......@@ -11,12 +11,6 @@ BiffStructurePtr PtgAttrIf::clone()
return BiffStructurePtr(new PtgAttrIf(*this));
}
//
//void PtgAttrIf::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"offset", offset);
//}
void PtgAttrIf::storeFields(CFRecord& record)
{
......@@ -30,9 +24,8 @@ void PtgAttrIf::loadFields(CFRecord& record)
}
void PtgAttrIf::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrIf::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// All control tokens shall be skipped
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
unsigned short offset;
};
......
......@@ -24,7 +24,7 @@ void PtgAttrSemi::loadFields(CFRecord& record)
}
void PtgAttrSemi::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrSemi::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// volatile property is not seen in the textual form
}
......
......@@ -15,7 +15,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
......
......@@ -24,9 +24,8 @@ void PtgAttrSpace::loadFields(CFRecord& record)
}
void PtgAttrSpace::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrSpace::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// Display token, that shall be skipped
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
......
......@@ -24,9 +24,8 @@ void PtgAttrSpaceSemi::loadFields(CFRecord& record)
}
void PtgAttrSpaceSemi::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrSpaceSemi::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// Display token that shall be skipped
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
} // namespace XLS
......
......@@ -24,7 +24,7 @@ void PtgAttrSum::loadFields(CFRecord& record)
}
void PtgAttrSum::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgAttrSum::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
addFuncWrapper(ptg_stack, L"SUM");
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1019;
};
......
......@@ -58,7 +58,7 @@ void PtgBool::loadFields(CFRecord& record)
}
void PtgBool::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgBool::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(boolean_ ? L"TRUE" : L"FALSE");
}
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1D;
......
......@@ -31,7 +31,7 @@ void PtgElfCol::loadFields(CFRecord& record)
}
void PtgElfCol::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfCol::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(CellRangeRef(loc, CellRangeRef::stColumnBelow).toString());
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
RgceElfLoc loc;
......
......@@ -25,7 +25,7 @@ void PtgElfColS::loadFields(CFRecord& record)
}
void PtgElfColS::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfColS::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
PtgExtraElfPtr range;
Log::message("PtgElfColS found!!! PtgElfColS found!!! PtgElfColS found!!! PtgElfColS found!!!");
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
......
......@@ -25,7 +25,7 @@ void PtgElfColSV::loadFields(CFRecord& record)
}
void PtgElfColSV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfColSV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
PtgExtraElfPtr range;
Log::message("PtgElfColSV found!!! PtgElfColSV found!!! PtgElfColSV found!!! PtgElfColSV found!!!");
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
......
......@@ -31,7 +31,7 @@ void PtgElfColV::loadFields(CFRecord& record)
}
void PtgElfColV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfColV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(CellRangeRef(loc, CellRangeRef::stColumnBelow).toString());
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
RgceElfLoc loc;
......
......@@ -35,7 +35,7 @@ void PtgElfLel::loadFields(CFRecord& record)
}
void PtgElfLel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfLel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(L"#NAME?"); // The best decision I think
}
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
Ilel ilel;
......
......@@ -31,7 +31,7 @@ void PtgElfRadical::loadFields(CFRecord& record)
}
void PtgElfRadical::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfRadical::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// The significant tag follows (PtgArea or PtgAreaErr)
PtgParam param(PtgParam::ptELF_RADICAL, L"");
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
RgceElfLoc loc;
......
......@@ -35,7 +35,7 @@ void PtgElfRadicalLel::loadFields(CFRecord& record)
}
void PtgElfRadicalLel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfRadicalLel::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// The significant tag follows (PtgArea or PtgAreaErr)
}
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
Ilel ilel;
......
......@@ -24,7 +24,7 @@ void PtgElfRadicalS::loadFields(CFRecord& record)
}
void PtgElfRadicalS::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfRadicalS::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// The significant tag follows (PtgArea or PtgAreaErr)
}
......
......@@ -16,7 +16,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
};
......
......@@ -31,7 +31,7 @@ void PtgElfRw::loadFields(CFRecord& record)
}
void PtgElfRw::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfRw::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(CellRangeRef(loc, CellRangeRef::stRow).toString());
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
RgceElfLoc loc;
......
......@@ -31,7 +31,7 @@ void PtgElfRwV::loadFields(CFRecord& record)
}
void PtgElfRwV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgElfRwV::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(CellRangeRef(loc, CellRangeRef::stRow).toString());
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
RgceElfLoc loc;
......
......@@ -42,7 +42,7 @@ void PtgErr::loadFields(CFRecord& record)
}
void PtgErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(err.toString());
}
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1C;
......
......@@ -18,21 +18,6 @@ BiffStructurePtr PtgExp::clone()
return BiffStructurePtr(new PtgExp(*this));
}
//
//void PtgExp::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"ref", RgceLoc(row, col, true, true).toString().c_str());
//}
//
//
//void PtgExp::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// std::wstring cell_ref = getStructAttribute(xml_tag, L"ref");
// RgceLoc location(cell_ref);
// row = static_cast<unsigned short>(location.getRow());
// col = static_cast<unsigned short>(location.getColumn());
//}
void PtgExp::storeFields(CFRecord& record)
{
......@@ -46,7 +31,7 @@ void PtgExp::loadFields(CFRecord& record)
}
void PtgExp::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgExp::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// The reference coordinates shall be obtained from row/column values.
// No textual form need but the empty line.
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x01;
......
......@@ -23,12 +23,6 @@ BiffStructurePtr PtgFunc::clone()
return BiffStructurePtr(new PtgFunc(*this));
}
//
//void PtgFunc::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// iftab.toXML(xml_tag);
//}
void PtgFunc::storeFields(CFRecord& record)
{
......@@ -42,7 +36,7 @@ void PtgFunc::loadFields(CFRecord& record)
}
void PtgFunc::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgFunc::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
int num_params = iftab.getParamsNum();
std::wstring arguments;
......
......@@ -22,7 +22,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
const int getParametersNum() const;
......
......@@ -23,14 +23,6 @@ BiffStructurePtr PtgFuncVar::clone()
return BiffStructurePtr(new PtgFuncVar(*this));
}
//
//void PtgFuncVar::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cparams", cparams);
// xml_tag->setAttribute(L"fCeFunc", fCeFunc);
// tab.toXML(xml_tag);
//}
//
void PtgFuncVar::storeFields(CFRecord& record)
{
......@@ -47,7 +39,7 @@ void PtgFuncVar::loadFields(CFRecord& record)
}
void PtgFuncVar::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgFuncVar::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
std::wstring arguments;
std::wstring func_name = tab.getFuncName();
......
......@@ -23,7 +23,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
void setParamsNum(const unsigned char num);
......
......@@ -47,7 +47,7 @@ void PtgInt::loadFields(CFRecord& record)
}
void PtgInt::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgInt::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(STR::int2wstr(integer));
}
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1E;
......
......@@ -13,12 +13,6 @@ BiffStructurePtr PtgMemArea::clone()
}
//void PtgMemArea::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cce", cce);
//}
void PtgMemArea::storeFields(CFRecord& record)
{
#pragma message("####################### PtgMemArea record has no BiffStructure::store() implemented")
......@@ -34,7 +28,7 @@ void PtgMemArea::loadFields(CFRecord& record)
}
void PtgMemArea::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemArea::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
PtgExtraMemPtr range;
if(extra_data.empty() || !(range = boost::dynamic_pointer_cast<PtgExtraMem>(extra_data.front())))
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
unsigned short cce;
......
......@@ -31,7 +31,7 @@ void PtgMemAreaN::loadFields(CFRecord& record)
}
void PtgMemAreaN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemAreaN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
PtgExtraMemPtr range;
if(extra_data.empty() || !(range = boost::dynamic_pointer_cast<PtgExtraMem>(extra_data.front())))
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
unsigned short cce;
......
......@@ -35,7 +35,7 @@ void PtgMemErr::loadFields(CFRecord& record)
}
void PtgMemErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
//ptg_stack.push("#CACHE(" + STR::int2str(getOffsetInRecord() + getSizeOfStruct() + cce, 10) + ")!" + err.toString());
}
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
BErr err;
......
......@@ -11,13 +11,6 @@ BiffStructurePtr PtgMemFunc::clone()
return BiffStructurePtr(new PtgMemFunc(*this));
}
//void PtgMemFunc::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cce", cce);
//}
void PtgMemFunc::storeFields(CFRecord& record)
{
record << cce;
......@@ -30,7 +23,7 @@ void PtgMemFunc::loadFields(CFRecord& record)
}
void PtgMemFunc::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemFunc::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// no textual form
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
unsigned short cce;
......
......@@ -12,12 +12,6 @@ BiffStructurePtr PtgMemNoMem::clone()
}
//void PtgMemNoMem::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cce", cce);
//}
void PtgMemNoMem::storeFields(CFRecord& record)
{
record.reserveNunBytes(4); // unused
......@@ -32,9 +26,8 @@ void PtgMemNoMem::loadFields(CFRecord& record)
}
void PtgMemNoMem::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemNoMem::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// I assume it doesn't generate an error.
}
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
unsigned short cce;
......
......@@ -30,9 +30,8 @@ void PtgMemNoMemN::load(CFRecord& record)
}
void PtgMemNoMemN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMemNoMemN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// I assume it doesn't generate an error.
}
......
......@@ -16,7 +16,7 @@ public:
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
unsigned char type1;
......
......@@ -18,7 +18,7 @@ BiffStructurePtr PtgMissArg::clone()
}
void PtgMissArg::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgMissArg::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(L"");
}
......
......@@ -12,7 +12,7 @@ public:
PtgMissArg();
BiffStructurePtr clone();
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x16;
};
......
......@@ -39,7 +39,7 @@ void PtgName::loadFields(CFRecord& record)
}
void PtgName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevNameTabidPtr tab_id;
if(!extra_data.empty() && (tab_id = boost::dynamic_pointer_cast<RevNameTabid>(extra_data.front())))
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x03;
......
......@@ -38,7 +38,7 @@ void PtgNameX::loadFields(CFRecord& record)
}
void PtgNameX::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgNameX::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevNamePtr tab_id;
if(!extra_data.empty() && (tab_id = boost::dynamic_pointer_cast<RevName>(extra_data.front())))
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x19;
......
......@@ -47,7 +47,7 @@ void PtgNum::loadFields(CFRecord& record)
}
void PtgNum::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgNum::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(STR::double2str(value_));
}
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1F;
......
......@@ -19,7 +19,7 @@ BiffStructurePtr PtgParen::clone()
}
void PtgParen::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgParen::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.top() = L'(' + ptg_stack.top() + L')';
}
......
......@@ -14,7 +14,7 @@ public:
PtgParen();
BiffStructurePtr clone();
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x15;
void incrementParametersNum();
......
......@@ -42,7 +42,7 @@ void PtgRef::loadFields(CFRecord& record)
record >> loc;
}
void PtgRef::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgRef::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(loc.toString());
}
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x04;
private:
......
......@@ -45,7 +45,7 @@ void PtgRef3d::loadFields(CFRecord& record)
}
void PtgRef3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgRef3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevExternPtr tab_ids;
if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast<RevExtern>(extra_data.front())))
......@@ -59,7 +59,7 @@ void PtgRef3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
std::wstring cell_ref = rgce_loc.toString();
cell_ref = XMLSTUFF::make3dRef(ixti, cell_ref, global_info->xti_parsed);
cell_ref = XMLSTUFF::make3dRef(ixti, cell_ref, global_info->xti_parsed, full_ref);
ptg_stack.push(cell_ref);
}
......
......@@ -21,7 +21,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1A;
private:
......
......@@ -35,7 +35,7 @@ void PtgRefErr::loadFields(CFRecord& record)
}
void PtgRefErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgRefErr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(L"#REF!");
}
......
......@@ -18,7 +18,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x0A;
};
......
......@@ -24,12 +24,6 @@ BiffStructurePtr PtgRefErr3d::clone()
return BiffStructurePtr(new PtgRefErr3d(*this));
}
//
//void PtgRefErr3d::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"ixti", ixti);
//}
void PtgRefErr3d::storeFields(CFRecord& record)
{
......@@ -46,7 +40,7 @@ void PtgRefErr3d::loadFields(CFRecord& record)
}
void PtgRefErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgRefErr3d::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
RevExternPtr tab_ids;
if(!extra_data.empty() && (tab_ids = boost::dynamic_pointer_cast<RevExtern>(extra_data.front())))
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x1C;
private:
......
......@@ -45,7 +45,7 @@ void PtgRefN::loadFields(CFRecord& record)
}
void PtgRefN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgRefN::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push((loc + cell_base_ref).toString());
}
......
......@@ -19,7 +19,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x0C;
......
......@@ -25,12 +25,6 @@ BiffStructurePtr PtgStr::clone()
}
//void PtgStr::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"string", string_);
//}
void PtgStr::storeFields(CFRecord& record)
{
record << string_;
......@@ -43,7 +37,7 @@ void PtgStr::loadFields(CFRecord& record)
}
void PtgStr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgStr::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
ptg_stack.push(L"\"" + boost::algorithm::replace_all_copy(std::wstring(string_), L"\"", L"\"\"") + L"\"");
}
......
......@@ -20,7 +20,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x17;
......
......@@ -12,12 +12,6 @@ BiffStructurePtr PtgSxName::clone()
}
//void PtgSxName::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"sxIndex", sxIndex);
//}
void PtgSxName::storeFields(CFRecord& record)
{
record << sxIndex;
......@@ -30,7 +24,7 @@ void PtgSxName::loadFields(CFRecord& record)
}
void PtgSxName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgSxName::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
#pragma message("####################### PtgSxName struct is not implemented")
Log::info("PtgSxName structure is not implemented.");
......
......@@ -17,7 +17,7 @@ public:
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
private:
_UINT32 sxIndex;
......
......@@ -17,22 +17,6 @@ BiffStructurePtr PtgTbl::clone()
return BiffStructurePtr(new PtgTbl(*this));
}
//void PtgTbl::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"ref", RgceLoc(row, col, true, true).toString().c_str());
//}
//
//
//void PtgTbl::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// std::wstring cell_ref = getStructAttribute(xml_tag, L"ref");
// RgceLoc location(cell_ref);
// row = static_cast<unsigned short>(location.getRow());
// col = static_cast<unsigned short>(location.getColumn());
//}
void PtgTbl::storeFields(CFRecord& record)
{
record << row << col;
......@@ -45,7 +29,7 @@ void PtgTbl::loadFields(CFRecord& record)
}
void PtgTbl::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data)
void PtgTbl::assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref)
{
// The reference coordinates shall be obtained from row/column values.
// No textual form need but the empty line.
......
......@@ -14,12 +14,10 @@ public:
PtgTbl();
BiffStructurePtr clone();
virtual void loadFields(CFRecord& record);
virtual void storeFields(CFRecord& record);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data);
virtual void assemble(AssemblerStack& ptg_stack, PtgQueue& extra_data, bool full_ref = false);
static const unsigned short fixed_id = 0x02;
......
......@@ -19,27 +19,6 @@ BiffStructurePtr RgbExtra::clone()
return BiffStructurePtr(new RgbExtra(*this));
}
//void RgbExtra::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// if(!ptg_records.empty())
// {
// PtgQueue copy_queue(ptg_records);
// while(!copy_queue.empty())
// {
// copy_queue.front()->toXML(xml_tag);
// copy_queue.pop();
// }
// }
//}
//
//
//void RgbExtra::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
//// No need special processing here
//}
//
void RgbExtra::store(CFRecord& record)
{
while(ptg_records.size())
......
......@@ -50,7 +50,7 @@ const bool LBL::loadContent(BinProcessor& proc)
if (lbl->fBuiltin) name = lbl->Name.value().get_value_or(L"");
if (name.empty()) name = lbl->Name_bin.value();
std::wstring value = lbl->rgce.getAssembledFormula();
std::wstring value = lbl->rgce.getAssembledFormula(lbl->itab == 0 ? true : false);
NameCmt namecmt(name);
if (proc.optional(namecmt))
......@@ -111,21 +111,33 @@ int LBL::serialize(std::wostream & stream)
Lbl *lbl = dynamic_cast<Lbl*>(m_Lbl.get());
if (lbl == NULL) return 0;
std::wstring value = lbl->rgce.getAssembledFormula();
std::wstring value = lbl->rgce.getAssembledFormula(lbl->itab == 0 ? true : false);
std::wstring description;
if (value.empty()) return 0;
int res = 0;
if ((lbl->itab == 0) &&
(res = value.find(L"!")) < 0 &&
(lbl->rgce.rgce.sequence.size() < 2))
if ((lbl->itab == 0) && (res = value.find(L"#REF!")) >= 0)
{
PtgRef3d* ptg = dynamic_cast<PtgRef3d*>(lbl->rgce.rgce.sequence[0].get());
if (ptg) value = std::wstring(L"#REF!");
PtgArea3d* ptg1 = dynamic_cast<PtgArea3d*>(lbl->rgce.rgce.sequence[0].get());
if (ptg1) value = std::wstring(L"#REF!");
for (int i = 0 ; i < lbl->rgce.rgce.sequence.size(); i++)
{
PtgRef3d* ptg = dynamic_cast<PtgRef3d*>(lbl->rgce.rgce.sequence[i].get());
if (ptg)
{
description = value;
value = std::wstring(L"#REF!");
break;
}
PtgArea3d* ptg1 = dynamic_cast<PtgArea3d*>(lbl->rgce.rgce.sequence[i].get());
if (ptg1)
{
description = value;
value = std::wstring(L"#REF!");
break;
}
}
}
CP_XML_WRITER(stream)
......@@ -139,6 +151,9 @@ int LBL::serialize(std::wostream & stream)
CP_XML_ATTR(L"name", xml::utils::replace_text_to_xml(name));
if (!description.empty())
CP_XML_ATTR(L"comment", xml::utils::replace_text_to_xml(description));
if (lbl->itab != 0)
{
CP_XML_ATTR(L"localSheetId", lbl->itab - 1);
......
......@@ -171,7 +171,8 @@ namespace BinXlsxRW
Name = 0,
Ref = 1,
LocalSheetId = 2,
Hidden = 3
Hidden = 3,
Comment = 4
};}
namespace c_oSerWorksheetsTypes{enum c_oSerWorksheetsTypes
{
......
......@@ -1576,6 +1576,13 @@ namespace BinXlsxRW {
m_oBcw.m_oStream.WriteBOOL(definedName.m_oHidden->ToBool());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
//Comment
if (definedName.m_oComment.IsInit())
{
nCurPos = m_oBcw.WriteItemStart(c_oSerDefinedNameTypes::Comment);
m_oBcw.m_oStream.WriteStringW(definedName.m_oComment.get2());
m_oBcw.WriteItemWithLengthEnd(nCurPos);
}
};
};
class BinaryWorksheetTableWriter
......
......@@ -1554,6 +1554,12 @@ namespace BinXlsxRW {
{
pDefinedName->m_oHidden.Init();
pDefinedName->m_oHidden->SetValue(false != m_oBufferedStream.GetBool() ? SimpleTypes::onoffTrue : SimpleTypes::onoffFalse);
}
else if(c_oSerDefinedNameTypes::Comment == type)
{
CString sComment(m_oBufferedStream.GetString3(length));
pDefinedName->m_oComment.Init();
pDefinedName->m_oComment->Append(sComment);
}
return res;
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment