1 #pragma once 2 3 #ifndef NAMEBUILDER_INCLUDED 4 #define NAMEBUILDER_INCLUDED 5 6 #include "tcommon.h" 7 8 //------------------------------------------------------------------- 9 10 #undef DVAPI 11 #undef DVVAR 12 #ifdef TOONZLIB_EXPORTS 13 #define DVAPI DV_EXPORT_API 14 #define DVVAR DV_EXPORT_VAR 15 #else 16 #define DVAPI DV_IMPORT_API 17 #define DVVAR DV_IMPORT_VAR 18 #endif 19 20 //------------------------------------------------------------------- 21 22 class DVAPI NameBuilder { 23 public: ~NameBuilder()24 virtual ~NameBuilder() {} 25 virtual std::wstring getNext() = 0; 26 27 static NameBuilder *getBuilder(std::wstring levelName = L""); 28 29 // NameBuilder::getBuilder() restituisce un NameCreator 30 // NameBuilder::getBuilder("pippo") restituisce un NameModifier 31 }; 32 33 //------------------------------------------------------------------- 34 35 // NameCreator genera la sequenza 'A', 'B', ... 36 // inherited by FlexibleNameCreator 37 class DVAPI NameCreator : public NameBuilder { 38 protected: 39 std::vector<int> m_s; 40 41 public: NameCreator()42 NameCreator() {} 43 std::wstring getNext() override; 44 }; 45 46 //------------------------------------------------------------------- 47 48 class DVAPI NameModifier final : public NameBuilder { 49 std::wstring m_nameBase; 50 int m_index; 51 52 public: 53 NameModifier(std::wstring name); 54 std::wstring getNext() override; 55 }; 56 57 //------------------------------------------------------------------- 58 59 #endif 60