5#include "Utilities/Strings.h"
6#include "ValueVariant.h"
8#include "Rendering/DataFormat.h"
10#include "Foundation/StringView.h"
11#include "Foundation/Reflection/TypeDatabase.h"
20 extern const size_t ParsedDataTypeSizes[];
21 extern const char * ParsedDataTypeNames[];
23 enum struct ParsedValueTextureFlags
29 ENABLE_ENUM_FLAGS(ParsedValueTextureFlags);
31 enum struct ParsedValueBufferFlags
36 ENABLE_ENUM_FLAGS(ParsedValueBufferFlags);
53 ParsedDataType type = ParsedDataType::Unknown;
58 size_t dimension =
static_cast<size_t>(-1);
64 glm::vec2 float2Value;
65 glm::vec3 float3Value;
66 glm::vec4 float4Value;
67 glm::mat4 float4x4Value;
73 glm::uvec2 uint2Value;
74 glm::uvec3 uint3Value;
75 glm::uvec4 uint4Value;
79 ParsedValueTextureFlags flags;
80 ParsedDataType dataType;
84 ParsedValueBufferFlags flags;
85 ParsedDataType dataType;
88 float _fill[16] = { 0.f };
90 std::vector<std::pair<size_t, std::string>> expressions;
92 std::vector<ParsedValue> values;
95 bool asBool(
bool& rv,
bool complain =
true)
const;
96 bool asFloat(
float& rv,
bool complain =
true)
const;
97 bool asInt(
int& rv,
bool complain =
true)
const;
100 using TokenStream = std::vector<StringView>;
102 bool matchChars(
const char c,
const StringView & chars);
104 void COGSCORE_DLL_API split(
const StringView & str,
const StringView & splits, TokenStream & tokens);
105 void COGSCORE_DLL_API split(
const StringView & str,
const StringView & splits,
const int grouper, TokenStream & tokens);
108 TokenStream tokenize(
const StringView & valueStr);
109 void tokenize(
const StringView & valueStr, TokenStream & tokens);
111 void COGSCORE_DLL_API parseStringValue(
const StringView & value, ParsedValue & v);
113 Cogs::TextureFormat COGSCORE_DLL_API parseTextureFormat(
const StringView & str, Cogs::TextureFormat defaultFormat = TextureFormat::R8G8B8A8_UNORM_SRGB);
115 double parseDouble(
const StringView & token,
double defaultValue = 0);
116 float parseFloat(
const StringView & token,
float defaultValue = 0);
117 int32_t parseInt(
const StringView & token, int32_t defaultValue = 0);
118 uint32_t parseUInt(
const StringView & token, uint32_t defaultValue = 0);
119 bool parseBool(
const StringView & token,
bool defaultValue =
false);
140 T parseEnum(
const StringView & token, T defaultValue = T())
142 return static_cast<T
>(parseEnum(token, Reflection::TypeDatabase::getType<T>(),
static_cast<int>(defaultValue)));
146 T parseEnumFlags(
const StringView & token, T defaultValue = T())
148 return static_cast<T
>(parseEnumFlags(token, Reflection::TypeDatabase::getType<T>(),
static_cast<int>(defaultValue)));
151 void parseQueryString(std::vector<ParsedValue>& attributes, StringView query);
153 void parseValues(
float * values,
const TokenStream & tokens,
size_t expected);
154 void parseValues(
double * values,
const TokenStream & tokens,
size_t expected);
155 void parseValues(
int * values,
const TokenStream & tokens,
size_t expected);
156 void parseValues(uint32_t * values,
const TokenStream & tokens,
size_t expected);
157 void parseValues(
bool* values,
const TokenStream & tokens,
size_t expected);
159 void parseValues(std::vector<std::pair<size_t, std::string>>& expressions,
float * values,
const TokenStream & tokens,
size_t expected);
160 void parseValues(std::vector<std::pair<size_t, std::string>>& expressions,
double * values,
const TokenStream & tokens,
size_t expected);
161 void parseValues(std::vector<std::pair<size_t, std::string>>& expressions,
int * values,
const TokenStream & tokens,
size_t expected);
162 void parseValues(std::vector<std::pair<size_t, std::string>>& expressions, uint32_t * values,
const TokenStream & tokens,
size_t expected);
163 void parseValues(std::vector<std::pair<size_t, std::string>>& expressions,
bool* values,
const TokenStream & tokens,
size_t expected);
Represents a discrete type definition, describing a native type class.
Provides a weakly referenced view over the contents of a string.
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
bool parseBool_(bool &rv, const StringView &token)
Parse a bool putting return value in rv and returning whether or not parsing was successful.
uint64_t COGSCORE_DLL_API parseISO8601(const StringView &iso8601)
Parse ISO 8601 timestamps.
bool parseInt_(int32_t &rv, const StringView &token)
Parse an int putting return value in rv and returning whether or not parsing was successful.
Stores the parsed output of a key/value pair.
std::string key
The input key.
std::string value
The value is available for all non vector types.