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