EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
StationDataMgr Class Reference

#include "StationDataMgr.h"

Inheritance diagram for StationDataMgr:
Collaboration diagram for StationDataMgr:

Private Attributes

std::map< int8, int32m_serviceMask
 
std::map< uint32, StationDatam_stationData
 
std::map< uint32, PyObject * > m_stationPyData
 
std::multimap< uint32, OfficeDatam_stationOfficeData
 

StationDataMgr.cpp

memory object caching system for managing and saving ingame static and dynamic station data

: Allan

Date
: 12Dec17
 StationDataMgr ()
 
 ~StationDataMgr ()
 
int Initialize ()
 
void Clear ()
 
void Close ()
 
void GetInfo ()
 
void AddOffice (uint32 stationID, OfficeData &data)
 
void LoadOffices (uint32 stationID, std::map< uint32, OfficeData > &data)
 
void GetStationOfficeIDs (uint32 locationID, std::vector< OfficeData > &data)
 
bool GetStationData (uint32 stationID, StationData &data)
 
PyRepGetStationItemBits (uint32 stationID)
 
PyObjectGetStationPyData (uint32 stationID)
 
uint32 GetOwnerID (uint32 stationID)
 
std::string GetStationName (uint32 stationID)
 
uint32 GetStationSystemID (uint32 stationID)
 
double GetDockPosY (uint32 stationID)
 
uint32 GetOfficeRentalFee (uint32 stationID)
 
uint32 GetOfficeIDForCorp (uint32 stationID, uint32 corpID)
 
void Populate ()
 
void LoadStationPyData ()
 

Additional Inherited Members

- Public Member Functions inherited from Singleton< StationDataMgr >
 Singleton ()
 Primary constructor. More...
 
- Static Public Member Functions inherited from Singleton< StationDataMgr >
static StationDataMgrget ()
 
- Static Protected Attributes inherited from Singleton< StationDataMgr >
static std::shared_ptr
< StationDataMgr
mInstance
 

Detailed Description

Definition at line 21 of file StationDataMgr.h.

Constructor & Destructor Documentation

StationDataMgr::StationDataMgr ( )

Definition at line 15 of file StationDataMgr.cpp.

References m_serviceMask, m_stationData, m_stationOfficeData, and m_stationPyData.

16 {
17  m_serviceMask.clear();
18  m_stationData.clear();
19  m_stationPyData.clear();
20  m_stationOfficeData.clear();
21 }
std::map< uint32, PyObject * > m_stationPyData
std::map< int8, int32 > m_serviceMask
std::multimap< uint32, OfficeData > m_stationOfficeData
std::map< uint32, StationData > m_stationData
StationDataMgr::~StationDataMgr ( )

Definition at line 23 of file StationDataMgr.cpp.

24 {
25  //Clear();
26 }

Member Function Documentation

void StationDataMgr::AddOffice ( uint32  stationID,
OfficeData data 
)

Definition at line 144 of file StationDataMgr.cpp.

References m_stationOfficeData.

145 {
146  m_stationOfficeData.emplace(stationID, data);
147 }
std::multimap< uint32, OfficeData > m_stationOfficeData
void StationDataMgr::Clear ( )

Definition at line 45 of file StationDataMgr.cpp.

References m_serviceMask, m_stationData, m_stationOfficeData, m_stationPyData, and PySafeDecRef.

46 {
47  for (auto cur : m_stationPyData)
48  PySafeDecRef(cur.second);
49 
50  m_serviceMask.clear();
51  m_stationData.clear();
52  m_stationPyData.clear();
53  m_stationOfficeData.clear();
54 
55 }
std::map< uint32, PyObject * > m_stationPyData
std::map< int8, int32 > m_serviceMask
std::multimap< uint32, OfficeData > m_stationOfficeData
#define PySafeDecRef(op)
Definition: PyRep.h:61
std::map< uint32, StationData > m_stationData
void StationDataMgr::Close ( )
Todo:
put a save method here which will save anything changed before shutdown

Definition at line 35 of file StationDataMgr.cpp.

References m_stationPyData, PySafeDecRef, and sLog.

36 {
38  for (auto cur : m_stationPyData)
39  PySafeDecRef(cur.second);
40 
41  sLog.Warning(" StationDataMgr", "Station Data Manager has been closed." );
42 }
std::map< uint32, PyObject * > m_stationPyData
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250
#define PySafeDecRef(op)
Definition: PyRep.h:61
double StationDataMgr::GetDockPosY ( uint32  stationID)

Definition at line 184 of file StationDataMgr.cpp.

References m_stationData.

185 {
186  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
187  if (itr != m_stationData.end())
188  return itr->second.dockPosition.y;
189  return 0;
190 }
std::map< uint32, StationData > m_stationData
void StationDataMgr::GetInfo ( )

Definition at line 156 of file StationDataMgr.cpp.

157 {
158  /* return info about loaded items? */
159  /*
160  * m_stationSystem
161  * m_stationData;
162  *
163  */
164 }
uint32 StationDataMgr::GetOfficeIDForCorp ( uint32  stationID,
uint32  corpID 
)

Definition at line 175 of file StationDataMgr.cpp.

References m_stationOfficeData.

176 {
177  auto range = m_stationOfficeData.equal_range(stationID);
178  for (auto itr = range.first; itr != range.second; ++itr)
179  if (itr->second.corporationID == corpID)
180  return itr->second.officeID;
181  return 0;
182 }
std::multimap< uint32, OfficeData > m_stationOfficeData
uint32 StationDataMgr::GetOfficeRentalFee ( uint32  stationID)

Definition at line 282 of file StationDataMgr.cpp.

References m_stationData.

283 {
284  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
285  if (itr != m_stationData.end())
286  return itr->second.officeRentalFee;
287  return 0;
288 }
std::map< uint32, StationData > m_stationData
uint32 StationDataMgr::GetOwnerID ( uint32  stationID)
Todo:
update this for POS modules and Outposts

Definition at line 166 of file StationDataMgr.cpp.

References m_stationData.

167 {
169  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
170  if (itr != m_stationData.end())
171  return itr->second.corporationID;
172  return 0;
173 }
std::map< uint32, StationData > m_stationData
bool StationDataMgr::GetStationData ( uint32  stationID,
StationData data 
)

Definition at line 215 of file StationDataMgr.cpp.

References _log, and m_stationData.

216 {
217  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
218  if (itr != m_stationData.end()) {
219  data = itr->second;
220  return true;
221  } else {
222  _log(DATABASE__MESSAGE, "Failed to query data for station %u: Station not found.", stationID);
223  }
224  return true;
225 }
#define _log(type, fmt,...)
Definition: logsys.h:124
std::map< uint32, StationData > m_stationData
PyRep * StationDataMgr::GetStationItemBits ( uint32  stationID)

Definition at line 239 of file StationDataMgr.cpp.

References m_serviceMask, m_stationData, and PyTuple::SetItem().

240 {
241  //['hangarGraphicID','ownerID','itemID','serviceMask','stationTypeID']
242  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
243  if (itr != m_stationData.end()) {
244  std::map<int8, int32>::iterator itr2;
245  PyTuple * result = new PyTuple(5);
246  result->SetItem(0, new PyInt(itr->second.hangarGraphicID));
247  result->SetItem(1, new PyInt(itr->second.corporationID));
248  result->SetItem(2, new PyInt(stationID));
249  if ((itr2 = m_serviceMask.find(itr->second.operationID)) != m_serviceMask.end()) {
250  result->SetItem(3, new PyInt(itr2->second));
251  } else {
252  result->SetItem(3, new PyInt(0));
253  }
254  result->SetItem(4, new PyInt(itr->second.typeID));
255  return result;
256  }
257  return nullptr;
258 }
Python tuple.
Definition: PyRep.h:567
std::map< int8, int32 > m_serviceMask
void SetItem(size_t index, PyRep *object)
Stores Python object.
Definition: PyRep.h:610
Python integer.
Definition: PyRep.h:231
std::map< uint32, StationData > m_stationData

Here is the call graph for this function:

std::string StationDataMgr::GetStationName ( uint32  stationID)

Definition at line 192 of file StationDataMgr.cpp.

References _log, and m_stationData.

193 {
194  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
195  if (itr != m_stationData.end()) {
196  return itr->second.name;
197  } else {
198  _log(DATABASE__MESSAGE, "Failed to query station name for station %u: Station not found.", stationID);
199  }
200  return "";
201 }
#define _log(type, fmt,...)
Definition: logsys.h:124
std::map< uint32, StationData > m_stationData
void StationDataMgr::GetStationOfficeIDs ( uint32  locationID,
std::vector< OfficeData > &  data 
)

Definition at line 260 of file StationDataMgr.cpp.

References IsOfficeFolder, IsOfficeID, m_stationOfficeData, sDataMgr, and STATION_OFFICE_OFFSET.

261 {
262  if (sDataMgr.IsStation(locationID)) {
263  auto range = m_stationOfficeData.equal_range(locationID);
264  for (auto itr = range.first; itr != range.second; ++itr)
265  data.push_back(itr->second);
266  } else if (IsOfficeFolder(locationID)) {
267  auto range = m_stationOfficeData.equal_range((locationID - STATION_OFFICE_OFFSET));
268  for (auto itr = range.first; itr != range.second; ++itr)
269  if (itr->second.folderID == locationID)
270  data.push_back(itr->second);
271  } else if (IsOfficeID(locationID)) {
272  // no better way to do this one yet.....iterate thru the whole map?
273  // this is full map of station data. need to find station to cut down on loop time.
274  for (auto cur : m_stationOfficeData)
275  if (cur.second.officeID == locationID) {
276  data.push_back(cur.second);
277  return;
278  }
279  }
280 }
#define IsOfficeFolder(itemID)
Definition: EVE_Defines.h:309
std::multimap< uint32, OfficeData > m_stationOfficeData
#define IsOfficeID(itemID)
Definition: EVE_Defines.h:253
#define STATION_OFFICE_OFFSET
Definition: EVE_Defines.h:177
#define sDataMgr
PyObject * StationDataMgr::GetStationPyData ( uint32  stationID)

Definition at line 227 of file StationDataMgr.cpp.

References _log, m_stationPyData, and PyIncRef.

228 {
229  std::map<uint32, PyObject*>::iterator itr = m_stationPyData.find(stationID);
230  if (itr != m_stationPyData.end()) {
231  PyIncRef(itr->second);
232  return itr->second;
233  } else {
234  _log(DATABASE__MESSAGE, "Failed to query data for station %u: Station not found.", stationID);
235  }
236  return nullptr;
237 }
std::map< uint32, PyObject * > m_stationPyData
#define _log(type, fmt,...)
Definition: logsys.h:124
#define PyIncRef(op)
Definition: PyRep.h:56
uint32 StationDataMgr::GetStationSystemID ( uint32  stationID)

Definition at line 203 of file StationDataMgr.cpp.

References _log, and m_stationData.

204 {
205  std::map<uint32, StationData>::iterator itr = m_stationData.find(stationID);
206  if (itr != m_stationData.end()) {
207  return itr->second.systemID;
208  } else {
209  _log(DATABASE__MESSAGE, "Failed to query station systemID for station %u: Station not found.", stationID);
210  }
211  return 0;
212 }
#define _log(type, fmt,...)
Definition: logsys.h:124
std::map< uint32, StationData > m_stationData
int StationDataMgr::Initialize ( )

Definition at line 28 of file StationDataMgr.cpp.

References Populate(), and sLog.

29 {
30  Populate();
31  sLog.Blue(" StationDataMgr", "Station Data Manager Initialized.");
32  return 1;
33 }
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250

Here is the call graph for this function:

void StationDataMgr::LoadOffices ( uint32  stationID,
std::map< uint32, OfficeData > &  data 
)

Definition at line 149 of file StationDataMgr.cpp.

References m_stationOfficeData.

150 {
151  auto range = m_stationOfficeData.equal_range(stationID);
152  for (auto itr = range.first; itr != range.second; ++itr)
153  data.emplace(itr->second.officeID, itr->second);
154 }
std::multimap< uint32, OfficeData > m_stationOfficeData
void StationDataMgr::LoadStationPyData ( )
protected

Definition at line 291 of file StationDataMgr.cpp.

References m_stationData, m_stationPyData, PyStatic, and PyDict::SetItemString().

Referenced by Populate().

292 {
293  for (auto cur : m_stationData) {
294  PyDict* dict = new PyDict();
295  dict->SetItemString("stationID", new PyInt(cur.first));
296  dict->SetItemString("ownerID", new PyInt(cur.second.corporationID));
297  dict->SetItemString("stationTypeID", new PyInt(cur.second.typeID));
298  dict->SetItemString("stationName", new PyString(cur.second.name));
299  dict->SetItemString("operationID", new PyInt(cur.second.operationID));
300  dict->SetItemString("x", new PyFloat(cur.second.position.x));
301  dict->SetItemString("y", new PyFloat(cur.second.position.y));
302  dict->SetItemString("z", new PyFloat(cur.second.position.z));
303  dict->SetItemString("dockEntryX", new PyFloat(cur.second.dockEntry.x));
304  dict->SetItemString("dockEntryY", new PyFloat(cur.second.dockEntry.y));
305  dict->SetItemString("dockEntryZ", new PyFloat(cur.second.dockEntry.z));
306  dict->SetItemString("dockOrientationX", new PyFloat(cur.second.dockOrientation.x));
307  dict->SetItemString("dockOrientationY", new PyFloat(cur.second.dockOrientation.y));
308  dict->SetItemString("dockOrientationZ", new PyFloat(cur.second.dockOrientation.z));
309 
310  dict->SetItemString("serviceMask", new PyInt(cur.second.serviceMask));
311  dict->SetItemString("conquerable", new PyBool(cur.second.conquerable));
312  dict->SetItemString("upgradeLevel", new PyInt(0)); // outposts only. others are 0
313  dict->SetItemString("standingOwnerID", new PyInt(cur.second.corporationID));
314  dict->SetItemString("hangarGraphicID", new PyInt(cur.second.hangarGraphicID));
315  dict->SetItemString("officeRentalCost", new PyInt(cur.second.officeRentalFee));
316  dict->SetItemString("dockingBayGraphicID", PyStatic.NewNone()); // cannot find any data on this; all packets show PyNone
317  dict->SetItemString("dockingCostPerVolume", new PyFloat(cur.second.dockingCostPerVolume));
318  dict->SetItemString("maxShipVolumeDockable", new PyFloat(cur.second.maxShipVolumeDockable));
319  dict->SetItemString("reprocessingEfficiency", new PyFloat(cur.second.reprocessingEfficiency));
320  dict->SetItemString("reprocessingHangarFlag", new PyInt(cur.second.reprocessingHangarFlag));
321  dict->SetItemString("reprocessingStationsTake", new PyFloat(cur.second.reprocessingStationsTake));
322 
323  dict->SetItemString("solarSystemID", new PyInt(cur.second.systemID));
324  dict->SetItemString("constellationID", new PyInt(cur.second.constellationID));
325  dict->SetItemString("regionID", new PyInt(cur.second.regionID));
326  dict->SetItemString("security", new PyFloat(cur.second.security));
327 
328  dict->SetItemString("graphicID", new PyInt(cur.second.graphicID)); //invTypes.graphicID
329  dict->SetItemString("description", new PyString(cur.second.description)); //staOperations.description
330  dict->SetItemString("descriptionID", new PyInt(cur.second.descriptionID)); //staOperations.descriptionID
331 
332  dict->SetItemString("radius", new PyFloat(cur.second.radius)); //mapDenormalize.radius or invTypes.radius
333  dict->SetItemString("orbitID", new PyInt(cur.second.orbitID)); //mapDenormalize.orbitID
334 
335  m_stationPyData.emplace(cur.first, new PyObject("util.KeyVal", dict));
336  }
337 }
std::map< uint32, PyObject * > m_stationPyData
Python string.
Definition: PyRep.h:430
Python's dictionary.
Definition: PyRep.h:719
Python floating point number.
Definition: PyRep.h:292
Python boolean.
Definition: PyRep.h:323
Python object.
Definition: PyRep.h:826
Python integer.
Definition: PyRep.h:231
#define PyStatic
Definition: PyRep.h:1209
std::map< uint32, StationData > m_stationData
void SetItemString(const char *key, PyRep *value)
SetItemString adds or sets a database entry.
Definition: PyRep.h:812

Here is the call graph for this function:

Here is the caller graph for this function:

void StationDataMgr::Populate ( )
protected

Definition at line 57 of file StationDataMgr.cpp.

References StationData::conquerable, StationData::constellationID, StationData::corporationID, OfficeData::corporationID, StationData::description, StationData::descriptionID, StationData::dockEntry, StationData::dockingCostPerVolume, StationData::dockOrientation, StationData::dockPosition, OfficeData::expiryTime, OfficeData::folderID, DBResultRow::GetBool(), DBResultRow::GetDouble(), DBResultRow::GetFloat(), DBResultRow::GetInt(), DBResultRow::GetInt64(), StationDB::GetOperationServiceIDs(), DBQueryResult::GetRow(), StationDB::GetStationData(), StationDB::GetStationOfficeData(), DBResultRow::GetText(), GetTimeMSeconds(), DBResultRow::GetUInt(), StationData::graphicID, StationData::hangarGraphicID, LoadStationPyData(), OfficeData::lockDown, m_serviceMask, m_stationData, m_stationOfficeData, m_stationPyData, StationData::maxShipVolumeDockable, StationData::name, OfficeData::officeID, StationData::officeRentalFee, StationData::officeSlots, StationData::operationID, StationData::orbitID, StationData::position, StationData::radius, StationData::regionID, OfficeData::rentalFee, StationData::reprocessingEfficiency, StationData::reprocessingHangarFlag, StationData::reprocessingStationsTake, SafeDelete(), StationData::security, StationData::serviceMask, sLog, StationData::stationID, OfficeData::stationID, StationData::systemID, StationData::typeID, and OfficeData::typeID.

Referenced by Initialize().

58 {
59  double start = GetTimeMSeconds();
60  DBQueryResult* res = new DBQueryResult();
61  DBResultRow row;
62 
63  std::map<int8, int32>::iterator itr;
65  while (res->GetRow(row)) {
66  //SELECT operationID, serviceID FROM staOperationServices
67  if ((itr = m_serviceMask.find(row.GetInt(0))) != m_serviceMask.end()) {
68  itr->second += row.GetInt(1);
69  } else {
70  m_serviceMask.emplace(row.GetInt(0), row.GetInt(1));
71  }
72  }
73 
74  //res->Reset();
76  while (res->GetRow(row)) {
77  //SELECT itemID, corporationID, stationID, typeID, lockDown, rentalFee, expiryDateTime, officeFolderID
78  OfficeData data = OfficeData();
79  data.officeID = row.GetInt(0);
80  data.corporationID = row.GetInt(1);
81  data.stationID = row.GetInt(2);
82  data.typeID = row.GetInt(3);
83  data.lockDown = row.GetBool(4);
84  data.rentalFee = row.GetInt64(5);
85  data.expiryTime = row.GetInt64(6);
86  data.folderID = row.GetInt(7);
87  m_stationOfficeData.emplace(row.GetInt(2), data);
88  }
89 
90  //res->Reset();
92  while (res->GetRow(row)) {
93  //SELECT s.stationID, s.x, s.y, s.z, st.dockOrientationX, st.dockOrientationY, st.dockOrientationZ, s.dockingCostPerVolume, s.maxShipVolumeDockable,8 \
94  s.officeSlots, s.officeRentalCost, s.operationID, s.stationTypeID, s.corporationID, s.stationName, s.reprocessingStationsTake, s.reprocessingEfficiency,16 \
95  s.reprocessingHangarFlag, st.conquerable, st.hangarGraphicID, m.orbitID, m.radius, m.security, o.description, o.descriptionID,24\
96  t.graphicID, s.solarSystemID, s.constellationID, s.regionID, st.dockEntryX, st.dockEntryY, st.dockEntryZ 31
97  StationData sData = StationData();
98  sData.stationID = row.GetUInt(0);
99  if ((itr = m_serviceMask.find(sData.stationID)) != m_serviceMask.end()) {
100  sData.serviceMask = itr->second;
101  } else {
102  sData.serviceMask = 0;
103  }
104  sData.position = GPoint(row.GetDouble(1),row.GetDouble(2),row.GetDouble(3));
105  sData.dockOrientation = GVector(row.GetDouble(4),row.GetDouble(5),row.GetDouble(6));
106  sData.dockingCostPerVolume = row.GetFloat(7);
107  sData.maxShipVolumeDockable = row.GetUInt(8);
108  sData.officeSlots = row.GetUInt(9);
109  sData.officeRentalFee = row.GetInt(10);
110  sData.operationID = row.GetInt(11);
111  sData.typeID = row.GetInt(12);
112  sData.corporationID = row.GetInt(13);
113  sData.name = row.GetText(14);
114  sData.reprocessingStationsTake = row.GetFloat(15);
115  sData.reprocessingEfficiency = row.GetFloat(16);
116  sData.reprocessingHangarFlag = row.GetUInt(17);
117  sData.conquerable = row.GetBool(18);
118  sData.hangarGraphicID = row.GetUInt(19);
119  sData.orbitID = row.GetUInt(20);
120  sData.radius = row.GetFloat(21);
121  sData.security = row.GetFloat(22);
122  sData.description = row.GetText(23);
123  sData.descriptionID = row.GetInt(24);
124  sData.graphicID = row.GetInt(25);
125  sData.systemID = row.GetUInt(26);
126  sData.constellationID = row.GetUInt(27);
127  sData.regionID = row.GetUInt(28);
128  sData.dockEntry = GPoint(row.GetDouble(29),row.GetDouble(30),row.GetDouble(31));
129  sData.dockPosition = GPoint(row.GetDouble(29) + row.GetDouble(1),
130  row.GetDouble(30) + row.GetDouble(2),
131  row.GetDouble(31) + row.GetDouble(3));
132  m_stationData.emplace(row.GetInt(0), sData);
133  }
134 
136 
137  sLog.Cyan(" StationDataMgr", "%u Station data sets loaded in %.3fms.", \
138  (m_stationData.size() + m_serviceMask.size() + m_stationPyData.size() + m_stationOfficeData.size()), (GetTimeMSeconds() - start));
139 
140  //cleanup
141  SafeDelete(res);
142 }
int32 officeRentalFee
std::string description
uint32 corporationID
const char * GetText(uint32 index) const
Definition: dbcore.h:104
std::map< uint32, PyObject * > m_stationPyData
uint16 graphicID
float GetFloat(uint32 index) const
Definition: dbcore.cpp:682
int32 GetInt(uint32 index) const
Definition: dbcore.cpp:635
float dockingCostPerVolume
uint32 folderID
uint32 stationID
uint32 GetUInt(uint32 index) const
Definition: dbcore.cpp:658
double GetDouble(uint32 index) const
Definition: dbcore.cpp:693
static void GetOperationServiceIDs(DBQueryResult &res)
Definition: StationDB.cpp:175
void SafeDelete(T *&p)
Deletes and nullifies a pointer.
Definition: SafeMem.h:83
bool GetRow(DBResultRow &into)
Definition: dbcore.cpp:552
bool GetBool(uint32 index) const
Definition: dbcore.cpp:647
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250
Definition: gpoint.h:33
std::map< int8, int32 > m_serviceMask
uint16 descriptionID
int64 expiryTime
double GetTimeMSeconds()
Definition: utils_time.cpp:104
uint32 stationID
float reprocessingStationsTake
std::string name
uint32 officeID
static void GetStationData(DBQueryResult &res)
Definition: StationDB.cpp:138
std::multimap< uint32, OfficeData > m_stationOfficeData
uint32 corporationID
GPoint dockPosition
GPoint dockEntry
Definition: gpoint.h:70
GVector dockOrientation
std::map< uint32, StationData > m_stationData
uint16 hangarGraphicID
uint32 maxShipVolumeDockable
int64 GetInt64(uint32 index) const
Definition: dbcore.cpp:670
uint16 reprocessingHangarFlag
uint32 constellationID
float reprocessingEfficiency
static void GetStationOfficeData(DBQueryResult &res)
Definition: StationDB.cpp:97

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

std::map<int8, int32> StationDataMgr::m_serviceMask
private

Definition at line 59 of file StationDataMgr.h.

Referenced by Clear(), GetStationItemBits(), Populate(), and StationDataMgr().

std::multimap<uint32, OfficeData> StationDataMgr::m_stationOfficeData
private
std::map<uint32, PyObject*> StationDataMgr::m_stationPyData
private

The documentation for this class was generated from the following files: