inline std::string schema_name()

in src/ds/json_schema.h [91:185]


    inline std::string schema_name()
    {
      if constexpr (nonstd::is_specialization<T, std::optional>::value)
      {
        return schema_name<typename T::value_type>();
      }
      else if constexpr (nonstd::is_specialization<T, std::vector>::value)
      {
        if constexpr (std::is_same<T, std::vector<uint8_t>>::value)
        {
          // Byte vectors are always base64 encoded
          return "base64string";
        }
        else
        {
          return fmt::format("{}_array", schema_name<typename T::value_type>());
        }
      }
      else if constexpr (
        nonstd::is_specialization<T, std::map>::value ||
        nonstd::is_specialization<T, std::unordered_map>::value)
      {
        return fmt::format(
          "{}_to_{}",
          schema_name<typename T::key_type>(),
          schema_name<typename T::mapped_type>());
      }
      else if constexpr (nonstd::is_specialization<T, std::pair>::value)
      {
        return fmt::format(
          "{}_and_{}",
          schema_name<typename T::first_type>(),
          schema_name<typename T::second_type>());
      }
      else if constexpr (std::is_same<T, std::string>::value)
      {
        return "string";
      }
      else if constexpr (std::is_same<T, bool>::value)
      {
        return "boolean";
      }
      else if constexpr (std::is_same<T, uint8_t>::value)
      {
        return "uint8";
      }
      else if constexpr (std::is_same<T, uint16_t>::value)
      {
        return "uint16";
      }
      else if constexpr (std::is_same<T, uint32_t>::value)
      {
        return "uint32";
      }
      else if constexpr (std::is_same<T, uint64_t>::value)
      {
        return "uint64";
      }
      else if constexpr (std::is_same<T, int8_t>::value)
      {
        return "int8";
      }
      else if constexpr (std::is_same<T, int16_t>::value)
      {
        return "int16";
      }
      else if constexpr (std::is_same<T, int32_t>::value)
      {
        return "int32";
      }
      else if constexpr (std::is_same<T, int64_t>::value)
      {
        return "int64";
      }
      else if constexpr (std::is_same<T, float>::value)
      {
        return "float";
      }
      else if constexpr (std::is_same<T, double>::value)
      {
        return "double";
      }
      else if constexpr (std::is_same<T, nlohmann::json>::value)
      {
        return "json";
      }
      else if constexpr (std::is_same<T, JsonSchema>::value)
      {
        return "json_schema";
      }
      else
      {
        return adl::schema_name<T>();
      }
    }