$darkmode
Public Member Functions | |
| Box (const Box &)=default | |
| Box (Box &&)=default | |
| Box & | operator= (const Box &)=default |
| Box (Interface *i) | |
| Box (std::shared_ptr< Interface > i) | |
| std::shared_ptr< Interface > | get () |
| template<typename T > | |
| std::shared_ptr< T > | as () const |
| template<typename T > | |
| std::shared_ptr< T > | as_unsafe () const |
| Box | reset_pointer () && |
| Interface * | clone () const override |
| JsonType | type () const override |
| std::string | type_string () const override |
| bool | is_required () const override |
| const std::string & | description () const override |
| void | set_description (const std::string &s) override |
| Json | usage () const override |
| Json | json_schema () const override |
| void | validate (const Conf &c) const override |
| void | to_json (Json &j) const override |
| void | from_conf (const Conf &c) override |
| void | reset_ptr () override |
Public Member Functions inherited from fable::schema::Interface | |
| virtual bool | is_variant () const |
| virtual bool | is_valid (const Conf &c) const |
| virtual Json | to_json () const |
Friends | |
| void | to_json (Json &j, const Box &b) |
|
inline |
Return this type as a pointer to T.
This method can be used like so:
// In this example, we want a Struct. auto ptr = s.template as<Struct>();
|
inline |
Return this type as a pointer to T.
This is unsafe in that you need to check the resulting shared pointer yourself for whether the dynamic cast was successful or not.
|
inlineoverridevirtual |
Return a new instance of the object.
This is implemented by Base and allows us to wrap implementors of Interface with Schema.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return human-readable description.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Apply the input JSON configuration.
This does not validate the input.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return whether this interface needs to be set.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return the JSON schema.
Example output:
{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "stand-in no-operation simulator", "properties": { "vehicles": { "description": "list of vehicle names to make available", "items": { "type": "string" }, "type": "array" } }, "title": "nop", "additionalProperties": false, "type": "object" }
See the following links for the specification:
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Reset the internal pointer to nullptr, protecting against invalid access.
This should be used when a schema is used after the backing data has been deleted.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Set human-readable description.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return the current value of the destination.
Warning: This is NOT an efficient operation, but it can be useful for cases where speed is not important.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return the JSON type.
If this is a variant type of differing types, then null should be returned. Otherwise, the type remains unique and can be returned. A type that is null is almost always a variant type of some sort, if even only an optional type.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return the type as a string.
The format of the string is:
"[array of] TYPE"
where TYPE is one of: null, object, boolean, float, integer, unsigned, string, and unknown.
Example output:
"object" "array of boolean" "array of object"
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Return a compact JSON description of the schema. This is useful for human-readable error output.
Example output:
{ "field1": "boolean! :: lorem ipsum dolor sit amet", "field2": { "field2.1": "integer :: lorem ipsum dolor sit amet" "field2.2": "boolean :: lorem ipsum dolor sit amet" }, "field3": "array of integer :: lorem ipsum dolor sit amet", "field4": [{ "field4.1": "string :: lorem ipsum dolor sit amet" "field4.2": "boolean :: lorem ipsum dolor sit amet" }] }
When describing the schema of a primitive array, we can represent that as a single string. But when the array contains an object, we wrap a single object in an array. This isn't awfully consistent, but it's the best we can do.
Implements fable::schema::Interface.
|
inlineoverridevirtual |
Validate the input JSON configuration.
If you don't have a Conf but would like to validate a Json type, then construct a Conf on the fly:
s.validate(Conf{j});
This function is not provided inline to prevent incorrect use.
Implements fable::schema::Interface.