#pragma once #ifndef SRINGCONVERTERMANAGER_H #define SRINGCONVERTERMANAGER_H #include "ClassicStringConverter.h" #include "FastStringConverter.h" #include "IStringConverter.h" #include "IntX.h" // Used to retrieve needed ToString converter. class StringConvertManager { private: // Classic converter instance. static ClassicStringConverter _ClassicStringConverter; // Fast converter instance. static FastStringConverter _FastStringConverter; // Create new pow2 converter instance static Pow2StringConverter pow2StringConverter; public: /* /// /// Returns ToString converter instance for given ToString mode. /// /// ToString mode. /// Converter instance. /// is out of range. */ static IStringConverter* GetStringConverter(ToStringMode mode) { switch (mode) { case ToStringMode::tsmFast: return &_FastStringConverter; case ToStringMode::tsmClassic: return &_ClassicStringConverter; default: throw ArgumentOutOfRangeException("mode"); } // end switch } // end function GetStringConverter }; // end class StringConvertManager // Create new pow2 converter instance Pow2StringConverter StringConvertManager::pow2StringConverter = Pow2StringConverter(); // Classic converter instance. ClassicStringConverter StringConvertManager::_ClassicStringConverter = ClassicStringConverter(StringConvertManager::pow2StringConverter); // Fast converter instance. FastStringConverter StringConvertManager::_FastStringConverter = FastStringConverter( StringConvertManager::pow2StringConverter, StringConvertManager::_ClassicStringConverter); #endif // !SRINGCONVERTERMANAGER_H