Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,98 @@ bool is_valid_expression(const std::string expr, std::string &err_msg)
return res;
}

conduit::Node number_schema()
{
conduit::Node n;
n["type"] = "number";
return n;
}

conduit::Node string_schema()
{
conduit::Node n;
n["type"] = "string";
return n;
}

conduit::Node vec3_schema(const std::string var1, const std::string var2, const std::string var3)
{
conduit::Node n;
n["type"] = "object";
n["additionalProperties"] = false;

n["properties/" + var1].set(number_schema());
n["properties/" + var2].set(number_schema());
n["properties/" + var3].set(number_schema());

n["required"].append() = var1;
n["required"].append() = var2;
n["required"].append() = var3;

return n;
}

conduit::Node vec3_schema()
{
return vec3_schema("x", "y", "z");
}

conduit::Node vec3_schema_anyOf(const std::string var1, const std::string var2, const std::string var3)
{
conduit::Node n;
n["type"] = "object";
n["additionalProperties"] = false;

n["properties/" + var1].set(number_schema());
n["properties/" + var2].set(number_schema());
n["properties/" + var3].set(number_schema());

conduit::Node var1_required;
var1_required["type"] = "object";
var1_required["required"] = var1;
n["anyOf"].append().set(var1_required);

conduit::Node var2_required;
var2_required["type"] = "object";
var2_required["required"] = var1;
n["anyOf"].append().set(var2_required);

conduit::Node var3_required;
var3_required["type"] = "object";
var3_required["required"] = var1;
n["anyOf"].append().set(var3_required);

return n;
}

conduit::Node vec3_schema_anyOf()
{
return vec3_schema_anyOf("x", "y", "z");
}

conduit::Node array_schema(const conduit::Node &item_schema)
{
conduit::Node n;
n["type"] = "array";
n["items"].set(item_schema);
return n;
}

conduit::Node array_schema()
{
conduit::Node n;
n["type"] = "array";
return n;
}

conduit::Node ignore_schema()
{
conduit::Node n;
n["type"] = "object";
n["constraints/skip"] = true;
return n;
}

//-----------------------------------------------------------------------------
bool
check_numeric(const std::string path,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,28 @@ namespace runtime
namespace filters
{

conduit::Node ASCENT_API number_schema();

conduit::Node ASCENT_API string_schema();

conduit::Node ASCENT_API vec3_schema();

conduit::Node ASCENT_API vec3_schema(const std::string var1,
const std::string var2,
const std::string var3);

conduit::Node ASCENT_API vec3_schema_anyOf();

conduit::Node ASCENT_API vec3_schema_anyOf(const std::string var1,
const std::string var2,
const std::string var3);

conduit::Node ASCENT_API array_schema();

conduit::Node ASCENT_API array_schema(const conduit::Node &item_schema);

conduit::Node ASCENT_API ignore_schema();

bool ASCENT_API check_numeric(const std::string path,
const conduit::Node &params,
conduit::Node &info,
Expand Down Expand Up @@ -77,6 +99,7 @@ void ASCENT_API path_helper(std::vector<std::string> &paths,

std::string ASCENT_API surprise_check(const std::vector<std::string> &valid_paths,
const conduit::Node &node);

//
// Ignore paths only ignores top level paths, differing lower level
// paths to another surprise check.
Expand Down
Loading
Loading