ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
serializertools.h
1 //===========================================================================
2 #ifndef comfrm_unt_SerializerToolsH
3 #define comfrm_unt_SerializerToolsH
4 //===========================================================================
5 // Заготовка модуля SerializerTools была сгенерирована специальным средством RAD разработки SA2-DE.
6 // Все права защищены. (2016)
7 //
8 // В данном файле представлен исходный текст основного заголовочного файла модуля.
9 //
10 // В данном файле представлен паттерн класса.
11 // Описание класса:
12 // Отображение, сопоставляющее строкам произвольные типы данных
13 // ======================================= //
14 // Параметры новой разработки.
15 // ======================================= //
16 // Имя комплекса: GCAD (gcd)
17 // Имя решения: GCAD_2 (gc3)
18 // Имя проекта: Default (def)
19 // Полный SID: defgc3
20 // Время создания: 13:29:19
21 // Дата создания: 2016-03-10
22 // ======================================= //
23 // ============================================================================================ //
24 // [prd]Period: 03/2016
25 // [aut]Author: Першин Антон
26 // [did]DeveloperID: ap
27 // [pid]ProblemID: 00001
28 // [rvs = did.date.pid]Revision: //#ap.2016-03-10.00001
29 // [dsc]Description: Создание файла.
30 // [ccm]CodeComment: rvs.{[s]Start | [e]End | []}{[n]New | [o]Old | [d]Develop}
31 // ============================================================================================ //
32 
33 //========================================================================
34 // ДОПОЛНИТЕЛЬНЫЕ ПОДКЛЮЧЕНИЯ (Типы и модули, необходимые для .h - файла)
35 //------------------------------------------------------------------------
36 #include "libtools.h"
37 //#include "comfrm_unt_StreamTools.h"
38 
39 #include <vector>
40 #include <forward_list>
41 #include <stack>
42 #include <unordered_set>
43 #include <unordered_map>
44 #include <map>
45 #include <type_traits>
46 
47 namespace std
48 {
49  template < typename >
50  struct is_std_vector : std::false_type {};
51  template< typename T >
52  struct is_std_vector< std::vector< T > > : std::true_type {};
53 
54  template < typename >
55  struct is_std_list : std::false_type {};
56  template< typename T >
57  struct is_std_list< std::list< T > > : std::true_type {};
58 
59  template < typename >
60  struct is_std_deque : std::false_type {};
61  template< typename T >
62  struct is_std_deque< std::deque< T > > : std::true_type {};
63 
64  template < typename >
65  struct is_std_forward_list : std::false_type {};
66  template< typename T >
67  struct is_std_forward_list< std::forward_list< T > > : std::true_type {};
68 
69  template < typename >
70  struct is_std_queue : std::false_type {};
71  template< typename T >
72  struct is_std_queue< std::queue< T > > : std::true_type {};
73 
74  template < typename >
75  struct is_std_set : std::false_type {};
76  template< typename T >
77  struct is_std_set< std::set< T > > : std::true_type {};
78 
79  template < typename >
80  struct is_std_stack : std::false_type {};
81  template< typename T >
82  struct is_std_stack< std::stack< T > > : std::true_type {};
83 
84  template < typename >
85  struct is_std_unordered_set : std::false_type {};
86  template< typename T >
87  struct is_std_unordered_set< std::unordered_set< T > > : std::true_type {};
88 
89 
90 
91  template < typename >
92  struct is_std_map : std::false_type {};
93  template< typename K, typename V >
94  struct is_std_map< std::map< K, V > > : std::true_type {};
95 
96  template < typename >
97  struct is_std_unordered_map : std::false_type {};
98  template< typename K, typename V >
99  struct is_std_unordered_map< std::unordered_map< K, V > > : std::true_type {};
100 
101  template< typename T >
102  struct is_simple_stl_container : std::integral_constant < bool,
103  std::is_std_vector<T>::value ||
104  std::is_std_list<T>::value ||
105  std::is_std_deque<T>::value ||
106  std::is_std_forward_list<T>::value ||
107  std::is_std_queue<T>::value ||
108  std::is_std_stack<T>::value > {};
109  // !std::is_base_of< std::basic_string< char >, T >::value > {};
110 }
111 
112 namespace com
113 {
114  namespace srl
115  {
121  template < typename T >
122  bool serializeBaseType(std::ostream& o_out, T p_member)
123  {
124  o_out.write((const char*) &p_member, sizeof(p_member));
125  return true;
126  }
127 
133  template < typename T >
134  bool serializeBaseType(std::ostream& o_out, const T* p_member, size_t p_elemCount)
135  {
136  // Кол-во элементов в массиве
137  o_out.write((const char*) &p_elemCount, sizeof(p_elemCount));
138 
139  // Сам массив
140  o_out.write((const char*) p_member, p_elemCount*sizeof(T));
141 
142  return true;
143  }
144 
149  bool serializeStdString(std::ostream& o_out, const std::string& p_member)
150  {
151  // Кол-во элементов в массиве
152  size_t elemCount = p_member.size();
153  o_out.write((const char*) &elemCount, sizeof(elemCount));
154 
155  // Сам массив
156  o_out.write(p_member.c_str(), elemCount);
157 
158  return true;
159  }
160 
161  template < typename T >
162  const T* getPointer(const T& p_t)
163  {
164  return &p_t;
165  }
166 
167  template < typename T >
168  const T* getPointer(const T* p_t)
169  {
170  return p_t;
171  }
172  }
173 }
174 //===========================================================================
175 #endif
176 //===========================================================================
177 
Definition: serializertools.h:70
Definition: serializertools.h:80
Definition: serializertools.h:97
Definition: serializertools.h:60
Definition: serializertools.h:102
Definition: serializertools.h:75
Definition: serializertools.h:92
Definition: serializertools.h:50
Definition: serializertools.h:65
Definition: serializertools.h:85
Definition: serializertools.h:55