-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathStringConvertManager.h
More file actions
60 lines (48 loc) · 1.75 KB
/
StringConvertManager.h
File metadata and controls
60 lines (48 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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:
/*
/// <summary>
/// Returns ToString converter instance for given ToString mode.
/// </summary>
/// <param name="mode">ToString mode.</param>
/// <returns>Converter instance.</returns>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="mode" /> is out of range.</exception>
*/
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