json_fwd.hpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_
  2. #define INCLUDE_NLOHMANN_JSON_FWD_HPP_
  3. #include <cstdint> // int64_t, uint64_t
  4. #include <map> // map
  5. #include <memory> // allocator
  6. #include <string> // string
  7. #include <vector> // vector
  8. /*!
  9. @brief namespace for Niels Lohmann
  10. @see https://github.com/nlohmann
  11. @since version 1.0.0
  12. */
  13. namespace nlohmann
  14. {
  15. /*!
  16. @brief default JSONSerializer template argument
  17. This serializer ignores the template arguments and uses ADL
  18. ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl))
  19. for serialization.
  20. */
  21. template<typename T = void, typename SFINAE = void>
  22. struct adl_serializer;
  23. /// a class to store JSON values
  24. /// @sa https://json.nlohmann.me/api/basic_json/
  25. template<template<typename U, typename V, typename... Args> class ObjectType =
  26. std::map,
  27. template<typename U, typename... Args> class ArrayType = std::vector,
  28. class StringType = std::string, class BooleanType = bool,
  29. class NumberIntegerType = std::int64_t,
  30. class NumberUnsignedType = std::uint64_t,
  31. class NumberFloatType = double,
  32. template<typename U> class AllocatorType = std::allocator,
  33. template<typename T, typename SFINAE = void> class JSONSerializer =
  34. adl_serializer,
  35. class BinaryType = std::vector<std::uint8_t>>
  36. class basic_json;
  37. /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document
  38. /// @sa https://json.nlohmann.me/api/json_pointer/
  39. template<typename BasicJsonType>
  40. class json_pointer;
  41. /*!
  42. @brief default specialization
  43. @sa https://json.nlohmann.me/api/json/
  44. */
  45. using json = basic_json<>;
  46. /// @brief a minimal map-like container that preserves insertion order
  47. /// @sa https://json.nlohmann.me/api/ordered_map/
  48. template<class Key, class T, class IgnoredLess, class Allocator>
  49. struct ordered_map;
  50. /// @brief specialization that maintains the insertion order of object keys
  51. /// @sa https://json.nlohmann.me/api/ordered_json/
  52. using ordered_json = basic_json<nlohmann::ordered_map>;
  53. } // namespace nlohmann
  54. #endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_