VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
surfaceCharacteristicsMap.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
15 #include <vlutil/vlFilename.h>
16 #include <vlutil/vlString.h>
17 #include <vlutil/vlSmartPointers.h>
18 
19 #include <geometry/surface.h>
20 
21 #include <boost/unordered_map.hpp>
22 #include <set>
23 #include <map>
24 
25 #include <sstream>
26 #include <string>
27 
28 #include <tbb/spin_rw_mutex.h>
29 
30 namespace makVrf {
32 
33  typedef DtBoost::shared_ptr<const DtSurfaceCharacteristicMap> DtSurfaceCharacteristicMapConstPtr;
34  typedef DtBoost::shared_ptr<DtSurfaceCharacteristicMap> DtSurfaceCharacteristicMapPtr;
35 
39 
41 
43 
44 
45 
47  {
48  public:
49 
50  class Entry
51  {
52  public:
53  //virtual ~Entry();
54 
55  virtual bool matches(const DtString& str) const = 0;
57  virtual int position() const = 0;
58  };
59 
62 
65 
67  virtual bool init(const DtFilename filename, bool displayWarning = false);
68 
71  virtual bool characteristicsFromString(const char* str,
72  unsigned int& characteristics, int& position, int& matchClass) const;
73  virtual bool characteristicsFromString(const std::string& str,
74  unsigned int& characteristics, int& position, int& matchClass) const;
75  virtual bool characteristicsFromString(const std::string& str,
76  unsigned int& characteristics) const;
77 
78  virtual void printResults(const char* str, unsigned int characteristics, const char* additionalInformation = 0) const;
79 
82  static DtSurfaceCharacteristicMapConstPtr createSurfCharMap(const DtFilename& surfCharFile);
83 
84  protected:
86  virtual bool get(std::istream& stream);
87 
89  virtual bool processToken(std::istream& stream, const DtString& token);
90 
91  typedef boost::unordered_map<DtString, boost::shared_ptr<Entry> > MatchMap;
92  typedef std::map<DtString, boost::shared_ptr<Entry> > EntryList;
93 
96 
98 
99  static const DtString theMatchString;
101 
103  {
104  structCharacteristicsFromString(const DtFilename& exactMatch, const DtString& duplicateString):
105  myExactMatch(exactMatch),
106  myDuplicateString(duplicateString)
107  {
108  }
109  DtFilename myExactMatch;
111  };
112 
113  typedef std::map <std::string, structCharacteristicsFromString> CharacteristicsFromStringMap;
117 
119  mutable tbb::spin_rw_mutex myCharacteristicsFromStringCacheMutex;
120 
121 
122  private:
123 
129  mutable std::set<std::string> myPrintedMessages;
130  mutable tbb::spin_rw_mutex myPrintedMessagesMutex;
131  };
132 
133 
134 
135 }
virtual bool init(const DtFilename filename, bool displayWarning=false)
Initialize the metafile. Calls createSurface().
boost::unordered_map< DtString, boost::shared_ptr< Entry > > MatchMap
Definition: surfaceCharacteristicsMap.h:91
structCharacteristicsFromString(const DtFilename &exactMatch, const DtString &duplicateString)
Definition: surfaceCharacteristicsMap.h:104
int myCurrentPosition
Definition: surfaceCharacteristicsMap.h:97
static const DtString theMatchString
Definition: surfaceCharacteristicsMap.h:99
std::set< std::string > myPrintedMessages
This is here to prevent error/status messages from streaming out endlessly. Should probably be change...
Definition: surfaceCharacteristicsMap.h:129
DtString myDuplicateString
Definition: surfaceCharacteristicsMap.h:110
const DT_DLL_vantageTerrainImplementation DtSurface & DtUndefinedSoilType()
return A DtSurface that is the undefined soil type. This should move to surface.h ...
Definition: surface.h:181
MatchMap myExactMatches
Definition: surfaceCharacteristicsMap.h:94
DtBoost::shared_ptr< const DtSurfaceCharacteristicMap > DtSurfaceCharacteristicMapConstPtr
Definition: surfaceCharacteristicsMap.h:31
Definition: surfaceCharacteristicsMap.h:46
const DT_DLL_vantageTerrainImplementation DtSurface & DtTreeSoilType()
virtual bool matches(const DtString &str) const =0
virtual bool characteristicsFromString(const char *str, unsigned int &characteristics, int &position, int &matchClass) const
Set characteristics based on a string (version are doing the same thing but with the accurate paramet...
DtSurfaceCharacteristicMap()
default constructor.
std::map< std::string, structCharacteristicsFromString > CharacteristicsFromStringMap
Definition: surfaceCharacteristicsMap.h:113
static DtSurfaceCharacteristicMapConstPtr createSurfCharMap(const DtFilename &surfCharFile)
Creates a new DtSurfaceCharacteristicMap instance and initializes it with the specified file...
tbb::spin_rw_mutex myPrintedMessagesMutex
Definition: surfaceCharacteristicsMap.h:130
virtual void printResults(const char *str, unsigned int characteristics, const char *additionalInformation=0) const
tbb::spin_rw_mutex myCharacteristicsFromStringCacheMutex
Mutex to control access to myCharacteristicsFromStringCache.
Definition: surfaceCharacteristicsMap.h:119
DtBoost::shared_ptr< DtSurfaceCharacteristicMap > DtSurfaceCharacteristicMapPtr
Definition: surfaceCharacteristicsMap.h:34
virtual int position() const =0
voidpf stream
Definition: ioapi.h:39
unsigned int DtCharacteristics
Definition: surface.h:198
#define DT_DLL_vantageTerrainImplementation
This file is used to determine how to build.
Definition: vantageTerrainImplementationDefines.h:28
EntryList myEntries
Definition: surfaceCharacteristicsMap.h:95
CharacteristicsFromStringMap myCharacteristicsFromStringCache
Keep a cache of the string already process in characteristicsFromString() to speed up the search...
Definition: surfaceCharacteristicsMap.h:116
virtual bool processToken(std::istream &stream, const DtString &token)
identifies a token or passes token the parent class.
std::map< DtString, boost::shared_ptr< Entry > > EntryList
Definition: surfaceCharacteristicsMap.h:92
virtual DtSurface::DtCharacteristics characteristics() const =0
virtual ~DtSurfaceCharacteristicMap()
destructor
Definition: surfaceCharacteristicsMap.h:50
const DT_DLL_vantageTerrainImplementation DtSurface & DtJimDefinedSoilType()
static const DtString theRegExprMatchString
Definition: surfaceCharacteristicsMap.h:100
DtFilename myExactMatch
Definition: surfaceCharacteristicsMap.h:109

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)