Sleeping Wombat Common Library  0.50.0
swCommonLibrary
Deserializer.h
Go to the documentation of this file.
1 #pragma once
2 
10 #include "swCommonLib/Serialization/FilePosition.h"
11 
12 #include <string>
13 #include <memory>
14 
15 struct DeserializerImpl;
16 
30 enum class ParsingMode
31 {
32  ParseInsitu,
34 };
35 
40 {
41 private:
42  DeserializerImpl* impl;
43  ISerializationContextPtr context;
44 protected:
45 public:
46  IDeserializer ();
47  IDeserializer ( ISerializationContextPtr serContext );
48  ~IDeserializer ();
49 
50  bool LoadFromFile ( const std::string& fileName, ParsingMode mode );
51  bool LoadFromString ( const std::string& contentString );
52 
53  const char* GetName () const;
54 
55  bool EnterObject ( const std::string& name ) const;
56  bool EnterArray ( const std::string& name ) const;
57  bool EnterObject ( const char* name ) const;
58  bool EnterArray ( const char* name ) const;
59  void Exit () const;
60 
61  bool FirstElement () const;
62  bool NextElement () const;
63  bool PrevElement () const;
64  bool LastElement () const;
65 
66  std::string GetAttribute ( const std::string& name, std::string& defaultValue ) const;
67  const char* GetAttribute ( const std::string& name, const char* defaultValue ) const;
68  uint32 GetAttribute ( const std::string& name, uint32 defaultValue ) const;
69  uint64 GetAttribute ( const std::string& name, uint64 defaultValue ) const;
70  int32 GetAttribute ( const std::string& name, int32 defaultValue ) const;
71  int64 GetAttribute ( const std::string& name, int64 defaultValue ) const;
72  bool GetAttribute ( const std::string& name, bool defaultValue ) const;
73  double GetAttribute ( const std::string& name, double defaultValue ) const;
74 
75  std::string GetAttribute ( const char* name, std::string& defaultValue ) const;
76  const char* GetAttribute ( const char* name, const char* defaultValue ) const;
77  uint32 GetAttribute ( const char* name, uint32 defaultValue ) const;
78  uint64 GetAttribute ( const char* name, uint64 defaultValue ) const;
79  int32 GetAttribute ( const char* name, int32 defaultValue ) const;
80  int64 GetAttribute ( const char* name, int64 defaultValue ) const;
81  bool GetAttribute ( const char* name, bool defaultValue ) const;
82  double GetAttribute ( const char* name, double defaultValue ) const;
83 
84 
85  std::string GetError () const;
87 
88 public:
89 
93  template< typename ContextType >
94  inline ContextType* GetContext () const
95  {
96  assert( context != nullptr );
97 
98  // Sprawdzanie dynamicznego typu tylko, jeżeli włączone jest RTTI.
99 #ifdef _CPPRTTI
100  assert( typeid( *context ) == typeid( ContextType ) );
101 #endif
102 
103  return static_cast< ContextType* >( context.get() );
104  }
105 
106 };
107 
108 
bool LastElement() const
Wchodzi do ostatniego elementu tablicy lub obiektu.
Definition: Deserializer.cpp:373
Interface for deserializers.
Definition: Deserializer.h:39
ParsingMode
Parsing modes. Serialization.
Definition: Deserializer.h:30
bool PrevElement() const
Przechodzi do poprzedniego elementu w tablicy lub w obiekcie.
Definition: Deserializer.cpp:310
bool NextElement() const
Przechodzi do następnego elementu w tablicy lub w obiekcie.
Definition: Deserializer.cpp:257
Definition: FilePosition.h:11
Plik zawiera definicje podstawowych typów zmiennych.
Przy parsowaniu alokuje nowe stringi.
bool EnterObject(const std::string &name) const
Wyszukuje obiekt o podanej nazwie i wchodzi w głąb drzewa.
Definition: Deserializer.cpp:143
bool LoadFromFile(const std::string &fileName, ParsingMode mode)
Wczytuje i parsuje podany plik.
Definition: Deserializer.cpp:66
bool FirstElement() const
Wchodzi do pierwszego elementu tablicy lub obiektu.
Definition: Deserializer.cpp:230
std::string GetAttribute(const std::string &name, std::string &defaultValue) const
Pobiera parę ( nazwa, wartość ) w aktualnym obiekcie.
Definition: Deserializer.cpp:513
const char * GetName() const
Zwraca nazwę węzła, w którym znajduje się serializator.
Definition: Deserializer.cpp:124
Definition: Deserializer.cpp:21
Nie alokuje stringów, ale zapisuje sobie wskaźniki na miejsca w parsowanym tekście.
bool EnterArray(const std::string &name) const
Wyszukuje tablicę o podanej nazwie i wchodzi w głąb drzewa.
Definition: Deserializer.cpp:172
ContextType * GetContext() const
Zwraca kontekst serializacji.
Definition: Deserializer.h:94
void Exit() const
Wychodzi z tablicy albo obiektu, w którym znaleziono się przy pomocy funkcji EnterObject lub EnterArr...
Definition: Deserializer.cpp:199
std::string GetError() const
Returns parsing error if it occured.
Definition: Deserializer.cpp:681
sw::FilePosition CurrentLineNumber() const
Definition: Deserializer.cpp:721
bool LoadFromString(const std::string &contentString)
Parsuje XMLa z podanego stringa.
Definition: Deserializer.cpp:114