#ifndef MXATOMIDCOUNTER_H #define MXATOMIDCOUNTER_H #include "mxstring.h" #include "compat.h" // STL // Counts the number of existing MxAtomId objects based // on the matching char* string. A seems fit for purpose here: // We have an MxString as a key and MxU16 as the value. // And yet a is the best match. The malloc in MxOmni::Create // for the _Nil node asks for more bytes than a regular node if a // is used, but all nodes are 20 bytes wide with a . // Also: the increment/decrement methods suggest a custom type was used // for the combined key_value_pair, which doesn't seem possible with . // SIZE: 0x14 (including padding) class MxAtomIdCounter { public: // always inlined MxAtomIdCounter(const char *p_str) { m_key = p_str; m_value = 0; } void Inc(); void Dec(); inline MxString* GetKey() { return &m_key; }; inline MxU16 GetValue() { return m_value; }; private: MxString m_key; MxU16 m_value; }; struct MxAtomIdCounterCompare { // OFFSET: LEGO1 0x100ad120 int operator()(MxAtomIdCounter* const & p_val0, MxAtomIdCounter* const & p_val1) const { return strcmp(p_val0->GetKey()->GetData(), p_val1->GetKey()->GetData()) > 0; } }; class MxAtomIdCounterSet : public set {}; #endif //MXATOMIDCOUNTER_H