VR-Forces 4.10 Class Documentation
 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) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
13 
14 #include <readerWriter/rwList.h>
15 #include <readerWriter/rwInt.h>
16 #include <vlutil/vlString.h>
18 #include <boost/unordered_map.hpp>
20 
21 class DtModelSetEntry;
22 class DtFilename;
23 class DtObjectType;
25 
26 #define LATEST_MODEL_SET_VERSION 1
27 
29 {
30 public:
31 
33  DtModelSet();
34 
36  parentRegistry = NULL);
37 
39  virtual ~DtModelSet();
40 
42  DtModelSet(const DtModelSet& orig,
43  DtReaderWriterRegistry* parentRegistry = NULL);
44 
46  DtModelSet& operator=(const DtModelSet& orig);
47 
49  virtual bool load(const DtFilename&, std::set<DtString>* iconLists = 0);
50  virtual bool save(const DtFilename&);
51 
52  virtual DtModelSetEntry* find(const DtObjectType&) const;
53  virtual DtModelSetEntry* findMatchingPattern(const DtObjectType&) const;
54  virtual DtModelSetEntry* findByUniqueID(const DtString&) const;
55  virtual DtModelSetEntry* findByLabel(const DtString&) const;
56 
59  virtual void add(DtModelSetEntry*);
60 
62  virtual void* remove(DtReaderWriter*, DtListItem*);
63 
64  virtual void setComment(const DtString&);
65  virtual const DtString comment() const;
66 
67  static DtModelSet* create(const DtString&, DtReaderWriterRegistry* const parentRegistry = NULL);
68 
70  DtObjectType objectTypeFor(const DtString& label) const;
71 
74  virtual DtModelSetEntry* addModel(DtModelSetEntry*, bool clone = true);
75 
76  virtual void emptyList();
77 
80  virtual void entitiesForObjectType(const DtObjectType& o, std::list<DtString>& list) const;
81 
83 
84  int version() const;
85 
87  virtual DtString createUniqueID(const DtModelSetEntry*) const;
88  virtual DtString createUniqueID(const DtString&) const;
89 
91  virtual DtModelSetEntry* removeModel(const DtObjectType&);
92  virtual DtModelSetEntry* removeModel(const DtModelSetEntry* e);
93 
97  virtual void loadFromDataFiles(const std::string& directory, const SearchPaths& paths, std::set<DtString>* iconLists = 0);
98 
101  virtual const std::set<DtString>& categories() const;
102 
104  virtual const std::set<DtString>& categoriesForPalette(const DtString& pal) const;
105 
107  virtual void loadEntityFiles(const std::string&, const SearchPaths& paths, std::set<DtString>* iconLists = 0);
108 
110  virtual void loadSimulationObjectGroupFiles(const std::string&, std::set<DtString>* iconLists = 0);
111 
113  virtual const DtObjectType& nextAvailableSimulationObjectGroupObjectType() const;
114 
116  virtual const DtObjectType& nextAvailableRandomizedObjectObjectType() const;
117 
119  virtual DtSimulationObjectGroupModelSetEntry findSimulationObjectGroup(const DtString& sogName) const;
120 
121 protected:
124  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
125  const DtVariableBindingsList& variableBindings);
126 
128  void copyList(const DtModelSet& orig);
130  void clear();
131 
132  virtual void writeSelf(std::string& fp, int i, bool writeUnspecified,
133  const DtFilename& path);
134 
136  virtual void addCategoriesFrom(DtModelSetEntry*);
137 
138  virtual void updateNextSimulationObjectGroupObjectType(DtSimulationObjectGroupModelSetEntry*);
139  virtual void updateNextRandomizedObjectObjectType(DtModelSetEntry*);
140 
141  virtual void addIconListsToIconList(const DtModelSetEntry*, std::set<DtString>& iconLists) const;
142 
143 protected:
147  std::set<DtString> myCategories;
148  std::map<DtString, std::set<DtString> > myCategoriesForPalette;
149  typedef boost::unordered_map<DtString, DtModelSetEntry*> FastMap;
153 };
154 
155 
156 inline int DtModelSet::version() const
157 {
158  return myVersion;
159 }
int version() const
Returns an entry given a unique ID.
Definition: modelSet.h:156
std::set< DtString > myCategories
Definition: modelSet.h:147
DtObjectType myNextRandomizedObjectObjectType
Definition: modelSet.h:152
A Readable, Writable version of DtList.
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.
std::map< DtString, std::set< DtString > > myCategoriesForPalette
Definition: modelSet.h:148
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
DtObjectType myNextSimulationObjectGroupObjectType
Definition: modelSet.h:151
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:138
Definition: objectType.h:27
Description: A model is a set of items that defines a model to create in the back-end from the front-...
Definition: modelSetEntry.h:24
DtString myFilename
Definition: modelSet.h:144
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.
FastMap myFastMap
Definition: modelSet.h:150
DtRwInt myVersion
Definition: modelSet.h:146
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:149
DtString myComment
Definition: modelSet.h:145
Definition: modelSet.h:28

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)