Sleeping Wombat GUI  0.100
swGUI
Deserializer.h
Go to the documentation of this file.
1 #pragma once
2 
10 
11 #include <string>
12 #include <memory>
13 
14 struct DeserializerImpl;
15 
29 enum class ParsingMode
30 {
31  ParseInsitu,
33 };
34 
39 {
40 private:
42  std::unique_ptr< SerializationContext > context;
43 protected:
44 public:
45  IDeserializer();
46  IDeserializer( std::unique_ptr< SerializationContext > serContext );
48 
49  bool LoadFromFile ( const std::string& fileName, ParsingMode mode );
50  bool LoadFromString ( const std::string& contentString );
51 
52  const char* GetName ();
53 
54  bool EnterObject ( const std::string& name );
55  bool EnterArray ( const std::string& name );
56  bool EnterObject ( const char* name );
57  bool EnterArray ( const char* name );
58  void Exit ();
59 
60  bool FirstElement ();
61  bool NextElement ();
62  bool PrevElement ();
63  bool LastElement ();
64 
65  std::string GetAttribute ( const std::string& name, std::string& defaultValue );
66  const char* GetAttribute ( const std::string& name, const char* defaultValue );
67  uint32 GetAttribute ( const std::string& name, uint32 defaultValue );
68  uint64 GetAttribute ( const std::string& name, uint64 defaultValue );
69  int32 GetAttribute ( const std::string& name, int32 defaultValue );
70  int64 GetAttribute ( const std::string& name, int64 defaultValue );
71  bool GetAttribute ( const std::string& name, bool defaultValue );
72  double GetAttribute ( const std::string& name, double defaultValue );
73 
74  std::string GetAttribute ( const char* name, std::string& defaultValue );
75  const char* GetAttribute ( const char* name, const char* defaultValue );
76  uint32 GetAttribute ( const char* name, uint32 defaultValue );
77  uint64 GetAttribute ( const char* name, uint64 defaultValue );
78  int32 GetAttribute ( const char* name, int32 defaultValue );
79  int64 GetAttribute ( const char* name, int64 defaultValue );
80  bool GetAttribute ( const char* name, bool defaultValue );
81  double GetAttribute ( const char* name, double defaultValue );
82 
83 
84  std::string GetError ();
85 
86 public:
87 
91  template< typename ContextType >
92  inline ContextType* GetContext ()
93  {
94  assert( context != nullptr );
95 
96  // Sprawdzanie dynamicznego typu tylko, jeżeli włączone jest RTTI.
97 #ifdef _CPPRTTI
98  assert( typeid( *context ) == typeid( ContextType ) );
99 #endif
100 
101  return static_cast< ContextType* >( context.get() );
102  }
103 
104 };
105 
106 
bool EnterObject(const std::string &name)
Wyszukuje obiekt o podanej nazwie i wchodzi w głąb drzewa.
Definition: Deserializer.cpp:131
std::string GetAttribute(const std::string &name, std::string &defaultValue)
Pobiera parę ( nazwa, wartość ) w aktualnym obiekcie.
Definition: Deserializer.cpp:501
Interface for deserializers.
Definition: Deserializer.h:38
ParsingMode
Parsing modes. Serialization.
Definition: Deserializer.h:29
ContextType * GetContext()
Zwraca kontekst serializacji.
Definition: Deserializer.h:92
uint64_t uint64
Definition: TypesDefinitions.h:33
bool NextElement()
Przechodzi do następnego elementu w tablicy lub w obiekcie.
Definition: Deserializer.cpp:245
bool LastElement()
Wchodzi do ostatniego elementu tablicy lub obiektu.
Definition: Deserializer.cpp:361
int64_t int64
Definition: TypesDefinitions.h:32
Plik zawiera definicje podstawowych typów zmiennych.
Przy parsowaniu alokuje nowe stringi.
uint32_t uint32
Definition: TypesDefinitions.h:31
bool LoadFromFile(const std::string &fileName, ParsingMode mode)
Wczytuje i parsuje podany plik.
Definition: Deserializer.cpp:58
DeserializerImpl * impl
Definition: Deserializer.h:41
IDeserializer()
Definition: Deserializer.cpp:30
std::unique_ptr< SerializationContext > context
Definition: Deserializer.h:42
~IDeserializer()
Definition: Deserializer.cpp:43
std::string GetError()
Zwraca string zawierający błąd parsowania, jeżeli był.
Definition: Deserializer.cpp:669
bool EnterArray(const std::string &name)
Wyszukuje tablicę o podanej nazwie i wchodzi w głąb drzewa.
Definition: Deserializer.cpp:160
void Exit()
Wychodzi z tablicy albo obiektu, w którym znaleziono się przy pomocy funkcji EnterObject lub EnterArr...
Definition: Deserializer.cpp:187
bool PrevElement()
Przechodzi do poprzedniego elementu w tablicy lub w obiekcie.
Definition: Deserializer.cpp:298
Definition: Deserializer.cpp:20
Nie alokuje stringów, ale zapisuje sobie wskaźniki na miejsca w parsowanym tekście.
const char * GetName()
Zwraca nazwę węzła, w którym znajduje się serializator.
Definition: Deserializer.cpp:112
bool FirstElement()
Wchodzi do pierwszego elementu tablicy lub obiektu.
Definition: Deserializer.cpp:218
int32_t int32
Definition: TypesDefinitions.h:30
bool LoadFromString(const std::string &contentString)
Parsuje XMLa z podanego stringa.
Definition: Deserializer.cpp:102