No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

105 líneas
2.3 KiB

  1. #pragma once
  2. #include <cppamqp/types.h>
  3. namespace cppamqp
  4. {
  5. template<>
  6. inline void field_value::set<bool>(bool&& value)
  7. {
  8. this->kind = AMQP_FIELD_KIND_BOOLEAN;
  9. this->value.boolean = static_cast<int>(value);
  10. }
  11. template<>
  12. inline void field_value::set<int8_t>(int8_t&& value)
  13. {
  14. this->kind = AMQP_FIELD_KIND_I8;
  15. this->value.i8 = value;
  16. }
  17. template<>
  18. inline void field_value::set<uint8_t>(uint8_t&& value)
  19. {
  20. this->kind = AMQP_FIELD_KIND_U8;
  21. this->value.u8 = value;
  22. }
  23. template<>
  24. inline void field_value::set<int16_t>(int16_t&& value)
  25. {
  26. this->kind = AMQP_FIELD_KIND_I16;
  27. this->value.i16 = value;
  28. }
  29. template<>
  30. inline void field_value::set<uint16_t>(uint16_t&& value)
  31. {
  32. this->kind = AMQP_FIELD_KIND_U16;
  33. this->value.u16 = value;
  34. }
  35. template<>
  36. inline void field_value::set<int32_t>(int32_t&& value)
  37. {
  38. this->kind = AMQP_FIELD_KIND_I32;
  39. this->value.i32 = value;
  40. }
  41. template<>
  42. inline void field_value::set<uint32_t>(uint32_t&& value)
  43. {
  44. this->kind = AMQP_FIELD_KIND_U32;
  45. this->value.u32 = value;
  46. }
  47. template<>
  48. inline void field_value::set<int64_t>(int64_t&& value)
  49. {
  50. this->kind = AMQP_FIELD_KIND_I64;
  51. this->value.i64 = value;
  52. }
  53. template<>
  54. inline void field_value::set<uint64_t>(uint64_t&& value)
  55. {
  56. this->kind = AMQP_FIELD_KIND_U64;
  57. this->value.u64 = value;
  58. }
  59. template<>
  60. inline void field_value::set<float>(float&& value)
  61. {
  62. this->kind = AMQP_FIELD_KIND_F32;
  63. this->value.f32 = value;
  64. }
  65. template<>
  66. inline void field_value::set<double>(double&& value)
  67. {
  68. this->kind = AMQP_FIELD_KIND_F64;
  69. this->value.f64 = value;
  70. }
  71. field_value::field_value()
  72. {
  73. this->kind = AMQP_FIELD_KIND_VOID;
  74. }
  75. template<typename T_value>
  76. field_value::field_value(T_value&& value)
  77. { set(std::forward<T_value>(value)); }
  78. template<typename T_value>
  79. field_value& field_value::operator=(T_value&& value)
  80. {
  81. set(std::forward<T_value>(value));
  82. return *this;
  83. }
  84. inline const amqp_field_value_t& field_value::get() const
  85. { return *this; }
  86. }