VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtElementDefinitionManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
7 
8 #pragma once
9 
12 #include <boost/unordered_map.hpp>
13 
14 namespace makArchives
15 {
16  class DtElementDefinitionRecord;
17  class DtElementsRecord;
18 
19  namespace oldRecords
20  {
21  class DtElementDefinition;
22  class DtElementDefinitionHierarchy;
23  class DtElementDefinitionNode;
24  class DtVisualAttributeInterface;
25  };
26 }
27 
28 namespace makVrv
29 {
30  class DtDe;
31  class DtBaseConnection;
32  class DtElementDefinitionNew;
33  class DtDeSettings;
34  class DtBackupInterface;
35  class DtVisualizerDefinitionValidator;
36 
42  {
43  public:
45  typedef std::map<DtUnicode, DtElementDefinitionNew*>
47 
49  typedef std::vector<const DtElementDefinitionNew*> ElementDefinitions;
50 
52  typedef std::vector<std::string>::const_iterator ParentToElementIter;
53 
55  static const DtElementDefinitionManager* createConstCopy(
56  const DtElementDefinitionManager& orig);
57 
59  virtual ~DtElementDefinitionManager();
60 
63  const std::string& name() const;
64 
67  const DtUnicode& screenName() const;
68 
70  unsigned int numberOfElementDefinitions() const;
71 
75  const DefinitionMap& elementDefinitions() const;
76 
79  DtElementDefinitionNew* findElementDefinition(
80  const DtUnicode& definitionName);
81 
84  const DtElementDefinitionNew* findElementDefinition(
85  const DtUnicode& definitionName) const;
86 
89  DtElementDefinitionNew* createElementDefinition(
90  const DtUnicode& definitionName);
91 
95  DtElementDefinitionNew* createElementDefinition(
96  const DtUnicode& definitionName,
97  DtElementDefinitionNew* parentDefinition);
98 
101  void destroyElementDefinition(DtElementDefinitionNew*);
102 
104  void destroyElementDefinitionAndChildren(DtElementDefinitionNew*);
105 
110  DtElementDefinitionNew* copyElementDefinition(DtElementDefinitionNew& def,
111  const DtUnicode& newName);
112 
114  DtBackupInterface* backup();
115 
120  bool renameElementDefinition(const DtUnicode& oldName,
121  const DtUnicode& newName);
122 
124  void loadDefaults();
125 
127  void loadDefaults(bool loadOnlyFactory);
128 
132  virtual std::vector<std::string> retrieveHierFilesToMerge(std::string type);
133 
137  virtual std::vector<std::string> retrieveLeafFilesToMerge(std::string type);
138 
142  virtual bool shouldSkipDefLoading();
143 
145  void revertSettings();
146 
148  virtual void saveAsDefaults();
149 
151  virtual void splitAndWriteToDir(makArchives::DtElementsRecord& elementsRec,
152  std::string existingDirName);
153 
155  virtual void exportSettings(const std::string& fileOrDirName);
156 
158  virtual void exportHierSettings(const std::string& fileName);
159 
161  virtual void exportLeafSettings(const std::string& fileName);
162 
164  virtual void exportSelectedLeafSettings(std::vector<std::string>& names,const std::string& fileName);
165 
169  void createFolderFromPathAndSplit(const std::string &fileOrDirName,
170  std::string& newPath, std::string& dirName);
171 
176  virtual void importSettings(const std::string& fileName,
177  ElementDefinitions& addedDefinitions,
178  ElementDefinitions& skippedDefinitions);
179 
181  virtual void importSettings(const std::string& fileName);
182 
184  virtual void mergeHierSettings(const std::string& hierFileOrDirName);
185 
187  virtual void mergeHierSettings(const std::string& hierFileOrDirName,
188  ElementDefinitions& addedDefinitions,
189  ElementDefinitions& skippedDefinitions);
190 
193  virtual void mergeLeafSettings(const std::string& leafFileOrDirName);
194 
196  virtual void mergeLeafSettings(const std::string& fileOrDirName,
197  ElementDefinitions& addedDefinitions,
198  ElementDefinitions& skippedDefinitions);
199 
201  virtual void mergeSettings(const std::string& fileName,
202  ElementDefinitions& addedDefinitions,
203  ElementDefinitions& skippedDefinitions);
204 
209  virtual void markRecordsAsHier(makArchives::DtElementsRecord& rec);
210 
212  virtual DtDeSettings* settings();
213 
218  virtual void setFromRecord(const makArchives::DtElementsRecord& rec);
219 
224  virtual void setFromRecord(const makArchives::DtElementsRecord& rec,
225  ElementDefinitions& addedDefinitions,
226  ElementDefinitions& skippedDefinitions);
227 
230  virtual void mergeRecord(
232  ElementDefinitions& addedDefinitions,
233  ElementDefinitions& skippedDefinitions);
234 
237  virtual void mergeHierRecord(
239  ElementDefinitions& addedDefinitions,
240  ElementDefinitions& skippedDefinitions);
241 
244  virtual void mergeLeafRecord(
246  ElementDefinitions& addedDefinitions,
247  ElementDefinitions& skippedDefinitions);
248 
250  virtual void getRecord(makArchives::DtElementsRecord& rec);
251 
253  virtual void getRecord(std::vector<std::string> elementDefinitions, makArchives::DtElementsRecord& rec);
254 
258  virtual void getSplitRecord(std::vector<makArchives::DtElementsRecord>& rec,
259  std::vector<std::string>& fileNames);
260 
263  virtual void addRecords(makArchives::DtElementsRecord& recs,
264  makArchives::DtElementsRecord& combinedRec);
265 
270  virtual void splitRecordElemMgr(makArchives::DtElementsRecord& rec,
272  makArchives::DtElementsRecord& recLeaves);
273 
275  virtual void setAutoSave(bool enabled);
276 
278  virtual bool validateElementDefinition(const DtElementDefinitionNew& def);
279 
283  buildElementDefinitionRecord( DtElementDefinitionNew& elementDef);
284 
286  virtual bool canUseHierLeaf();
287 
289  virtual bool modifiedSinceStartup();
290 
292  virtual void addToModifiedDefinitionsMap(DtElementDefinitionNew* modelDefinition);
293 
295  virtual void addToAddedDefinitionsMap(DtElementDefinitionNew* modelDefinition);
296 
298  virtual void addToDeletedDefinitionsMap(DtElementDefinitionNew* modelDefinition);
299 
301  virtual void resetModifiedFlags();
302 
303  protected:
304 
306 
308  DtElementDefinitionManager(const std::string& name,
309  const DtUnicode& screenName, DtDe& de, bool procedural);
310 
313 
315  void registerDefinitionHierarchy(DtElementDefinitionNew* root);
316 
318  typedef std::vector<const makArchives::DtElementDefinitionRecord*> ElementGroup;
319 
323  typedef std::map<DtUnicode, ElementGroup> ParentToElementsMap;
324 
326  virtual void buildElementVisualizers(DtElementDefinitionNew& ed,
328 
330  virtual void buildElementVisualizersForModelSet(
332  DtElementDefinitionNew &ed, int modelSet);
333 
336  virtual void buildElementChildren(
337  DtElementDefinitionNew& ed, ParentToElementsMap& parentToElementsMap,
338  ElementDefinitions& addedDefinitions,
339  ElementDefinitions& skippedDefinitions);
340 
343  static void setupVisualizerDefs(makArchives::DtElementDefinitionRecord &elementRec,
344  DtElementDefinitionNew &elementDef, unsigned int modelSet);
345 
348  virtual void registerBackup();
349 
351  virtual bool recordMatchesDefinition(
353  const DtElementDefinitionNew* existingChildDef) const;
354 
356  virtual bool recordMatchesDefinitionModelSet(
358  const DtElementDefinitionNew* existingChildDef,
359  int modelSet) const;
360 
362  virtual void generateParentToElement(ParentToElementsMap& parentToElements,
364 
366  virtual bool checkRecordsAreLeavesInHier(ParentToElementsMap& parentToElements,
367  std::vector<makArchives::DtElementsRecord>& recVec,
368  std::vector<std::string>& leafFiles);
369 
371  virtual bool replaceMergeLeaves(
373  std::vector<makArchives::DtElementsRecord>& recVec,
374  const std::vector<std::string>& leafFiles);
375 
377  virtual bool loadDefaultsFromHierLeafDir(makArchives::DtElementsRecord& rec);
378 
381  virtual bool isEntityDefinitions();
382 
383  private:
387 
391 
392  protected:
393  typedef std::map<std::string, DtVisualizerDefinitionValidator*> VisualizerDefinitionValidatorMap;
396 
398 
399  std::string myName;
400  std::string myHierName;
401  std::string myLeafName;
403 
408 
414  };
415 
416 
421  public DtVirtualBaseClass
422  {
423  public:
424 
426  typedef unsigned int ElementDefinitionType;
427 
431  {
439  };
440 
445  static DtElementDefinitionTypeManager& instance(DtDe& de);
446 
449  static DtElementDefinitionTypeManager& instance(DtBaseConnection& con);
450 
453  static void copyInstance(DtBaseConnection& con, DtDe&);
454 
456  static const DtElementDefinitionTypeManager* createConstCopy(DtDe& de);
457 
460 
471  virtual void registerElementType(ElementDefinitionType type,
472  const std::string& name, const DtUnicode& typeScreenName,
473  bool proceduralOnly);
474 
477  virtual DtElementDefinitionManager* findElementManager(ElementDefinitionType type);
478 
481  virtual DtElementDefinitionManager& elementManager(ElementDefinitionType type);
482 
486  virtual const DtElementDefinitionManager& elementManager(
487  ElementDefinitionType type) const;
488 
490  virtual void loadDefaults();
491 
493  virtual DtElementDefinitionTypeManager::ElementDefinitionType getElementDefinitionType(const DtElementDefinitionManager& element);
494 
495  protected:
496 
498  template <typename ManagerClass>
499  friend ManagerClass& defaultManagerInstanceFunction(DtDe&,bool);
500 
502  template <typename ManagerClass>
503  friend void defaultManagerRegisterInstanceFunction(DtDe&, ManagerClass*);
504 
507 
510 
513 
514  private:
518  operator=( const DtElementDefinitionTypeManager& );
519 
520  protected:
521 
522  typedef boost::unordered_map<unsigned int, DtElementDefinitionManager*>
524 
528  };
529 
530 
535  {
536  public:
538  static DtElementDefinitionSignaler& instance(DtDe&);
539 
541  virtual ~DtElementDefinitionSignaler();
542 
543  //Signals.
544  boost::signal<void (const DtUnicode& oldName, const DtUnicode& newName)>
546 
547  protected:
550 
551  private:
555 
559 
560  };
561 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)