diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e809444e..31049334 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,4 +14,4 @@ add_subdirectory(phasicFlow) #add_subdirectory(Geometry) -add_subdirectory(MPIParallelization) +#add_subdirectory(MPIParallelization) diff --git a/src/phasicFlow/CMakeLists.txt b/src/phasicFlow/CMakeLists.txt index 6ebacce2..5114f190 100644 --- a/src/phasicFlow/CMakeLists.txt +++ b/src/phasicFlow/CMakeLists.txt @@ -27,6 +27,12 @@ streams/streams.cpp fileSystem/fileSystem.cpp processors/processors.cpp + +dictionary/dictionary.cpp +dictionary/entry/iEntry.cpp +dictionary/entry/dataEntry.cpp +dictionary/twoPartEntry/twoPartEntry.cpp + ) set(link_libs) diff --git a/src/phasicFlow/dictionary/dictionary.cpp b/src/phasicFlow/dictionary/dictionary.cpp index 4d9f5464..a52d1d76 100644 --- a/src/phasicFlow/dictionary/dictionary.cpp +++ b/src/phasicFlow/dictionary/dictionary.cpp @@ -468,15 +468,6 @@ bool pFlow::dictionary::add return addPtr(keyword, ptr); } -bool pFlow::dictionary::add -( - const word& keyword, - const int16& v -) -{ - uniquePtr ptr = makeUnique(keyword, *this, token(v)); - return addPtr(keyword, ptr); -} bool pFlow::dictionary::add ( @@ -491,7 +482,7 @@ bool pFlow::dictionary::add bool pFlow::dictionary::add ( const word& keyword, - const label& v + const uint64& v ) { uniquePtr ptr = makeUnique(keyword, *this, token(v)); @@ -508,6 +499,15 @@ bool pFlow::dictionary::add return addPtr(keyword, ptr); } +bool pFlow::dictionary::add +( + const word& keyword, + const uint8& v +) +{ + uniquePtr ptr = makeUnique(keyword, *this, token(v)); + return addPtr(keyword, ptr); +} bool pFlow::dictionary::addDict ( diff --git a/src/phasicFlow/dictionary/dictionary.hpp b/src/phasicFlow/dictionary/dictionary.hpp index 3ad26c06..661882d5 100644 --- a/src/phasicFlow/dictionary/dictionary.hpp +++ b/src/phasicFlow/dictionary/dictionary.hpp @@ -34,7 +34,36 @@ Licence: namespace pFlow { - +/** + * Dictionary holds a set of data entries or sub-dictionaries that are enclosed + * in a curely braces or are in a file. + * + * data entry format is: + * ``` + * entryName value; + * ``` + * and a dictionary in a file can be: + * ``` + * entryName2 value2; + * + * entryName3 value3; + * + * subDict1 + * { + * entryName4 value4; + * + * .... + * + * } + * + * subDict2 + * { + * ... + * } + * + * ``` + * + */ class dictionary : public iEntry @@ -43,39 +72,39 @@ protected: //// - Data members - // global name of dictionary, separated with dots + /// global name of dictionary, separated with dots word name_; - // all the entries (data and dictionary) of the current dictionary + /// all the entries (data and dictionary) of the current dictionary wordOrderedMapPtr entries_; - // entries in order of insertion + /// entries in order of insertion List orderedEntries_; - // - ref to parrent dictionary + /// ref to parrent dictionary const dictionary& parDict_; bool isGlobal_; - //// - protected methods + ///// protected methods - // - find an entry based on keyword - // return nullptr if not found + /// find an entry based on keyword + /// return nullptr if not found iEntry* findEntry(const word& keyword); - // - find and entry based on keyword - // return nullptr if not found + /// find and entry based on keyword + /// return nullptr if not found iEntry* findEntry(const word& keyword)const; - // - reads a dataEntry with keyword from dictionary + /// reads a dataEntry with keyword from dictionary template bool readDataEntry( const word& keyword, T& val)const; - // - read dictionary from stream - without keyword + /// read dictionary from stream - without keyword bool readDictionary(iIstream & is); - // - write dictionary to stream - with keyword + /// write dictionary to stream - with keyword bool writeDictionary(iOstream& os, bool withBlock = true)const; @@ -88,184 +117,184 @@ public: //// - Constructors - // - cunstructs a null dictionary + /// cunstructs a null dictionary dictionary(); - // - construct an empty dictionary with keyword + /// construct an empty dictionary with keyword dictionary(const word& keyword); - // - construct an empty dictionary with keyword and make it global/fileDictionary (if true) + /// construct an empty dictionary with keyword and make it global/fileDictionary (if true) dictionary(const word& keyword, bool global); - // - construct a dictionary with name and read it from file + /// construct a dictionary with name and read it from file dictionary(const word& keyword, const fileSystem& file); - // - cunstruct an empty dictionary with keyword and parDict + /// cunstruct an empty dictionary with keyword and parDict dictionary(const word& keyword, const dictionary& parDict); - // - cunstruct a dictionary with keyword and parDict and from stream + /// cunstruct a dictionary with keyword and parDict and from stream dictionary( const word& keyword, const dictionary& parDict, iIstream& is); - // - copy construct with keyword and new parrent dict - // discard the keyword and parDict of dict + /// copy construct with keyword and new parrent dict + /// discard the keyword and parDict of dict dictionary(const word& keyword, const dictionary& parDict, const dictionary& dict); - // - copy construct as default behavior - // entries_ are copied smoothly. set parrent dict to nullDict + /// copy construct as default behavior + /// entries_ are copied smoothly. set parrent dict to nullDict dictionary(const dictionary& ); - // - assignment preserve name of this dictionary - // - only entries are transfered with ownership + /// assignment preserve name of this dictionary + /// only entries are transfered with ownership dictionary& operator=(const dictionary& rhs); //// - Methods - // - pointer to this dictionary + /// pointer to this dictionary virtual dictionary* dictPtr(); - // - pointer to this dictionary + /// pointer to this dictionary virtual const dictionary* dictPtr() const; - // - if this is a dictionary + /// if this is a dictionary virtual bool isDictionary() const; - // - global name of entry, separated with dots + /// global name of entry, separated with dots virtual word globalName()const; - // - const ref to parrent dictionary + /// const ref to parrent dictionary virtual const dictionary& parrentDict() const; - // - ref to this dictionary, if it is a dictionary + /// ref to this dictionary, if it is a dictionary virtual dictionary& dict(); - // - const ref to this dictionary, if it is a dictionary + /// const ref to this dictionary, if it is a dictionary virtual const dictionary& dict() const; - // - if dictionary is file dictionary, return false + /// if dictionary is file dictionary, return false virtual bool isFileDict()const; - // - add a pointer entry (dictionary/dataEntry) + /// add a pointer entry (dictionary/dataEntry) // replaces this entry with existing one bool addPtr(const word& keyword, uniquePtr& etry ); - // - add a float dataEntry + /// add a float dataEntry bool add(const word& keyword, const float& v); - // - add a double dataEntry + /// add a double dataEntry bool add(const word& keyword, const double& v); - // - add a word dataEntry + /// add a word dataEntry bool add(const word& keyword, const word& v); - // - add a int64 dataEntry + /// add a int64 dataEntry bool add(const word& keyword, const int64& v); - // - add a int32 dataEntry + /// add a int32 dataEntry bool add(const word& keyword, const int32& v); - // - add a int16 dataEntry - bool add(const word& keyword, const int16& v); - - // - add a int8 dataEntry + /// add a int8 dataEntry bool add(const word& keyword, const int8& v); - // - add a label dataEntry - bool add(const word& keyword, const label& v); + /// add a uint64 dataEntry + bool add(const word& keyword, const uint64& v); - // - add a uint32 dataEntry + /// add a uint32 dataEntry bool add(const word& keyword, const uint32& v); + /// add a uint8 dataEntry + bool add(const word& keyword, const uint8& v); + // add a dictionary with the specifiedd keyword bool addDict(const word& keyword, const dictionary& dict); - // - add a dataEntry of type T + /// add a dataEntry of type T template bool add(const word& keyword, const T& v ); void clear(); - // - pointer to a subdictionary - // fatalExit if not found + /// pointer to a subdictionary + /// fatalExit if not found dictionary* subDictPtr(const word& keyword); - // - ref to a subdictioanry - // fatalExit if not found + /// ref to a subdictioanry + /// fatalExit if not found dictionary& subDict(const word& keyword); - // - const ref to a subdictioanry - // fatalExit if not found + /// const ref to a subdictioanry + /// fatalExit if not found const dictionary& subDict(const word& keyword) const; - // - pointer to a dataEntry - // fatalExit if not found/not a dataEntry + /// pointer to a dataEntry + /// fatalExit if not found/not a dataEntry dataEntry* dataEntryPtr(const word& keyword); - // - ref to a subdictioanry - // fatalExit if not found/not a dataEntry + /// ref to a subdictioanry + /// fatalExit if not found/not a dataEntry dataEntry& dataEntryRef(const word& keyword); - // - const ref to a subdictioanry - // fatalExit if not found/not a dataEntry + /// const ref to a subdictioanry + /// fatalExit if not found/not a dataEntry const dataEntry& dataEntryRef(const word& keyword)const; - // - search for a sub-dict with keyword - // create a new sub-dict if not found and return a ref to it - // fatalExit if fails + /// search for a sub-dict with keyword + /// create a new sub-dict if not found and return a ref to it + /// fatalExit if fails dictionary& subDictOrCreate(const word& keyword); - // - get the value of data entry + /// get the value of data entry template T getVal(const word& keyword) const; - // - get the value of data entry or - // if not found, set the value to setVal + /// get the value of data entry or + /// if not found, set the value to setVal template T getValOrSet(const word& keyword, const T& setVal)const; - // return number of entris in this dictionary + /// return number of entris in this dictionary size_t numEntries()const; - // return number of non-nullptr dataEntries + /// return number of non-nullptr dataEntries size_t numDataEntries()const; - // return number of non-nullptr dictionaries + /// return number of non-nullptr dictionaries size_t numDictionaries()const; - // return all keywords (non-nullptr) in this dictionary + /// return all keywords (non-nullptr) in this dictionary wordList allKeywords()const; - // return a list of all dataEntries (non-nullptr) keywords + /// return a list of all dataEntries (non-nullptr) keywords wordList dataEntryKeywords()const; - // return a list of all dictionary (non-null) keywords + /// return a list of all dictionary (non-null) keywords wordList dictionaryKeywords()const; - // check if a sub-dictionary exists + /// check if a sub-dictionary exists bool containsDictionay(const word& name)const; - // check if a data entry exist + /// check if a data entry exist bool containsDataEntry(const word& name)const; - // clone polymorphic object (here dictionary) + /// clone polymorphic object (here dictionary) virtual uniquePtr clone() const; virtual iEntry* clonePtr() const; - // - clone the polymorhpic object with parDict as the new parrent dictionary + /// clone the polymorhpic object with parDict as the new parrent dictionary virtual uniquePtr clone(const dictionary& parDict)const; virtual iEntry* clonePtr(const dictionary& parDict) const; - //// IO operations + //// - IO operations - // - read from stream + /// read from stream virtual bool read(iIstream& is); - // - write to stream + /// write to stream virtual bool write(iOstream& os) const; }; @@ -338,7 +367,8 @@ T dictionary::getValOrSet } } -} + +} // pFlow #endif // __dictionary_hpp__ diff --git a/src/phasicFlow/dictionary/entry/dataEntry.hpp b/src/phasicFlow/dictionary/entry/dataEntry.hpp index 76a6d793..d7c29447 100644 --- a/src/phasicFlow/dictionary/entry/dataEntry.hpp +++ b/src/phasicFlow/dictionary/entry/dataEntry.hpp @@ -36,7 +36,15 @@ namespace pFlow class dictionary; - +/** + * Data entry to be used in dictionries. Its format is: + * + * ``` + * entryName value; + * + * entryName2 (list of values); + * ``` + */ class dataEntry : public iEntry @@ -46,19 +54,19 @@ protected: //// - data memebers - // - ref to parrent dictionary + /// ref to parrent dictionary const dictionary& parDict_; - // - list the tokens as input token stream + /// list the tokens as input token stream iTstream tokenStream_; //// - protected member functions - // - read dataEntry from stream + /// read dataEntry from stream bool readDataEntry(iIstream& is); - // - write dataEntry to stream + /// write dataEntry to stream bool writeDataEntry(iOstream& os) const; public: @@ -67,57 +75,57 @@ public: //// - constructors - // - construct null dataEntry + /// construct null dataEntry dataEntry(); - // - construct from keyword and parDict, empty dataEntry + /// construct from keyword and parDict, empty dataEntry dataEntry(const word& keyword, const dictionary& parDict); - // - construct from keyword, parDict and input token stream + /// construct from keyword, parDict and input token stream dataEntry(const word& keyWord, const dictionary& parDict, const iTstream& is); //- construct from keyword, parDict and input stream dataEntry(const word& keyWord, const dictionary& parDict, iIstream& is); - // - construct from keyword, parDict and a single token + /// construct from keyword, parDict and a single token dataEntry(const word& keyword, const dictionary& parDict, const token& tok); - // - construct from keyword, parDict, and data of type T + /// construct from keyword, parDict, and data of type T template dataEntry(const word& keyword, const dictionary& parDict, const T& v); - // - copy construct with new keyword and parDict + /// copy construct with new keyword and parDict dataEntry(const word& keyword, const dictionary& parDict, const dataEntry& entry ); - // - copy construct + /// copy construct dataEntry(const dataEntry& src )= default; //// - Methods - // - global name of entry, separated with dots + /// global name of entry, separated with dots virtual word globalName()const; - // - access to token stream + /// access to token stream virtual iTstream& stream(); - // - not permited to be called + /// not permited to be called virtual dictionary* dictPtr(); - // - not permited to be called + /// not permited to be called virtual const dictionary* dictPtr() const; - // - should returen false; + /// should returen false; virtual bool isDictionary()const; - // - const ref to parrent dictionary + /// const ref to parrent dictionary virtual const dictionary& parrentDict() const; - // - not permited to be called + /// not permited to be called virtual dictionary& dict(); - // - not permited to be called + /// not permited to be called virtual const dictionary& dict() const; // clone the object @@ -132,10 +140,10 @@ public: //// - IO operations - // - read from stream + /// read from stream virtual bool read(iIstream& is); - // - write to stream + /// write to stream virtual bool write(iOstream& os) const; }; diff --git a/src/phasicFlow/dictionary/entry/iEntry.hpp b/src/phasicFlow/dictionary/entry/iEntry.hpp index c2e3bfa4..359131d4 100644 --- a/src/phasicFlow/dictionary/entry/iEntry.hpp +++ b/src/phasicFlow/dictionary/entry/iEntry.hpp @@ -35,6 +35,10 @@ namespace pFlow class dictionary; +/** + * Interface calss for data entry and dictionary + * + */ class iEntry { @@ -42,10 +46,10 @@ public: //// - public static methods - // - read a keyword from stream + /// read a keyword from stream static bool readKeyword(iIstream &is, word& keyword, token& tok ); - // - create an entry (dataEntry or dictionary) from stream + /// create an entry (dataEntry or dictionary) from stream static bool createEntry(dictionary& parDict, iIstream& is, bool hasBlockToken = false); protected: @@ -57,41 +61,42 @@ protected: public: - + /// Type info TypeInfo("iEntry"); //// - Constructors - // - empty constructor + /// empty constructor iEntry() {} - // - construct with a keyword + /// construct with a keyword iEntry(const word& key) { // this moved here due to a very strange core dumped error! keyword_ = key; } - // - destructor + /// destructor virtual ~iEntry() {} //// - Methods - // - return keyword + /// return keyword virtual const word& keyword() const { return keyword_; } - // - return keyword + /// return keyword virtual word& keyword() { return keyword_; } + /// name/keyword of entry virtual word name()const { return keyword(); @@ -100,49 +105,50 @@ public: // global name of entry, separated with dots virtual word globalName()const = 0; - // - pointer to this dictionary + /// pointer to this dictionary virtual dictionary* dictPtr() { return nullptr; } - // - const pointer to this dictionary + /// const pointer to this dictionary virtual const dictionary* dictPtr() const { return nullptr; } - // - if this is a dictionary + /// if this is a dictionary virtual bool isDictionary() const { return false; } - // - const ref to parrent dictionary + /// const ref to parrent dictionary virtual const dictionary& parrentDict() const = 0; - // - ref to this dictionary, if it is a dictionary + /// ref to this dictionary, if it is a dictionary virtual dictionary& dict() = 0; - // - const ref to this dictionary, if it is a dicrionary + /// const ref to this dictionary, if it is a dicrionary virtual const dictionary& dict() const = 0; - // clone the object + /// clone the object virtual iEntry* clonePtr() const = 0; virtual uniquePtr clone() const = 0; - // clone the object and change its ownership to parDict + /// clone the object and change its ownership to parDict virtual iEntry* clonePtr(const dictionary& parDict) const = 0; + /// clone the object and change its ownership to parDict virtual uniquePtr clone(const dictionary& parDict)const = 0; //// - IO operatoins - // read from stream + /// read from stream virtual bool read(iIstream& is) = 0; - // write to stream + /// write to stream virtual bool write(iOstream& os) const =0; }; @@ -150,11 +156,10 @@ public: iOstream& operator << (iOstream& os, const iEntry& e); - iIstream& operator >> (iIstream& is, iEntry& e); -} +} // pFlow #endif //__iEntry_hpp__