中间件底层,websocket

tuple.hpp 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. //******************************************************************************
  2. // RCF - Remote Call Framework
  3. //
  4. // Copyright (c) 2005 - 2020, Delta V Software. All rights reserved.
  5. // http://www.deltavsoft.com
  6. //
  7. // RCF is distributed under dual licenses - closed source or GPL.
  8. // Consult your particular license for conditions of use.
  9. //
  10. // If you have not purchased a commercial license, you are using RCF
  11. // under GPL terms.
  12. //
  13. // Version: 3.2
  14. // Contact: support <at> deltavsoft.com
  15. //
  16. //******************************************************************************
  17. #ifndef INCLUDE_SF_TUPLE_STD_HPP
  18. #define INCLUDE_SF_TUPLE_STD_HPP
  19. #include <RCF/Config.hpp>
  20. #include <tuple>
  21. namespace SF {
  22. class Archive;
  23. // std::tuple
  24. template<
  25. typename T0>
  26. void serialize(SF::Archive &ar, std::tuple<T0> &t)
  27. {
  28. ar
  29. & std::get<0>(t);
  30. }
  31. template<
  32. typename T0,
  33. typename T1>
  34. void serialize(SF::Archive &ar, std::tuple<T0,T1> &t)
  35. {
  36. ar
  37. & std::get<0>(t)
  38. & std::get<1>(t);
  39. }
  40. template<
  41. typename T0,
  42. typename T1,
  43. typename T2>
  44. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2> &t)
  45. {
  46. ar
  47. & std::get<0>(t)
  48. & std::get<1>(t)
  49. & std::get<2>(t);
  50. }
  51. template<
  52. typename T0,
  53. typename T1,
  54. typename T2,
  55. typename T3>
  56. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3> &t)
  57. {
  58. ar
  59. & std::get<0>(t)
  60. & std::get<1>(t)
  61. & std::get<2>(t)
  62. & std::get<3>(t);
  63. }
  64. template<
  65. typename T0,
  66. typename T1,
  67. typename T2,
  68. typename T3,
  69. typename T4>
  70. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4> &t)
  71. {
  72. ar
  73. & std::get<0>(t)
  74. & std::get<1>(t)
  75. & std::get<2>(t)
  76. & std::get<3>(t)
  77. & std::get<4>(t);
  78. }
  79. template<
  80. typename T0,
  81. typename T1,
  82. typename T2,
  83. typename T3,
  84. typename T4,
  85. typename T5>
  86. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4,T5> &t)
  87. {
  88. ar
  89. & std::get<0>(t)
  90. & std::get<1>(t)
  91. & std::get<2>(t)
  92. & std::get<3>(t)
  93. & std::get<4>(t)
  94. & std::get<5>(t);
  95. }
  96. template<
  97. typename T0,
  98. typename T1,
  99. typename T2,
  100. typename T3,
  101. typename T4,
  102. typename T5,
  103. typename T6>
  104. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4,T5,T6> &t)
  105. {
  106. ar
  107. & std::get<0>(t)
  108. & std::get<1>(t)
  109. & std::get<2>(t)
  110. & std::get<3>(t)
  111. & std::get<4>(t)
  112. & std::get<5>(t)
  113. & std::get<6>(t);
  114. }
  115. template<
  116. typename T0,
  117. typename T1,
  118. typename T2,
  119. typename T3,
  120. typename T4,
  121. typename T5,
  122. typename T6,
  123. typename T7>
  124. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4,T5,T6,T7> &t)
  125. {
  126. ar
  127. & std::get<0>(t)
  128. & std::get<1>(t)
  129. & std::get<2>(t)
  130. & std::get<3>(t)
  131. & std::get<4>(t)
  132. & std::get<5>(t)
  133. & std::get<6>(t)
  134. & std::get<7>(t);
  135. }
  136. // Visual C++ 11 doesn't support any more args to std::tuple<>.
  137. /*
  138. template<
  139. typename T0,
  140. typename T1,
  141. typename T2,
  142. typename T3,
  143. typename T4,
  144. typename T5,
  145. typename T6,
  146. typename T7,
  147. typename T8>
  148. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8> &t)
  149. {
  150. ar
  151. & std::get<0>(t)
  152. & std::get<1>(t)
  153. & std::get<2>(t)
  154. & std::get<3>(t)
  155. & std::get<4>(t)
  156. & std::get<5>(t)
  157. & std::get<6>(t)
  158. & std::get<7>(t)
  159. & std::get<8>(t);
  160. }
  161. template<
  162. typename T0,
  163. typename T1,
  164. typename T2,
  165. typename T3,
  166. typename T4,
  167. typename T5,
  168. typename T6,
  169. typename T7,
  170. typename T8,
  171. typename T9>
  172. void serialize(SF::Archive &ar, std::tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9> &t)
  173. {
  174. ar
  175. & std::get<0>(t)
  176. & std::get<1>(t)
  177. & std::get<2>(t)
  178. & std::get<3>(t)
  179. & std::get<4>(t)
  180. & std::get<5>(t)
  181. & std::get<6>(t)
  182. & std::get<7>(t)
  183. & std::get<8>(t)
  184. & std::get<9>(t);
  185. }
  186. */
  187. }
  188. #endif // ! INCLUDE_SF_TUPLE_STD_HPP