a reflective signature for a type.
a reflective signature for a type. provides name information, properties, and a tool used to build new instances. the underlying type is treated as immutable, so each property provides a setter that returns a new instance. new instances can be built using a InstanceBuilder returned by method builder.
the type that this emblem reflects upon
a TypeKeyMap of emblems
an emblem property.
an emblem property. the property belongs to an Emblem, has a name, and a getter and a setter. because the emblem is treated as an immutable object, the setter returns a new instance.
describes a collection of types used in composite data structures.
describes a collection of types used in composite data structures. these data structures can contain all of the following types:
- all of the basic types
- supported collections. currently Option
, Set
, and Map
- case classes represented in the collection of emblems
- traits represented in the collection of unions
the emblems to use in the emblematic. defaults to empty
the unions to use in the emblematic. defaults to empty
a property path that recurses through an emblem tree to a specific leaf
a no-arg function with return type A
a property for an Emblem or a Union.
a property for an Emblem or a Union. the property has a name and a
getter. unlike EmblemProp, there is no setter here, because there is no
generic way to produce a new instance of a Union
type.
the type that has the property
the type of the property value
describes a supertype that can be resolved down in to other types found in an Emblematic.
describes a supertype that can be resolved down in to other types found in an Emblematic.
currently, discrimination between the constituent types depends on the simple
name of the type. this may lead to problems if two constituent types have the
same simple name, if the types involved are companion objects, or if the
types are otherwise complex types, such as Foo with Bar
. for now, it's best
to declare your constituent types in discrete classes. if this ever becomes a
problematic limitation, we will look into making this more robust.
the supertype
the type key for the supertype
emblems for the constituent types
the union properties
A TypeKeyMap of Any
to Union
an union property.
an union property. the property belongs to an Union, has a name, and a getter and a setter.
an EmblematicPropPath factory
the basic types are the leaf-level types that emblem knows how to process.
the basic types are the leaf-level types that emblem knows how to process. currently, the following basic type are supported:
Boolean
Char
org.joda.time.DateTime
Double
Float
Int
Long
String
a collection of tools for describing collections of related data types in a generic and traversable way