RagTime5ClusterManager.hxx
Go to the documentation of this file.
/* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
/* libmwaw
* Version: MPL 2.0 / LGPLv2+
*
* The contents of this file are subject to the Mozilla Public License Version
* 2.0 (the "License"); you may not use this file except in compliance with
* the License or as specified alternatively below. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* Major Contributor(s):
* Copyright (C) 2002 William Lachance (wrlach@gmail.com)
* Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
* Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
* Copyright (C) 2006, 2007 Andrew Ziem
* Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
*
*
* All Rights Reserved.
*
* For minor contributions see the git repository.
*
* Alternatively, the contents of this file may be used under the terms of
* the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
* in which case the provisions of the LGPLv2+ are applicable
* instead of those above.
*/
#ifndef RAG_TIME_5_CLUSTER_MANAGER
# define RAG_TIME_5_CLUSTER_MANAGER
#include <map>
#include <ostream>
#include <sstream>
#include <string>
#include <vector>
#include "libmwaw_internal.hxx"
#include "MWAWDebug.hxx"
#include "MWAWEntry.hxx"
#include "RagTime5StructManager.hxx"
class RagTime5Document;
class RagTime5StructManager;
namespace RagTime5ClusterManagerInternal
{
struct State;
}
class RagTime5ClusterManager
{
public:
struct Link;
struct NameLink;
struct Cluster;
struct ClusterRoot;
struct ClusterParser;
friend struct ClusterParser;
explicit RagTime5ClusterManager(RagTime5Document &doc);
~RagTime5ClusterManager();
bool sendClusterMainList();
bool readCluster(RagTime5Zone &zone, ClusterParser &parser, bool warnForUnparsed=true);
bool readCluster(RagTime5Zone &zone, std::shared_ptr<Cluster> &cluster, int type=-1);
std::shared_ptr<Cluster> readRootCluster(RagTime5Zone &zone);
bool readClusterMainList(ClusterRoot &root, std::vector<int> &list, std::vector<int> const &clusterIdList);
bool readClusterGObjProperties(RagTime5Zone &zone);
bool readUnknownClusterC(Link const &link);
int getClusterFileType(RagTime5Zone &zone);
int getClusterType(RagTime5Zone &zone, int fileType);
bool getClusterBasicHeaderInfo(RagTime5Zone &zone, long &N, long &fSz, long &debHeaderPos);
// low level
bool readFieldHeader(RagTime5Zone &zone, long endPos, std::string const &headerName, long &endDataPos, long expectedLVal=-99999);
std::string getClusterDebugName(int id);
void setClusterName(int id, librevenge::RVNGString const &name);
static std::string printType(unsigned long fileType)
{
return RagTime5StructManager::printType(fileType);
}
struct Link {
enum Type { L_ClusterLink,
L_LongList, L_UnicodeList,
L_FieldsList, L_List,
L_UnknownClusterC,
L_Unknown
};
explicit Link(Type type=L_Unknown)
: m_type(type)
, m_name("")
, m_ids()
, m_N(0)
, m_fieldSize(0)
, m_longList()
{
for (auto &typ : m_fileType) typ=0;
}
bool empty() const
{
if (m_type==L_LongList && !m_longList.empty())
return false;
for (auto id : m_ids)
if (id>0) return false;
return true;
}
std::string getZoneName() const
{
switch (m_type) {
case L_ClusterLink:
return "clustLink";
case L_LongList:
if (!m_name.empty())
return m_name;
else {
std::stringstream s;
s << "longList" << m_fieldSize;
return s.str();
}
case L_UnicodeList:
return "unicodeListLink";
case L_UnknownClusterC:
return "unknownClusterC";
case L_FieldsList:
if (!m_name.empty())
return m_name;
return "fieldsList[unkn]";
case L_List:
if (!m_name.empty())
return m_name;
break;
case L_Unknown:
#if !defined(__clang__)
default:
#endif
break;
}
std::stringstream s;
if (m_type==L_List)
s << "ListZone";
else
s << "FixZone";
s << std::hex << m_fileType[0] << "_" << m_fileType[1] << std::dec;
if (m_fieldSize)
s << "_" << m_fieldSize;
s << "A";
return s.str();
}
friend std::ostream &operator<<(std::ostream &o, Link const &z)
{
if (z.empty()) return o;
o << z.getZoneName() << ":";
size_t numLinks=z.m_ids.size();
if (numLinks>1) o << "[";
for (size_t i=0; i<numLinks; ++i) {
if (z.m_ids[i]<=0)
o << "_";
else
o << "data" << z.m_ids[i] << "A";
if (i+1!=numLinks) o << ",";
}
if (numLinks>1) o << "]";
if (z.m_fieldSize&0x8000)
o << "[" << std::hex << z.m_fieldSize << std::dec << ":" << z.m_N << "]";
else
o << "[" << z.m_fieldSize << ":" << z.m_N << "]";
return o;
}
Type m_type;
std::string m_name;
std::vector<int> m_ids;
int m_N;
int m_fieldSize;
unsigned long m_fileType[2];
std::vector<long> m_longList;
};
struct NameLink {
NameLink()
: m_ids()
, m_N(0)
, m_decalList()
{
}
explicit NameLink(Link const &lnk)
: m_ids(lnk.m_ids)
, m_N(lnk.m_N)
, m_decalList(lnk.m_longList)
{
}
bool empty() const
{
for (auto id : m_ids)
if (id>0) return false;
return true;
}
std::vector<int> m_ids;
int m_N;
std::vector<long> m_decalList;
std::vector<long> m_posToNames[2];
Link m_posToNamesLinks[2];
};
// cluster classes
struct Cluster {
enum Type {
C_ColorPattern, C_FormulaDef, C_FormulaPos, C_Layout, C_Pipeline,
C_Root, C_ClusterGProp, C_Sound,
// the main zones
C_ButtonZone, C_ChartZone, C_GraphicZone, C_PictureZone, C_SpreadsheetZone, C_TextZone,
// group zones: 6.6
C_GroupZone,
// the styles
C_ColorStyles, C_FormatStyles, C_GraphicStyles, C_TextStyles, C_UnitStyles,
// unknown clusters
C_ClusterC,
C_Empty, C_Unknown
};
explicit Cluster(Type type)
: m_type(type)
, m_zoneId(0)
, m_hiLoEndian(true)
, m_name("")
, m_childLink()
, m_parentLink()
, m_dataLink()
, m_nameLink()
, m_formulaLink()
, m_settingLinks()
, m_linksList()
, m_clusterIdsList()
, m_isSent(false)
{
}
virtual ~Cluster();
Type m_type;
int m_zoneId;
bool m_hiLoEndian;
librevenge::RVNGString m_name;
Link m_childLink;
Link m_parentLink;
Link m_dataLink;
NameLink m_nameLink;
Link m_formulaLink;
std::vector<Link> m_settingLinks;
std::vector<Link> m_linksList;
std::vector<int> m_clusterIdsList;
bool m_isSent;
};
Cluster::Type getClusterType(int zId) const;
struct ClusterRoot final : public Cluster {
ClusterRoot()
: Cluster(C_Root)
, m_docInfoLink()
, m_functionNameLink()
, m_graphicTypeLink()
, m_listUnicodeLink()
, m_listClusterId(0)
, m_listClusterName()
, m_linkUnknown()
, m_fileName("")
{
for (auto &id : m_styleClusterIds) id=0;
for (auto &id : m_clusterIds) id=0;
}
~ClusterRoot() final;
int m_styleClusterIds[8];
int m_clusterIds[1];
Link m_docInfoLink;
Link m_functionNameLink;
Link m_graphicTypeLink;
Link m_listUnicodeLink;
int m_listClusterId;
NameLink m_listClusterName;
Link m_listClusterLink[3];
Link m_linkUnknown;
librevenge::RVNGString m_fileName;
};
// parser class
struct ClusterParser {
ClusterParser(RagTime5ClusterManager &parser, int type, std::string const &zoneName)
: m_parser(parser)
, m_type(type)
, m_hiLoEndian(true)
, m_name(zoneName)
, m_dataId(0)
, m_link()
{
}
virtual ~ClusterParser();
virtual std::shared_ptr<Cluster> getCluster()=0;
virtual std::string getZoneName() const
{
return m_name;
}
virtual std::string getZoneName(int n, int m=-1) const
{
std::stringstream s;
s << m_name << "-" << n;
if (m>=0)
s << "-B" << m;
return s.str();
}
virtual void startZone()
{
}
virtual bool parseZone(MWAWInputStreamPtr &/*input*/, long /*fSz*/, int /*N*/, int /*flag*/, libmwaw::DebugStream &/*f*/)
{
return false;
}
virtual void endZone()
{
}
virtual bool parseField(RagTime5StructManager::Field const &/*field*/, int /*m*/, libmwaw::DebugStream &/*f*/)
{
return false;
}
virtual int getNewZoneToParse()
{
return -1;
}
//
// some tools
//
bool isANameHeader(long N) const
{
return (m_hiLoEndian && N==int(0x80000000)) || (!m_hiLoEndian && N==0x8000);
}
bool readLinkHeader(MWAWInputStreamPtr &input, long fSz, Link &link, long(&values)[4], std::string &message);
std::string getClusterDebugName(int id);
RagTime5ClusterManager &m_parser;
int m_type;
bool m_hiLoEndian;
std::string m_name;
int m_dataId;
Link m_link;
private:
explicit ClusterParser(ClusterParser const &orig) = delete;
ClusterParser &operator=(ClusterParser const &orig) = delete;
};
protected:
std::shared_ptr<RagTime5ClusterManagerInternal::State> m_state;
RagTime5Document &m_document;
std::shared_ptr<RagTime5StructManager> m_structManager;
private:
RagTime5ClusterManager(RagTime5ClusterManager const &orig) = delete;
RagTime5ClusterManager operator=(RagTime5ClusterManager const &orig) = delete;
};
#endif
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWDebug.hxx
MWAWEntry.hxx
RagTime5StructManager.hxx
RagTime5ClusterManager::getClusterBasicHeaderInfo
bool getClusterBasicHeaderInfo(RagTime5Zone &zone, long &N, long &fSz, long &debHeaderPos)
try to return basic information about the header cluster's zone
Definition RagTime5ClusterManager.cxx:2340
RagTime5ClusterManager::setClusterName
void setClusterName(int id, librevenge::RVNGString const &name)
define a cluster name (used to associate graph name)
Definition RagTime5ClusterManager.cxx:240
RagTime5ClusterManager::readUnknownClusterC
bool readUnknownClusterC(Link const &link)
try to read some unknown cluster
Definition RagTime5ClusterManager.cxx:344
RagTime5ClusterManager::~RagTime5ClusterManager
~RagTime5ClusterManager()
destructor
Definition RagTime5ClusterManager.cxx:172
RagTime5ClusterManager::m_state
std::shared_ptr< RagTime5ClusterManagerInternal::State > m_state
the state
Definition RagTime5ClusterManager.hxx:466
RagTime5ClusterManager::readClusterGObjProperties
bool readClusterGObjProperties(RagTime5Zone &zone)
try to read a level 2 child of a cluster (picture resizing, ...)
Definition RagTime5ClusterManager.cxx:2493
RagTime5ClusterManager::readRootCluster
std::shared_ptr< Cluster > readRootCluster(RagTime5Zone &zone)
try to read the root cluster zone
Definition RagTime5ClusterManager.cxx:2531
RagTime5ClusterManager::getClusterType
int getClusterType(RagTime5Zone &zone, int fileType)
returns the local zone type
Definition RagTime5ClusterManager.cxx:2361
RagTime5ClusterManager::RagTime5ClusterManager
RagTime5ClusterManager(RagTime5ClusterManager const &orig)=delete
RagTime5ClusterManager::readCluster
bool readCluster(RagTime5Zone &zone, ClusterParser &parser, bool warnForUnparsed=true)
try to read a cluster zone
Definition RagTime5ClusterManager.cxx:365
RagTime5ClusterManager::sendClusterMainList
bool sendClusterMainList()
try to send the root cluster zone
Definition RagTime5ClusterManager.cxx:531
RagTime5ClusterManager::printType
static std::string printType(unsigned long fileType)
debug: print a file type
Definition RagTime5ClusterManager.hxx:107
RagTime5ClusterManager::m_document
RagTime5Document & m_document
the main parser
Definition RagTime5ClusterManager.hxx:468
RagTime5ClusterManager::operator=
RagTime5ClusterManager operator=(RagTime5ClusterManager const &orig)=delete
RagTime5ClusterManager::readFieldHeader
bool readFieldHeader(RagTime5Zone &zone, long endPos, std::string const &headerName, long &endDataPos, long expectedLVal=-99999)
try to read a field header, if ok set the endDataPos positions
Definition RagTime5ClusterManager.cxx:201
RagTime5ClusterManager::RagTime5ClusterManager
RagTime5ClusterManager(RagTime5Document &doc)
constructor
Definition RagTime5ClusterManager.cxx:165
RagTime5ClusterManager::m_structManager
std::shared_ptr< RagTime5StructManager > m_structManager
the structure manager
Definition RagTime5ClusterManager.hxx:470
RagTime5ClusterManager::getClusterFileType
int getClusterFileType(RagTime5Zone &zone)
try to find a cluster zone type ( heuristic when the cluster type is unknown )
Definition RagTime5ClusterManager.cxx:2443
RagTime5ClusterManager::readCluster
bool readCluster(RagTime5Zone &zone, std::shared_ptr< Cluster > &cluster, int type=-1)
try to read a cluster zone
RagTime5ClusterManager::getClusterDebugName
std::string getClusterDebugName(int id)
returns "data"+id+"A" ( followed by the cluster type and name if know)
Definition RagTime5ClusterManager.cxx:230
RagTime5ClusterManager::readClusterMainList
bool readClusterMainList(ClusterRoot &root, std::vector< int > &list, std::vector< int > const &clusterIdList)
try to read the cluster root list (in general Data14)
Definition RagTime5ClusterManager.cxx:258
RagTime5Document
the main class to read a RagTime v5 file
Definition RagTime5Document.hxx:77
RagTime5StructManager
basic class used to store RagTime 5/6 structures
Definition RagTime5StructManager.hxx:175
RagTime5StructManager::printType
static std::string printType(unsigned long fileType)
debug: print a file type
Definition RagTime5StructManager.cxx:100
RagTime5Zone
main zone in a RagTime v5-v6 document
Definition RagTime5StructManager.hxx:51
libmwaw_internal.hxx
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition libmwaw_internal.hxx:551
RagTime5ClusterManagerInternal
Internal: the structures of a RagTime5ClusterManager.
Definition RagTime5ClusterManager.cxx:50
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition MWAWDebug.hxx:61
librevenge
Definition MWAWDocument.hxx:57
RagTime5ClusterManagerInternal::State
Internal: the state of a RagTime5ClusterManager.
Definition RagTime5ClusterManager.cxx:145
RagTime5ClusterManager::ClusterParser
virtual class use to parse the cluster data
Definition RagTime5ClusterManager.hxx:381
RagTime5ClusterManager::ClusterParser::startZone
virtual void startZone()
start a new zone
Definition RagTime5ClusterManager.hxx:411
RagTime5ClusterManager::ClusterParser::parseZone
virtual bool parseZone(MWAWInputStreamPtr &, long, int, int, libmwaw::DebugStream &)
parse a zone
Definition RagTime5ClusterManager.hxx:415
RagTime5ClusterManager::ClusterParser::m_name
std::string m_name
the cluster name
Definition RagTime5ClusterManager.hxx:455
RagTime5ClusterManager::ClusterParser::ClusterParser
ClusterParser(ClusterParser const &orig)=delete
RagTime5ClusterManager::ClusterParser::operator=
ClusterParser & operator=(ClusterParser const &orig)=delete
RagTime5ClusterManager::ClusterParser::ClusterParser
ClusterParser(RagTime5ClusterManager &parser, int type, std::string const &zoneName)
constructor
Definition RagTime5ClusterManager.hxx:383
RagTime5ClusterManager::ClusterParser::endZone
virtual void endZone()
end of a start zone call
Definition RagTime5ClusterManager.hxx:420
RagTime5ClusterManager::ClusterParser::getZoneName
virtual std::string getZoneName(int n, int m=-1) const
return the debug name corresponding to a cluster
Definition RagTime5ClusterManager.hxx:402
RagTime5ClusterManager::ClusterParser::m_dataId
int m_dataId
the actual zone id
Definition RagTime5ClusterManager.hxx:457
RagTime5ClusterManager::ClusterParser::m_link
Link m_link
the actual link
Definition RagTime5ClusterManager.hxx:459
RagTime5ClusterManager::ClusterParser::isANameHeader
bool isANameHeader(long N) const
return true if N correspond to a file/script name
Definition RagTime5ClusterManager.hxx:439
RagTime5ClusterManager::ClusterParser::parseField
virtual bool parseField(RagTime5StructManager::Field const &, int, libmwaw::DebugStream &)
parse a the data of a zone, n_dataId:m
Definition RagTime5ClusterManager.hxx:424
RagTime5ClusterManager::ClusterParser::getNewZoneToParse
virtual int getNewZoneToParse()
returns to new zone to parse.
Definition RagTime5ClusterManager.hxx:430
RagTime5ClusterManager::ClusterParser::getCluster
virtual std::shared_ptr< Cluster > getCluster()=0
return the current cluster
RagTime5ClusterManager::ClusterParser::m_type
int m_type
the cluster type
Definition RagTime5ClusterManager.hxx:451
RagTime5ClusterManager::ClusterParser::m_hiLoEndian
bool m_hiLoEndian
zone endian
Definition RagTime5ClusterManager.hxx:453
RagTime5ClusterManager::ClusterParser::getZoneName
virtual std::string getZoneName() const
return the debug name corresponding to a zone
Definition RagTime5ClusterManager.hxx:397
RagTime5ClusterManager::ClusterParser::m_parser
RagTime5ClusterManager & m_parser
the main parser
Definition RagTime5ClusterManager.hxx:449
RagTime5ClusterManager::ClusterRoot
the cluster for root
Definition RagTime5ClusterManager.hxx:329
RagTime5ClusterManager::ClusterRoot::m_listClusterName
NameLink m_listClusterName
the cluster list id name zone link
Definition RagTime5ClusterManager.hxx:365
RagTime5ClusterManager::ClusterRoot::m_clusterIds
int m_clusterIds[1]
other cluster id (unknown cluster b, )
Definition RagTime5ClusterManager.hxx:351
RagTime5ClusterManager::ClusterRoot::m_listUnicodeLink
Link m_listUnicodeLink
a link to a list of unknown index+unicode string
Definition RagTime5ClusterManager.hxx:361
RagTime5ClusterManager::ClusterRoot::m_fileName
librevenge::RVNGString m_fileName
the filename if known
Definition RagTime5ClusterManager.hxx:373
RagTime5ClusterManager::ClusterRoot::m_listClusterLink
Link m_listClusterLink[3]
first the main cluster link, second list of field definition link, third in header
Definition RagTime5ClusterManager.hxx:367
RagTime5ClusterManager::ClusterRoot::ClusterRoot
ClusterRoot()
constructor
Definition RagTime5ClusterManager.hxx:331
RagTime5ClusterManager::ClusterRoot::m_linkUnknown
Link m_linkUnknown
other link: scripts and field 6
Definition RagTime5ClusterManager.hxx:370
RagTime5ClusterManager::ClusterRoot::m_functionNameLink
Link m_functionNameLink
the function name links
Definition RagTime5ClusterManager.hxx:356
RagTime5ClusterManager::ClusterRoot::m_graphicTypeLink
Link m_graphicTypeLink
the graphic type id
Definition RagTime5ClusterManager.hxx:358
RagTime5ClusterManager::ClusterRoot::m_listClusterId
int m_listClusterId
the cluster list id
Definition RagTime5ClusterManager.hxx:363
RagTime5ClusterManager::ClusterRoot::~ClusterRoot
~ClusterRoot() final
destructor
Definition RagTime5ClusterManager.cxx:184
RagTime5ClusterManager::ClusterRoot::m_styleClusterIds
int m_styleClusterIds[8]
the list of style cluster ( graph, units, unitsbis, text, format, unknown, graphcolor,...
Definition RagTime5ClusterManager.hxx:348
RagTime5ClusterManager::ClusterRoot::m_docInfoLink
Link m_docInfoLink
the doc info link
Definition RagTime5ClusterManager.hxx:354
RagTime5ClusterManager::Cluster
the cluster data
Definition RagTime5ClusterManager.hxx:261
RagTime5ClusterManager::Cluster::Type
Type
the cluster type
Definition RagTime5ClusterManager.hxx:263
RagTime5ClusterManager::Cluster::C_Unknown
@ C_Unknown
Definition RagTime5ClusterManager.hxx:276
RagTime5ClusterManager::Cluster::C_FormulaPos
@ C_FormulaPos
Definition RagTime5ClusterManager.hxx:264
RagTime5ClusterManager::Cluster::C_GraphicStyles
@ C_GraphicStyles
Definition RagTime5ClusterManager.hxx:272
RagTime5ClusterManager::Cluster::C_TextZone
@ C_TextZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_Pipeline
@ C_Pipeline
Definition RagTime5ClusterManager.hxx:264
RagTime5ClusterManager::Cluster::C_Root
@ C_Root
Definition RagTime5ClusterManager.hxx:265
RagTime5ClusterManager::Cluster::C_ColorStyles
@ C_ColorStyles
Definition RagTime5ClusterManager.hxx:272
RagTime5ClusterManager::Cluster::C_ColorPattern
@ C_ColorPattern
Definition RagTime5ClusterManager.hxx:264
RagTime5ClusterManager::Cluster::C_GroupZone
@ C_GroupZone
Definition RagTime5ClusterManager.hxx:270
RagTime5ClusterManager::Cluster::C_FormulaDef
@ C_FormulaDef
Definition RagTime5ClusterManager.hxx:264
RagTime5ClusterManager::Cluster::C_UnitStyles
@ C_UnitStyles
Definition RagTime5ClusterManager.hxx:272
RagTime5ClusterManager::Cluster::C_ChartZone
@ C_ChartZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_PictureZone
@ C_PictureZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_Sound
@ C_Sound
Definition RagTime5ClusterManager.hxx:265
RagTime5ClusterManager::Cluster::C_TextStyles
@ C_TextStyles
Definition RagTime5ClusterManager.hxx:272
RagTime5ClusterManager::Cluster::C_ClusterGProp
@ C_ClusterGProp
Definition RagTime5ClusterManager.hxx:265
RagTime5ClusterManager::Cluster::C_ClusterC
@ C_ClusterC
Definition RagTime5ClusterManager.hxx:274
RagTime5ClusterManager::Cluster::C_Empty
@ C_Empty
Definition RagTime5ClusterManager.hxx:276
RagTime5ClusterManager::Cluster::C_ButtonZone
@ C_ButtonZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_GraphicZone
@ C_GraphicZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_Layout
@ C_Layout
Definition RagTime5ClusterManager.hxx:264
RagTime5ClusterManager::Cluster::C_SpreadsheetZone
@ C_SpreadsheetZone
Definition RagTime5ClusterManager.hxx:268
RagTime5ClusterManager::Cluster::C_FormatStyles
@ C_FormatStyles
Definition RagTime5ClusterManager.hxx:272
RagTime5ClusterManager::Cluster::m_formulaLink
Link m_formulaLink
the formula cluster links (def and pos)
Definition RagTime5ClusterManager.hxx:314
RagTime5ClusterManager::Cluster::m_childLink
Link m_childLink
the child link
Definition RagTime5ClusterManager.hxx:306
RagTime5ClusterManager::Cluster::m_nameLink
NameLink m_nameLink
the name link
Definition RagTime5ClusterManager.hxx:312
RagTime5ClusterManager::Cluster::m_settingLinks
std::vector< Link > m_settingLinks
the settings links
Definition RagTime5ClusterManager.hxx:316
RagTime5ClusterManager::Cluster::m_isSent
bool m_isSent
true if the cluster was send
Definition RagTime5ClusterManager.hxx:322
RagTime5ClusterManager::Cluster::m_zoneId
int m_zoneId
the zone id
Definition RagTime5ClusterManager.hxx:300
RagTime5ClusterManager::Cluster::m_dataLink
Link m_dataLink
the main data link
Definition RagTime5ClusterManager.hxx:310
RagTime5ClusterManager::Cluster::m_hiLoEndian
bool m_hiLoEndian
the cluster hiLo endian
Definition RagTime5ClusterManager.hxx:302
RagTime5ClusterManager::Cluster::m_clusterIdsList
std::vector< int > m_clusterIdsList
the cluster ids
Definition RagTime5ClusterManager.hxx:320
RagTime5ClusterManager::Cluster::Cluster
Cluster(Type type)
constructor
Definition RagTime5ClusterManager.hxx:279
RagTime5ClusterManager::Cluster::m_name
librevenge::RVNGString m_name
the cluster name (if know)
Definition RagTime5ClusterManager.hxx:304
RagTime5ClusterManager::Cluster::m_type
Type m_type
the cluster type
Definition RagTime5ClusterManager.hxx:298
RagTime5ClusterManager::Cluster::m_linksList
std::vector< Link > m_linksList
the link list
Definition RagTime5ClusterManager.hxx:318
RagTime5ClusterManager::Cluster::~Cluster
virtual ~Cluster()
destructor
Definition RagTime5ClusterManager.cxx:176
RagTime5ClusterManager::Cluster::m_parentLink
Link m_parentLink
the parent link
Definition RagTime5ClusterManager.hxx:308
RagTime5ClusterManager::Link
a link to a small zone (or set of zones) in RagTime 5/6 documents
Definition RagTime5ClusterManager.hxx:113
RagTime5ClusterManager::Link::m_type
Type m_type
the link type
Definition RagTime5ClusterManager.hxx:206
RagTime5ClusterManager::Link::m_N
int m_N
the number of data ( or some flag if m_N & 0x8020)
Definition RagTime5ClusterManager.hxx:212
RagTime5ClusterManager::Link::m_longList
std::vector< long > m_longList
a list of long used to store decal
Definition RagTime5ClusterManager.hxx:218
RagTime5ClusterManager::Link::operator<<
friend std::ostream & operator<<(std::ostream &o, Link const &z)
operator<<
Definition RagTime5ClusterManager.hxx:185
RagTime5ClusterManager::Link::m_name
std::string m_name
the link name
Definition RagTime5ClusterManager.hxx:208
RagTime5ClusterManager::Link::getZoneName
std::string getZoneName() const
returns the zone name
Definition RagTime5ClusterManager.hxx:142
RagTime5ClusterManager::Link::m_fileType
unsigned long m_fileType[2]
the zone type in file
Definition RagTime5ClusterManager.hxx:216
RagTime5ClusterManager::Link::empty
bool empty() const
returns true if all link are empty
Definition RagTime5ClusterManager.hxx:133
RagTime5ClusterManager::Link::Link
Link(Type type=L_Unknown)
constructor
Definition RagTime5ClusterManager.hxx:122
RagTime5ClusterManager::Link::m_ids
std::vector< int > m_ids
the data ids
Definition RagTime5ClusterManager.hxx:210
RagTime5ClusterManager::Link::m_fieldSize
int m_fieldSize
the field size
Definition RagTime5ClusterManager.hxx:214
RagTime5ClusterManager::Link::Type
Type
the link type
Definition RagTime5ClusterManager.hxx:115
RagTime5ClusterManager::Link::L_LongList
@ L_LongList
Definition RagTime5ClusterManager.hxx:116
RagTime5ClusterManager::Link::L_UnicodeList
@ L_UnicodeList
Definition RagTime5ClusterManager.hxx:116
RagTime5ClusterManager::Link::L_UnknownClusterC
@ L_UnknownClusterC
Definition RagTime5ClusterManager.hxx:118
RagTime5ClusterManager::Link::L_ClusterLink
@ L_ClusterLink
Definition RagTime5ClusterManager.hxx:115
RagTime5ClusterManager::Link::L_List
@ L_List
Definition RagTime5ClusterManager.hxx:117
RagTime5ClusterManager::Link::L_Unknown
@ L_Unknown
Definition RagTime5ClusterManager.hxx:119
RagTime5ClusterManager::Link::L_FieldsList
@ L_FieldsList
Definition RagTime5ClusterManager.hxx:117
RagTime5ClusterManager::NameLink
a link to a name zone in RagTime 5/6 documents
Definition RagTime5ClusterManager.hxx:222
RagTime5ClusterManager::NameLink::empty
bool empty() const
returns true if all link are empty
Definition RagTime5ClusterManager.hxx:238
RagTime5ClusterManager::NameLink::m_posToNames
std::vector< long > m_posToNames[2]
for unicode list field ids and field id to name
Definition RagTime5ClusterManager.hxx:251
RagTime5ClusterManager::NameLink::m_ids
std::vector< int > m_ids
the data ids
Definition RagTime5ClusterManager.hxx:245
RagTime5ClusterManager::NameLink::m_N
int m_N
the number of data
Definition RagTime5ClusterManager.hxx:247
RagTime5ClusterManager::NameLink::m_decalList
std::vector< long > m_decalList
a list of long used to store decal
Definition RagTime5ClusterManager.hxx:249
RagTime5ClusterManager::NameLink::m_posToNamesLinks
Link m_posToNamesLinks[2]
the corresponding link (for big list)
Definition RagTime5ClusterManager.hxx:253
RagTime5ClusterManager::NameLink::NameLink
NameLink(Link const &lnk)
constructor from list
Definition RagTime5ClusterManager.hxx:231
RagTime5ClusterManager::NameLink::NameLink
NameLink()
default constructor
Definition RagTime5ClusterManager.hxx:224
RagTime5StructManager::Field
a field of RagTime 5/6 structures
Definition RagTime5StructManager.hxx:242