diff --git a/src/container_array.hh b/src/container_array.hh new file mode 100644 index 0000000..1897139 --- /dev/null +++ b/src/container_array.hh @@ -0,0 +1,117 @@ +#ifndef __IOHELPER_CONTAINER_ARRAY_HH__ +#define __IOHELPER_CONTAINER_ARRAY_HH__ +/* -------------------------------------------------------------------------- */ + +__BEGIN_IOHELPER__ +/* -------------------------------------------------------------------------- */ + +template +class IOHelperVector { + +public: + + inline IOHelperVector(T * ptr, UInt size){ + this->ptr = ptr; + this->_size = size; + }; + + inline UInt size() const {return _size;}; + + inline const T & operator[] (UInt i) const { + return ptr[i]; + }; + +private: + + T* ptr; + UInt _size; +}; + +/* -------------------------------------------------------------------------- */ +template +class ContainerArray { + /* ------------------------------------------------------------------------ */ + /* Typedefs */ + /* ------------------------------------------------------------------------ */ + +public: + + class iterator { + + public: + + iterator(T * ptr, UInt dimension, UInt increment){ + this->ptr = ptr; + this->increment = increment; + this->dimension = dimension; + }; + + bool operator !=(iterator & it){return it.ptr != this->ptr;}; + + void operator ++(){ptr += increment;}; + + IOHelperVector operator *(){ + return IOHelperVector(ptr,increment); + }; + + private: + + T * ptr; + UInt increment; + UInt dimension; + }; + + + /* ------------------------------------------------------------------------ */ + /* Constructors/Destructors */ + /* ------------------------------------------------------------------------ */ +public: + + ContainerArray(T * data, UInt dimension, UInt size, UInt stride=1){ + this->data = data; + this->dimension = dimension; + this->_size = size; + this->stride = stride; + }; + + virtual ~ContainerArray(){}; + + /* ------------------------------------------------------------------------ */ + /* Methods */ + /* ------------------------------------------------------------------------ */ + + iterator begin(){ + return iterator(data,dimension,stride*dimension); + }; + iterator end(){ + return iterator(data+_size*dimension*stride,dimension,stride*dimension); + }; + + UInt getDim(){return dimension;}; + UInt size(){return _size;}; + bool isHomogeneous(){return true;}; + +public: + + /* ------------------------------------------------------------------------ */ + /* Accessors */ + /* ------------------------------------------------------------------------ */ +public: + + /* ------------------------------------------------------------------------ */ + /* Class Members */ + /* ------------------------------------------------------------------------ */ +private: + + T * data; + UInt dimension; + UInt stride; + UInt _size; +}; + +/* -------------------------------------------------------------------------- */ + + +__END_IOHELPER__ + +#endif /* __IOHELPER_ITERATOR_ARRAY_HH__ */ diff --git a/src/iterator_array.hh b/src/iterator_array.hh new file mode 100644 index 0000000..db157b7 --- /dev/null +++ b/src/iterator_array.hh @@ -0,0 +1,80 @@ +#ifndef __IOHELPER_ITERATOR_ARRAY_HH__ +#define __IOHELPER_ITERATOR_ARRAY_HH__ +/* -------------------------------------------------------------------------- */ + +__BEGIN_IOHELPER__ + +template +class StridedArray { + + /* ------------------------------------------------------------------------ */ + /* Constructors/Destructors */ + /* ------------------------------------------------------------------------ */ + + StridedArray(UInt stride); + + UInt getDim(); + +} +/* -------------------------------------------------------------------------- */ + + +template +class IteratorArray { + /* ------------------------------------------------------------------------ */ + /* Typedefs */ + /* ------------------------------------------------------------------------ */ + + typedef iterator + + /* ------------------------------------------------------------------------ */ + /* Constructors/Destructors */ + /* ------------------------------------------------------------------------ */ +public: + + IteratorArray(T * data, UInt dimension, UInt stride){ + this->data = data; + this->dimension = dimension; + this->stride = stride; + }; + virtual ~IteratorArray(); + + /* ------------------------------------------------------------------------ */ + /* Methods */ + /* ------------------------------------------------------------------------ */ +public: + + + + /* ------------------------------------------------------------------------ */ + /* Accessors */ + /* ------------------------------------------------------------------------ */ +public: + + /* ------------------------------------------------------------------------ */ + /* Class Members */ + /* ------------------------------------------------------------------------ */ +private: + + T * data; + UInt dimension; + UInt stride; +}; + + +/* -------------------------------------------------------------------------- */ +/* inline functions */ +/* -------------------------------------------------------------------------- */ + +#include "iterator_array_inline_impl.cc" + +/// standard output stream operator +inline std::ostream & operator <<(std::ostream & stream, const IteratorArray & _this) +{ + _this.printself(stream); + return stream; +} + +__END_IOHELPER__ + +#endif /* __IOHELPER_ITERATOR_ARRAY_HH__ */ diff --git a/src/paraview_helper.cc b/src/paraview_helper.cc new file mode 100644 index 0000000..6f364dd --- /dev/null +++ b/src/paraview_helper.cc @@ -0,0 +1,164 @@ +#include "paraview_helper.hh" +/* -------------------------------------------------------------------------- */ + +__BEGIN_IOHELPER__ + +ParaviewHelper::ParaviewHelper(File & f, UInt mode): + file(f), b64(f){ + bflag = BASE64; + compteur = 0; + setMode(mode); +} +/* -------------------------------------------------------------------------- */ + + +ParaviewHelper::~ParaviewHelper(){ +} + + +/* -------------------------------------------------------------------------- */ + +void ParaviewHelper::writeHeader(int nb_nodes,int nb_elems){ + + file << "\n"); */ + /* #else */ + file << "byte_order=\"LittleEndian\">" << std::endl; + /* #endif */ + file << "\n" << std::endl; +} + + +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::PDataArray(const std::string & name,int nb_components){ + file << "" <" << std::endl; +} +/* -------------------------------------------------------------------------- */ + + + +void ParaviewHelper::write_conclusion(){ + file << "" << std::endl; + file << "" << std::endl; + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + +void ParaviewHelper::startData(const std::string & name, + int nb_components, + const std::string & type){ + + file << "" << std::endl; + else file << "format=\"ascii\">" << std::endl; + if (bflag == BASE64) b64.CreateHeader(); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endData(){ + if (bflag == BASE64) b64.WriteHeader(); + + file << std::endl << "" << std::endl; +} + +/* -------------------------------------------------------------------------- */ + + + +void ParaviewHelper::startDofList(int dimension){ + file << "" << std::endl; + startData("positions",dimension); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endDofList(){ + endData(); + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + +void ParaviewHelper::startCells(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + +void ParaviewHelper::endCells(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + +void ParaviewHelper::startCellsConnectivityList(){ + startData("connectivity",0,"Int32"); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endCellsConnectivityList(){ + endData(); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::startCellsoffsetsList(){ + startData("offsets",0,"Int32"); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endCellsoffsetsList(){ + endData(); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::startCellstypesList(){ + startData("types",0,"UInt32"); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endCellstypesList(){ + endData(); +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::startPointDataList(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endPointDataList(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::startCellDataList(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + + +void ParaviewHelper::endCellDataList(){ + file << "" << std::endl; +} +/* -------------------------------------------------------------------------- */ + + +__END_IOHELPER__ + diff --git a/src/visitor.hh b/src/visitor.hh new file mode 100644 index 0000000..3b11b0d --- /dev/null +++ b/src/visitor.hh @@ -0,0 +1,37 @@ +#ifndef __IOHELPER_VISITOR_HH__ +#define __IOHELPER_VISITOR_HH__ +/* -------------------------------------------------------------------------- */ + +__BEGIN_IOHELPER__ + +class Visitor { + /* ------------------------------------------------------------------------ */ + /* Constructors/Destructors */ + /* ------------------------------------------------------------------------ */ +public: + + Visitor(){}; + virtual ~Visitor(){}; + + /* ------------------------------------------------------------------------ */ + /* Methods */ + /* ------------------------------------------------------------------------ */ +public: + + /* ------------------------------------------------------------------------ */ + /* Accessors */ + /* ------------------------------------------------------------------------ */ +public: + + /* ------------------------------------------------------------------------ */ + /* Class Members */ + /* ------------------------------------------------------------------------ */ +private: + +}; + +/* -------------------------------------------------------------------------- */ + +__END_IOHELPER__ + +#endif /* __IOHELPER_VISITOR_HH__ */