VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
modelSet.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
16 
17 #include <readerWriter/rwList.h>
18 #include <readerWriter/rwInt.h>
19 #include <vlutil/vlString.h>
21 #include <boost/unordered_map.hpp>
23 
24 class DtModelSetEntry;
25 class DtFilename;
26 class DtObjectType;
28 
29 #define LATEST_MODEL_SET_VERSION 1
30 
31 class DtModelSet;
32 typedef DtModelSet* (*DtModelSetCreatorFcn)(const DtString&, DtReaderWriterRegistry* parentRegistry);
33 
35 {
36 public:
37 
39  DtModelSet();
40 
42  parentRegistry = nullptr);
43 
45  virtual ~DtModelSet();
46 
48  DtModelSet(const DtModelSet& orig,
49  DtReaderWriterRegistry* parentRegistry = NULL);
50 
52  virtual DtModelSet& operator=(const DtModelSet& orig);
53 
54  virtual DtModelSet* clone(DtReaderWriterRegistry* parentRegistry = nullptr);
55 
58  static DtModelSetCreatorFcn SetModelSetCreatorFcn(DtModelSetCreatorFcn);
59  static DtModelSetCreatorFcn ModelSetCreatorFcn();
60  static DtModelSet* Create(const DtString& name = "model-set", DtReaderWriterRegistry* parentRegistry = nullptr);
62 
64  virtual bool load(const DtFilename&, std::set<DtString>* iconLists = 0);
65  virtual bool save(const DtFilename&);
66 
67  virtual DtModelSetEntry* find(const DtObjectType&) const;
68  virtual DtModelSetEntry* findMatchingPattern(const DtObjectType&) const;
69  virtual DtModelSetEntry* findByUniqueID(const DtString&) const;
70  virtual DtModelSetEntry* findByLabel(const DtString&) const;
71 
74  virtual void add(DtModelSetEntry*);
75 
77  virtual void* remove(DtReaderWriter*, DtListItem*);
78 
79  virtual void setComment(const DtString&);
80  virtual const DtString comment() const;
81 
82  static DtModelSet* create(const DtString&, DtReaderWriterRegistry* const parentRegistry = NULL);
83 
85  DtObjectType objectTypeFor(const DtString& label) const;
86 
89  virtual DtModelSetEntry* addModel(DtModelSetEntry*, bool clone = true);
90 
91  virtual void emptyList();
92 
95  virtual void entitiesForObjectType(const DtObjectType& o, std::list<DtString>& list) const;
96 
98 
99  int version() const;
100 
102  virtual DtString createUniqueID(const DtModelSetEntry*) const;
103  virtual DtString createUniqueID(const DtString&) const;
104 
106  virtual DtModelSetEntry* removeModel(const DtObjectType&);
107  virtual DtModelSetEntry* removeModel(const DtModelSetEntry* e);
108 
112  virtual void loadFromDataFiles(const std::string& directory, const SearchPaths& paths, std::set<DtString>* iconLists = 0);
113 
116  virtual const std::set<DtString>& categories() const;
117 
119  virtual const std::set<DtString>& categoriesForPalette(const DtString& pal) const;
120 
122  virtual void loadEntityFiles(const std::string&, const SearchPaths& paths, std::set<DtString>* iconLists = 0);
123 
125  virtual void loadSimulationObjectGroupFiles(const std::string&, std::set<DtString>* iconLists = 0);
126 
128  virtual const DtObjectType& nextAvailableSimulationObjectGroupObjectType() const;
129 
131  virtual const DtObjectType& nextAvailableRandomizedObjectObjectType() const;
132 
134  virtual DtSimulationObjectGroupModelSetEntry findSimulationObjectGroup(const DtString& sogName) const;
135 
136 protected:
139  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
140  const DtVariableBindingsList& variableBindings);
141 
143  void copyList(const DtModelSet& orig);
145  void clear();
146 
147  virtual void writeSelf(std::string& fp, int i, bool writeUnspecified,
148  const DtFilename& path);
149 
151  virtual void addCategoriesFrom(DtModelSetEntry*);
152 
153  virtual void updateNextSimulationObjectGroupObjectType(DtSimulationObjectGroupModelSetEntry*);
154  virtual void updateNextRandomizedObjectObjectType(DtModelSetEntry*);
155 
156  virtual void addIconListsToIconList(const DtModelSetEntry*, std::set<DtString>& iconLists) const;
157 
158 protected:
162  std::set<DtString> myCategories;
163  std::map<DtString, std::set<DtString> > myCategoriesForPalette;
164  typedef boost::unordered_map<DtString, DtModelSetEntry*> FastMap;
169 };
170 
171 
172 inline int DtModelSet::version() const
173 {
174  return myVersion;
175 }
int version() const
Returns an entry given a unique ID.
Definition: modelSet.h:172
std::set< DtString > myCategories
Definition: modelSet.h:162
DtObjectType myNextRandomizedObjectObjectType
Definition: modelSet.h:167
A Readable, Writable version of DtList. This class cannot be used directly, but must be inherited to ...
Definition: rwList.h:26
#define DT_DLL_vrfobjparam
This file is used to determine how to build.
Definition: vrfobjparamDefines.h:28
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)=0
This method must be overridden by a subclass. Within this method, new instances of the DtReaderWriter...
std::map< DtString, std::set< DtString > > myCategoriesForPalette
Definition: modelSet.h:163
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
DtObjectType myNextSimulationObjectGroupObjectType
Definition: modelSet.h:166
virtual void writeSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Called from putSelf, calls myRegistry.putSelf which in turn calls putSelf on each reader/writer in th...
Description: A model is a set of items that defines a model to create in the back-end from the front-...
Definition: simulationObjectGroupModelSetEntry.h:161
Definition: objectType.h:27
Definition: modelSetEntry.h:34
DtString myFilename
Definition: modelSet.h:159
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
Description: Readable, Writable int.
Definition: rwInt.h:25
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
virtual DtListItem * add(DtReaderWriter *data)
Add element to the end of the list. Returns the DtListItem envelope object that contains your new ele...
FastMap myFastMap
Definition: modelSet.h:165
DtRwInt myVersion
Definition: modelSet.h:161
DtModelSet *(* DtModelSetCreatorFcn)(const DtString &, DtReaderWriterRegistry *parentRegistry)
Definition: modelSet.h:32
const DtRwList & operator=(const DtRwList &orig)
Calls down to DtReaderWriter::operator=(). List elements are not copied.
boost::unordered_map< DtString, DtModelSetEntry * > FastMap
Definition: modelSet.h:164
static DtModelSetCreatorFcn theModelSetCreatorFcn
Definition: modelSet.h:168
DtString myComment
Definition: modelSet.h:160
Definition: modelSet.h:34

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)