#ifndef MXATOMID_H
#define MXATOMID_H

#include "mxatomidcounter.h"
#include "mxtypes.h"

enum LookupMode {
	e_exact = 0,
	e_lowerCase,
	e_upperCase,
	e_lowerCase2,
};

// SIZE 0x04
class MxAtomId {
public:
	MxAtomId(const char*, LookupMode);
	MxAtomId& operator=(const MxAtomId& p_atomId);
	~MxAtomId();

	MxAtomId() { this->m_internal = 0; }

	inline MxBool operator==(const MxAtomId& p_atomId) const { return this->m_internal == p_atomId.m_internal; }
	inline MxBool operator!=(const MxAtomId& p_atomId) const { return this->m_internal != p_atomId.m_internal; }

	void Clear();

	const char* GetInternal() const { return m_internal; }

private:
	MxAtomIdCounter* GetCounter(const char*, LookupMode);
	void Destroy();

	const char* m_internal; // 0x00
};

#endif // MXATOMID_H
