skiff_schema-inl.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #ifndef SKIFF_SCHEMA_H
  3. #error "Direct inclusion of this file is not allowed, include skiff_schema.h"
  4. // For the sake of sane code completion.
  5. #include "skiff_schema.h"
  6. #endif
  7. #undef SKIFF_SCHEMA_H
  8. namespace NSkiff {
  9. ////////////////////////////////////////////////////////////////////////////////
  10. inline bool IsSimpleType(EWireType type)
  11. {
  12. switch (type) {
  13. case EWireType::Int8:
  14. case EWireType::Int16:
  15. case EWireType::Int32:
  16. case EWireType::Int64:
  17. case EWireType::Int128:
  18. case EWireType::Int256:
  19. case EWireType::Uint8:
  20. case EWireType::Uint16:
  21. case EWireType::Uint32:
  22. case EWireType::Uint64:
  23. case EWireType::Uint128:
  24. case EWireType::Uint256:
  25. case EWireType::Double:
  26. case EWireType::Boolean:
  27. case EWireType::String32:
  28. case EWireType::Yson32:
  29. case EWireType::Nothing:
  30. return true;
  31. case EWireType::Tuple:
  32. case EWireType::Variant8:
  33. case EWireType::Variant16:
  34. case EWireType::RepeatedVariant8:
  35. case EWireType::RepeatedVariant16:
  36. return false;
  37. }
  38. Y_ABORT();
  39. }
  40. ////////////////////////////////////////////////////////////////////////////////
  41. template <EWireType WireType>
  42. TComplexSchema<WireType>::TComplexSchema(TSkiffSchemaList elements)
  43. : TSkiffSchema(WireType)
  44. , Elements_(std::move(elements))
  45. { }
  46. template <EWireType WireType>
  47. const TSkiffSchemaList& TComplexSchema<WireType>::GetChildren() const
  48. {
  49. return Elements_;
  50. }
  51. ////////////////////////////////////////////////////////////////////////////////
  52. } // namespace NSkiff