RagTime5Formula.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.
*/
/*
* Parser to RagTime 5-6 document ( formula part )
*
*/
#ifndef RAGTIME5_FORMULA
# define RAGTIME5_FORMULA
#include <set>
#include <string>
#include <map>
#include <vector>
#include <librevenge/librevenge.h>
#include "libmwaw_internal.hxx"
#include "MWAWCell.hxx"
#include "MWAWDebug.hxx"
#include "MWAWInputStream.hxx"
#include "MWAWPosition.hxx"
#include "RagTime5StructManager.hxx"
#include "RagTime5ClusterManager.hxx"
namespace RagTime5FormulaInternal
{
struct ClusterFormula;
struct State;
}
class RagTime5Document;
class RagTime5StructManager;
class RagTime5Zone;
class RagTime5Formula
{
friend class RagTime5Document;
public:
explicit RagTime5Formula(RagTime5Document &doc);
virtual ~RagTime5Formula();
int version() const;
// interface with main parser
bool readFormulaClusters(RagTime5ClusterManager::Link const &link, int sheetId);
std::set<unsigned long> const &getFunctionsId() const;
protected:
//
// Intermediate level
//
bool readFunctionNames(RagTime5ClusterManager::Link const &link);
bool readFormulaZones(RagTime5ClusterManager::Cluster &cluster, RagTime5ClusterManager::Link const &link, int sheetId, bool isDefinition);
bool readFormulaDefinition(RagTime5Zone &zone, long endPos, int sheetId, int n, std::vector<MWAWCellContent::FormulaInstruction> &formula);
bool readFormulaPosition(RagTime5Zone &zone, long endPos, int n);
//
// low level
//
bool readFormula(MWAWInputStreamPtr &input, std::vector<MWAWCellContent::FormulaInstruction> &formula,
long const(&limitPos)[5], std::vector<std::string> const &functions, std::vector<MWAWCellContent::FormulaInstruction> const &cells, libmwaw::DebugStream &f) const;
bool readFormula2(MWAWInputStreamPtr &input, long const(&limitPos)[5], std::vector<std::string> const &functions, std::vector<MWAWCellContent::FormulaInstruction> const &cells, libmwaw::DebugStream &f) const;
//
// send data
//
public:
static std::string printType(unsigned long fileType)
{
return RagTime5StructManager::printType(fileType);
}
private:
RagTime5Formula(RagTime5Formula const &orig) = delete;
RagTime5Formula &operator=(RagTime5Formula const &orig) = delete;
protected:
//
// data
//
RagTime5Document &m_document;
std::shared_ptr<RagTime5StructManager> m_structManager;
MWAWParserStatePtr m_parserState;
std::shared_ptr<RagTime5FormulaInternal::State> m_state;
};
#endif
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWCell.hxx
Defines MWAWCell (cell content and format).
MWAWDebug.hxx
MWAWInputStream.hxx
MWAWPosition.hxx
RagTime5ClusterManager.hxx
RagTime5StructManager.hxx
RagTime5Document
the main class to read a RagTime v5 file
Definition RagTime5Document.hxx:77
RagTime5Formula::m_state
std::shared_ptr< RagTime5FormulaInternal::State > m_state
the state
Definition RagTime5Formula.hxx:149
RagTime5Formula::RagTime5Formula
RagTime5Formula(RagTime5Document &doc)
constructor
Definition RagTime5Formula.cxx:356
RagTime5Formula::RagTime5Formula
RagTime5Formula(RagTime5Formula const &orig)=delete
RagTime5Formula::m_document
RagTime5Document & m_document
the parser
Definition RagTime5Formula.hxx:141
RagTime5Formula::~RagTime5Formula
virtual ~RagTime5Formula()
destructor
Definition RagTime5Formula.cxx:364
RagTime5Formula::m_parserState
MWAWParserStatePtr m_parserState
the parser state
Definition RagTime5Formula.hxx:146
RagTime5Formula::m_structManager
std::shared_ptr< RagTime5StructManager > m_structManager
the structure manager
Definition RagTime5Formula.hxx:144
RagTime5Formula::readFormulaPosition
bool readFormulaPosition(RagTime5Zone &zone, long endPos, int n)
try to read a formula position
Definition RagTime5Formula.cxx:1246
RagTime5Formula::operator=
RagTime5Formula & operator=(RagTime5Formula const &orig)=delete
RagTime5Formula::readFormula
bool readFormula(MWAWInputStreamPtr &input, std::vector< MWAWCellContent::FormulaInstruction > &formula, long const(&limitPos)[5], std::vector< std::string > const &functions, std::vector< MWAWCellContent::FormulaInstruction > const &cells, libmwaw::DebugStream &f) const
try to read a formula
Definition RagTime5Formula.cxx:537
RagTime5Formula::readFormulaZones
bool readFormulaZones(RagTime5ClusterManager::Cluster &cluster, RagTime5ClusterManager::Link const &link, int sheetId, bool isDefinition)
try to read a list of formula definition
Definition RagTime5Formula.cxx:423
RagTime5Formula::RagTime5Document
friend class RagTime5Document
Definition RagTime5Formula.hxx:75
RagTime5Formula::printType
static std::string printType(unsigned long fileType)
debug: print a file type
Definition RagTime5Formula.hxx:127
RagTime5Formula::readFormulaClusters
bool readFormulaClusters(RagTime5ClusterManager::Link const &link, int sheetId)
try to read some formula cluster
Definition RagTime5Formula.cxx:386
RagTime5Formula::getFunctionsId
std::set< unsigned long > const & getFunctionsId() const
returns the set of function id in fields
Definition RagTime5Formula.cxx:373
RagTime5Formula::readFormula2
bool readFormula2(MWAWInputStreamPtr &input, long const(&limitPos)[5], std::vector< std::string > const &functions, std::vector< MWAWCellContent::FormulaInstruction > const &cells, libmwaw::DebugStream &f) const
try to read a formula (second zone)
Definition RagTime5Formula.cxx:874
RagTime5Formula::readFunctionNames
bool readFunctionNames(RagTime5ClusterManager::Link const &link)
try to read the functions name
Definition RagTime5Formula.cxx:378
RagTime5Formula::readFormulaDefinition
bool readFormulaDefinition(RagTime5Zone &zone, long endPos, int sheetId, int n, std::vector< MWAWCellContent::FormulaInstruction > &formula)
try to read a formula definition
Definition RagTime5Formula.cxx:1009
RagTime5Formula::version
int version() const
returns the file version
Definition RagTime5Formula.cxx:368
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
MWAWParserStatePtr
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition libmwaw_internal.hxx:557
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition libmwaw_internal.hxx:551
RagTime5FormulaInternal
Internal: the structures of a RagTime5Formula.
Definition RagTime5Formula.cxx:64
libmwaw::DebugStream
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition MWAWDebug.hxx:61
RagTime5ClusterManager::Cluster
the cluster data
Definition RagTime5ClusterManager.hxx:261
RagTime5ClusterManager::Link
a link to a small zone (or set of zones) in RagTime 5/6 documents
Definition RagTime5ClusterManager.hxx:113
RagTime5FormulaInternal::State
Internal: the state of a RagTime5Formula.
Definition RagTime5Formula.cxx:67