enum.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include <jvalidate/forward.h>
  3. namespace jvalidate::adapter {
  4. enum class Type : int8_t {
  5. Null = 0b0000001,
  6. Boolean = 0b0000010,
  7. Integer = 0b0000100,
  8. Number = 0b0001100,
  9. String = 0b0010000,
  10. Array = 0b0100000,
  11. Object = 0b1000000,
  12. };
  13. inline bool operator&(Type lhs, Type rhs) {
  14. return static_cast<bool>((static_cast<int>(lhs) & static_cast<int>(rhs)) ==
  15. static_cast<int>(rhs));
  16. }
  17. }
  18. namespace jvalidate::schema {
  19. enum class Version : int {
  20. // Keywords: type, properties, patternProperties, additionalProperties, items, additionalItems
  21. // required, dependencies, minimum, maximum, exclusiveMinimum, exclusiveMaximum,
  22. // minItems, maxItems, uniqueItems, pattern, minLength, maxLength, enum, default,
  23. // title, description, format, divisibleBy, disallow, extends, id, $ref, $schema
  24. /* Draft03, */
  25. // New: allOf, anyOf, oneOf, not, minProperties, maxProperties, definitions
  26. // Changed: required, dependencies
  27. // Renamed: divisibleBy -> multipleOf
  28. // Removed: type(schema), extends, disallow
  29. // Formats: date-time, email, hostname, ipv4, ipv6, uri
  30. // https://json-schema.org/draft-04/schema
  31. Draft04,
  32. // New: "boolean as schema", propertyNames, contains, const
  33. // Changed: $ref, exclusiveMinimum, exclusiveMaximum, type, required, dependencies, examples
  34. // Renamed: id -> $id
  35. // Formats: uri-template, uri-reference, json-pointer
  36. // https://json-schema.org/draft-06/schema
  37. Draft06,
  38. // New: $comment, if, then, else, readOnly, writeOnly, contentMediaType, contentEncoding
  39. // Formats: iri, iri-reference, uri-template*, idn-email, idn-hostname, json-pointer*,
  40. // relative-json-pointer, regex, date, time
  41. // https://json-schema.org/draft-07/schema
  42. Draft07,
  43. // New: $anchor, $recursiveAnchor, $recursiveRef, unevaluatedItems, unevaluatedProperties,
  44. // maxContains, minContains
  45. // Changed: $id, $ref, format
  46. // Renamed: definitions -> $defs
  47. // Split: dependencies -> (dependentSchemas, dependentRequired)
  48. // Formats: duration, hostname*, idn-hostname*, uuid
  49. // https://json-schema.org/draft/2019-09/schema
  50. Draft2019_09,
  51. // Renamed: (items(array), additionalItems) -> (prefixItems, items),
  52. // $recursiveRef -> $dynamicRef, $recursiveAnchor -> $dynamicAnchor
  53. // Split: format -> (format-annotation, format-assertion)
  54. // https://json-schema.org/draft/2020-12/schema
  55. Draft2020_12,
  56. };
  57. }