Blaze 0.0.1
The ultra high-performance JSON Schema evaluator
Loading...
Searching...
No Matches
Codegen

A code generation utility built on top of Blaze. More...

Classes

struct  sourcemeta::blaze::CodegenIRType
struct  sourcemeta::blaze::CodegenIRScalar
struct  sourcemeta::blaze::CodegenIREnumeration
struct  sourcemeta::blaze::CodegenIRUnion
struct  sourcemeta::blaze::CodegenIRIntersection
struct  sourcemeta::blaze::CodegenIRObjectValue
struct  sourcemeta::blaze::CodegenIRObjectPatternProperty
struct  sourcemeta::blaze::CodegenIRObject
struct  sourcemeta::blaze::CodegenIRArray
struct  sourcemeta::blaze::CodegenIRTuple
struct  sourcemeta::blaze::CodegenIRImpossible
struct  sourcemeta::blaze::CodegenIRAny
struct  sourcemeta::blaze::CodegenIRConditional
struct  sourcemeta::blaze::CodegenIRReference
class  sourcemeta::blaze::CodegenUnsupportedKeywordError
class  sourcemeta::blaze::CodegenUnsupportedKeywordValueError
class  sourcemeta::blaze::CodegenUnexpectedSchemaError
class  sourcemeta::blaze::TypeScript

Typedefs

using sourcemeta::blaze::CodegenIREntity
using sourcemeta::blaze::CodegenIRResult = std::vector<CodegenIREntity>
using sourcemeta::blaze::CodegenCompiler

Enumerations

enum class  CodegenIRScalarType : std::uint8_t {
  String , Number , Integer , Boolean ,
  Null
}

Functions

SOURCEMETA_BLAZE_CODEGEN_EXPORT auto sourcemeta::blaze::default_compiler (const sourcemeta::core::JSON &schema, const sourcemeta::core::SchemaFrame &frame, const sourcemeta::core::SchemaFrame::Location &location, const sourcemeta::core::SchemaResolver &resolver, const sourcemeta::core::JSON &subschema) -> CodegenIREntity
SOURCEMETA_BLAZE_CODEGEN_EXPORT auto sourcemeta::blaze::compile (const sourcemeta::core::JSON &input, const sourcemeta::core::SchemaWalker &walker, const sourcemeta::core::SchemaResolver &resolver, const CodegenCompiler &compiler, const std::string_view default_dialect="", const std::string_view default_id="") -> CodegenIRResult
SOURCEMETA_BLAZE_CODEGEN_EXPORT auto sourcemeta::blaze::symbol (const sourcemeta::core::SchemaFrame &frame, const sourcemeta::core::SchemaFrame::Location &location) -> std::vector< std::string >
SOURCEMETA_BLAZE_CODEGEN_EXPORT auto sourcemeta::blaze::mangle (const std::string_view prefix, const sourcemeta::core::Pointer &pointer, const std::vector< std::string > &symbol, std::map< std::string, sourcemeta::core::Pointer > &cache) -> const std::string &
template<typename T>
auto sourcemeta::blaze::generate (std::ostream &output, const CodegenIRResult &result, const std::string_view prefix="Schema") -> void

Detailed Description

A code generation utility built on top of Blaze.


Class Documentation

◆ sourcemeta::blaze::CodegenIRType

struct sourcemeta::blaze::CodegenIRType
Inheritance diagram for sourcemeta::blaze::CodegenIRType:
sourcemeta::blaze::CodegenIRAny sourcemeta::blaze::CodegenIRArray sourcemeta::blaze::CodegenIRConditional sourcemeta::blaze::CodegenIREnumeration sourcemeta::blaze::CodegenIRImpossible sourcemeta::blaze::CodegenIRIntersection sourcemeta::blaze::CodegenIRObject sourcemeta::blaze::CodegenIRObjectPatternProperty sourcemeta::blaze::CodegenIRObjectValue sourcemeta::blaze::CodegenIRReference sourcemeta::blaze::CodegenIRScalar sourcemeta::blaze::CodegenIRTuple sourcemeta::blaze::CodegenIRUnion

Public Attributes

sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRScalar

struct sourcemeta::blaze::CodegenIRScalar
Inheritance diagram for sourcemeta::blaze::CodegenIRScalar:
sourcemeta::blaze::CodegenIRType

Public Attributes

CodegenIRScalarType value
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIREnumeration

struct sourcemeta::blaze::CodegenIREnumeration
Inheritance diagram for sourcemeta::blaze::CodegenIREnumeration:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::vector< sourcemeta::core::JSON > values
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRUnion

struct sourcemeta::blaze::CodegenIRUnion
Inheritance diagram for sourcemeta::blaze::CodegenIRUnion:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::vector< CodegenIRType > values
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRIntersection

struct sourcemeta::blaze::CodegenIRIntersection
Inheritance diagram for sourcemeta::blaze::CodegenIRIntersection:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::vector< CodegenIRType > values
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRObjectValue

struct sourcemeta::blaze::CodegenIRObjectValue
Inheritance diagram for sourcemeta::blaze::CodegenIRObjectValue:
sourcemeta::blaze::CodegenIRType

Public Attributes

bool required
bool immutable
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRObjectPatternProperty

struct sourcemeta::blaze::CodegenIRObjectPatternProperty
Inheritance diagram for sourcemeta::blaze::CodegenIRObjectPatternProperty:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::optional< std::string > prefix
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRObject

struct sourcemeta::blaze::CodegenIRObject
Inheritance diagram for sourcemeta::blaze::CodegenIRObject:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::vector< std::pair< sourcemeta::core::JSON::String, CodegenIRObjectValue > > members
std::variant< bool, CodegenIRType > additional
std::vector< CodegenIRObjectPatternProperty > pattern
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRArray

struct sourcemeta::blaze::CodegenIRArray
Inheritance diagram for sourcemeta::blaze::CodegenIRArray:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::optional< CodegenIRType > items
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRTuple

struct sourcemeta::blaze::CodegenIRTuple
Inheritance diagram for sourcemeta::blaze::CodegenIRTuple:
sourcemeta::blaze::CodegenIRType

Public Attributes

std::vector< CodegenIRType > items
std::optional< CodegenIRType > additional
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRImpossible

struct sourcemeta::blaze::CodegenIRImpossible
Inheritance diagram for sourcemeta::blaze::CodegenIRImpossible:
sourcemeta::blaze::CodegenIRType

Additional Inherited Members

Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRAny

struct sourcemeta::blaze::CodegenIRAny
Inheritance diagram for sourcemeta::blaze::CodegenIRAny:
sourcemeta::blaze::CodegenIRType

Additional Inherited Members

Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRConditional

struct sourcemeta::blaze::CodegenIRConditional
Inheritance diagram for sourcemeta::blaze::CodegenIRConditional:
sourcemeta::blaze::CodegenIRType

Public Attributes

CodegenIRType condition
CodegenIRType consequent
CodegenIRType alternative
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenIRReference

struct sourcemeta::blaze::CodegenIRReference
Inheritance diagram for sourcemeta::blaze::CodegenIRReference:
sourcemeta::blaze::CodegenIRType

Public Attributes

CodegenIRType target
Public Attributes inherited from sourcemeta::blaze::CodegenIRType
sourcemeta::core::Pointer pointer
std::vector< std::string > symbol

◆ sourcemeta::blaze::CodegenUnsupportedKeywordError

class sourcemeta::blaze::CodegenUnsupportedKeywordError

An error that represents an unsupported keyword during IR compilation

Inheritance diagram for sourcemeta::blaze::CodegenUnsupportedKeywordError:

Public Member Functions

 CodegenUnsupportedKeywordError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, const char *message)
 CodegenUnsupportedKeywordError (sourcemeta::core::JSON json, const sourcemeta::core::WeakPointer &pointer, std::string keyword, const char *message)
 CodegenUnsupportedKeywordError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string message)=delete
 CodegenUnsupportedKeywordError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string &&message)=delete
 CodegenUnsupportedKeywordError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string_view message)=delete
auto what () const noexcept -> const char *override
auto json () const noexcept -> const sourcemeta::core::JSON &
auto pointer () const noexcept -> const sourcemeta::core::Pointer &
auto keyword () const noexcept -> std::string_view

◆ sourcemeta::blaze::CodegenUnsupportedKeywordValueError

class sourcemeta::blaze::CodegenUnsupportedKeywordValueError

An error that represents an unsupported keyword value during IR compilation

Inheritance diagram for sourcemeta::blaze::CodegenUnsupportedKeywordValueError:

Public Member Functions

 CodegenUnsupportedKeywordValueError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, const char *message)
 CodegenUnsupportedKeywordValueError (sourcemeta::core::JSON json, const sourcemeta::core::WeakPointer &pointer, std::string keyword, const char *message)
 CodegenUnsupportedKeywordValueError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string message)=delete
 CodegenUnsupportedKeywordValueError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string &&message)=delete
 CodegenUnsupportedKeywordValueError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string keyword, std::string_view message)=delete
auto what () const noexcept -> const char *override
auto json () const noexcept -> const sourcemeta::core::JSON &
auto pointer () const noexcept -> const sourcemeta::core::Pointer &
auto keyword () const noexcept -> std::string_view

◆ sourcemeta::blaze::CodegenUnexpectedSchemaError

class sourcemeta::blaze::CodegenUnexpectedSchemaError

An error that represents an unexpected schema during IR compilation

Inheritance diagram for sourcemeta::blaze::CodegenUnexpectedSchemaError:

Public Member Functions

 CodegenUnexpectedSchemaError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, const char *message)
 CodegenUnexpectedSchemaError (sourcemeta::core::JSON json, const sourcemeta::core::WeakPointer &pointer, const char *message)
 CodegenUnexpectedSchemaError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string message)=delete
 CodegenUnexpectedSchemaError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string &&message)=delete
 CodegenUnexpectedSchemaError (sourcemeta::core::JSON json, sourcemeta::core::Pointer pointer, std::string_view message)=delete
auto what () const noexcept -> const char *override
auto json () const noexcept -> const sourcemeta::core::JSON &
auto pointer () const noexcept -> const sourcemeta::core::Pointer &

◆ sourcemeta::blaze::TypeScript

class sourcemeta::blaze::TypeScript

Public Member Functions

 TypeScript (std::ostream &stream, std::string_view type_prefix)
auto operator() (const CodegenIRScalar &entry) -> void
auto operator() (const CodegenIREnumeration &entry) -> void
auto operator() (const CodegenIRObject &entry) -> void
auto operator() (const CodegenIRImpossible &entry) -> void
auto operator() (const CodegenIRAny &entry) -> void
auto operator() (const CodegenIRArray &entry) -> void
auto operator() (const CodegenIRReference &entry) -> void
auto operator() (const CodegenIRTuple &entry) -> void
auto operator() (const CodegenIRUnion &entry) -> void
auto operator() (const CodegenIRIntersection &entry) -> void
auto operator() (const CodegenIRConditional &entry) -> void

Typedef Documentation

◆ CodegenCompiler

using sourcemeta::blaze::CodegenCompiler
Initial value:
std::function<CodegenIREntity(
const sourcemeta::core::JSON &, const sourcemeta::core::SchemaFrame &,
const sourcemeta::core::SchemaFrame::Location &,
const sourcemeta::core::SchemaResolver &, const sourcemeta::core::JSON &)>

◆ CodegenIREntity