Sleeping Wombat GUI  0.100
swGUI
Serializer.h
Go to the documentation of this file.
1 #pragma once
2 
10 
11 #include <string>
12 #include <assert.h>
13 #include <memory>
14 
15 
22 struct SerializerImpl;
23 
26 enum class WritingMode
27 {
28  Sparing,
29  Readable
30 };
31 
36 {
37 private:
39  std::unique_ptr< SerializationContext > context;
40 protected:
41 public:
42  explicit ISerializer ( std::unique_ptr< SerializationContext > serContext );
43  virtual ~ISerializer ();
44 
45  void EnterObject ( const std::string& name );
46  void EnterArray ( const std::string& name );
47 
48  void Exit ();
49 
50  void SetAttribute ( const std::string& name, const std::string& value );
51  void SetAttribute ( const std::string& name, const char* value );
52  void SetAttribute ( const std::string& name, uint32 value );
53  void SetAttribute ( const std::string& name, uint64 value );
54  void SetAttribute ( const std::string& name, int32 value );
55  void SetAttribute ( const std::string& name, int64 value );
56  void SetAttribute ( const std::string& name, bool value );
57  void SetAttribute ( const std::string& name, double value );
58 
59 
60  bool SaveFile ( const std::string& fileName, WritingMode mode = WritingMode::Sparing );
61  std::string SaveString ( WritingMode mode = WritingMode::Sparing );
62 
63 
64 public:
65 
71  template< typename ContextType >
72  inline ContextType* GetContext ()
73  {
74  assert( context != nullptr );
75 
76  // Sprawdzanie dynamicznego typu tylko, jeżeli włączone jest RTTI.
77 #ifdef _CPPRTTI
78  assert( typeid( *context ) == typeid( ContextType ) );
79 #endif
80 
81  return static_cast< ContextType* >( context.get() );
82  }
83 };
84 
85 
Tryb oszczędny bez spacji i tabulacji.
Tryb przeznaczony do czytania przez ludzi.
void EnterArray(const std::string &name)
Tworzy tablicę o podanej nazwie.
Definition: Serializer.cpp:168
uint64_t uint64
Definition: TypesDefinitions.h:33
virtual ~ISerializer()
Destruktor.
Definition: Serializer.cpp:74
ISerializer(std::unique_ptr< SerializationContext > serContext)
Konstruktor.
Definition: Serializer.cpp:65
Serializers interface.
Definition: Serializer.h:35
bool SaveFile(const std::string &fileName, WritingMode mode=WritingMode::Sparing)
Zapisuje zserializowane dane do pliku.
Definition: Serializer.cpp:107
int64_t int64
Definition: TypesDefinitions.h:32
Plik zawiera definicje podstawowych typów zmiennych.
uint32_t uint32
Definition: TypesDefinitions.h:31
ContextType * GetContext()
Returns serialization context.
Definition: Serializer.h:72
std::string SaveString(WritingMode mode=WritingMode::Sparing)
Zwraca stringa zawierającego zserializowanego Jsona.
Definition: Serializer.cpp:83
void SetAttribute(const std::string &name, const std::string &value)
Ustawia parę ( nazwa, wartość ) w aktualnym obiekcie.
Definition: Serializer.cpp:187
std::unique_ptr< SerializationContext > context
Definition: Serializer.h:39
SerializerImpl * impl
Definition: Serializer.h:38
void Exit()
Koniec tworzenia obiektu. EnterObject i ExitObject powinny być stosowane parami.
Definition: Serializer.cpp:151
void EnterObject(const std::string &name)
Tworzy obiekt o podanej nazwie.
Definition: Serializer.cpp:134
Definition: Serializer.cpp:25
WritingMode
Tryb Zapisywania JSONa.
Definition: Serializer.h:26
int32_t int32
Definition: TypesDefinitions.h:30