Software Development Kit - User Manual

class EnumType in Tinman.Core.Config

Config property type: enumeration type.

sealed class EnumType extends ConfigType

Private / Attributes


The balance between calls to Begin and End greater than zero?

public property HasBegun { get }
type bool
value true if the balance is greater than zero,
false if it is not.
inherited ConfigNode.HasBegun

Private / Methods


public method Begin ()
inherited ConfigNode.Begin


public method End ()
inherited ConfigNode.End

Public / Attributes


Can instances of this config type be null?

public override property CanBeNull { get }
type bool
value true if instances of this type can have the value null, false if not.
implements ConfigType.CanBeNull


Returns the documentation of this config type.

public property Documentation { get }
type TypeDocNode
value The documentation or null if not found.
inherited ConfigType.Documentation


Is this an abstract type?

public virtual property IsAbstract { get }
type bool
value true if this is an abstract type, false if not.
inherited ConfigType.IsAbstract


Abstract types cannot be instantiated via New.


Is this an array type?

public virtual property IsArray { get }
type bool
value true if this is an array type, false if not.
inherited ConfigType.IsArray

See also:



Is this the type boolean?

public virtual property IsBoolean { get }
type bool
value true if this is the type boolean, false if not.
inherited ConfigType.IsBoolean

See also:



Is this a class type?

public virtual property IsClass { get }
type bool
value true if this is a class type, false if not.
inherited ConfigType.IsClass

See also:



Is this an enum type?

public override property IsEnum { get }
type bool
value true if this is an enum type, false if not.
overrides ConfigType.IsEnum

See also:



Is this type invalid?

public virtual property IsInvalid { get }
type bool
value true if this type is invalid, false if not.
inherited ConfigType.IsInvalid


Is this config type lazy?

public virtual property IsLazy { get }
type bool
value true if this is a lazy config type, false if it is a regular one.
inherited ConfigType.IsLazy


Lazy config types are created by calling Lazy; they refer to a config type by its fully-qualified name. Lazy config types are not present in the global config type registry (see Get). A lazy type can be converted into a regular type by calling ResolveLazy.


Is this the type number?

public virtual property IsNumber { get }
type bool
value true if this is the type number, false if not.
inherited ConfigType.IsNumber

See also:



Is this the type path?

public virtual property IsPath { get }
type bool
value true if this is the type string, false if not.
inherited ConfigType.IsPath

See also:



Is this a simple type?

public property IsSimple { get }
type bool
value true if this is a simple type, false if not.
inherited ConfigType.IsSimple

See also:



Is this the type string?

public virtual property IsString { get }
type bool
value true if this is the type string, false if not.
inherited ConfigType.IsString

See also:



Is this a structure type?

public virtual property IsStruct { get }
type bool
value true if this is a structure type, false if not.
inherited ConfigType.IsStruct


A struct is a non-abstract class type that has no subclasses and no super class.


Is this type valid?

public property IsValid { get }
type bool
value true if this type is valid, false if not.
inherited ConfigType.IsValid


Returns the number of enumeration items.

public property ItemCount { get }
type int32
value [>0] The number of enumeration items.


Returns the items of this enumeration.

public property Items { get }
type EnumItem[]
value [not-null] The enum items.


Returns the type members.

public virtual property Members { get }
type ConfigMember[]
value [not-null] The type members.
inherited ConfigType.Members


The module that owns this config type.

public property Module { get }
type TinmanModule
value [not-null] The module.
inherited ConfigType.Module


The human-readable name of this config type.

public override property Name { get }
type string
value [not-null] The type name.
implements ConfigType.Name


Returns source code range of this object.

public property Range { get }
type RangeI
value The source code character range or Inv if none.
inherited ConfigNode.Range


Should the item of this enumeration be documented?

public property ShouldHaveDocumentation { get }
type bool
value true if documentation should exist, false if not (e.g. if the enum items are generated by code, having meaningful names).

Public / Methods


Casts this config type to ArrayType.

public virtual method AsArray ()
type ArrayType
returns [not-null] The cast type.
inherited ConfigType.AsArray

See also:




Casts this config type to ClassType.

public virtual method AsClass ()
type ClassType
returns [not-null] The cast type.
inherited ConfigType.AsClass

See also:




Casts this config type to EnumType.

public virtual method AsEnum ()
type EnumType
returns [not-null] The cast type.
inherited ConfigType.AsEnum

See also:




Returns a builder for creating a new enum type.

public static method Builder (string name, TinmanModule module)
type EnumTypeBuilder
params name [not-empty] The enum name.
  module [not-null] The module that owns the new enum type.
returns [not-null] The builder object.


Clears the source code range.

public method ClearRange ()
inherited ConfigNode.ClearRange

See also:



Compares this object with the given one.

public method Equals (ConfigType other)
type bool
params other The object to compare to.
returns true if this object is equal to other, false if not.
inherited ConfigType.Equals


Finds all config nodes which code range (see Range) contains the given range (see Contains).

public virtual method FindAt (RangeI range, ICollector<ConfigNode> nodes)
params range The code range to intersect with.
  nodes [not-null] The output nodes.
inherited ConfigNode.FindAt


Tries to fix the given expression.

public method FixTry (ConfigExpression expr)
type ConfigExpression
params expr [not-null] The expression to fix.
returns [not-null] The fixed expression or expr if fixing is not possible.
inherited ConfigType.FixTry


This class type is used as the expected type. The method tries to find a distinct sequence of syntactic fixes so that the expression type becomes convertible to this class type.

Checks if the given config value can be fixed so that its type becomes convertible to this config type.

public method FixTry (ConfigValue value, ConfigType superType = null)
type bool
params value [not-null] The config value to fix.
  superType Optional super type to which the fixed value must be assignable to. Defaults to null.
returns true if value can be fixed, false if not.
inherited ConfigType.FixTry


Returns an enum item.

public method GetItem (int32 index)
type EnumItem
params index [0..ItemCount-1] Index of enum item.
returns The enum item.


Returns the ordinal number of the given enum item.

public method GetItemOrdinal (string name, bool tag = false)
type int32
params name The enum item name.
  tag Use tag name?
returns [-1..ItemCount-1] Ordinal number of enum item or -1 if name is not a valid enum item name.


Generates textual information about the structure of this config type.

public method Info (StringBuilder sb)
params sb [not-null] The output StringBuilder to use.
inherited ConfigType.Info


Checks if this config type is assignable to the given type.

public override method IsAssignableTo (ConfigType other)
type bool
params other [not-null] The other type.
returns true if this type is assignable to the given one, false if not.
overrides ConfigType.IsAssignableTo


Equal types are always assignable to each other (see Equals). Additionally, a type A is assignable to a type B if one of these conditions are met:


Checks if this config type is convertible to the given type (i.e. possibly failing, possibly lossy implicit conversion).

public override method IsConvertibleTo (ConfigType other, bool always = false)
type bool
params other [not-null] The other config type.
  always When set to true, the method will return true iff this type is always convertible to other. When set to false, this method will return true even if a conversion might fail at runtime, causing a ConfigException to be thrown (e.g. invalid string to number). Defaults to false.
returns true if this type is convertible to the given one, false if not.
overrides ConfigType.IsConvertibleTo


The following table shows the types A that are convertible to the types B:

A \ B | Array |  Bool | Class |  Enum |  Num  |  Path |  Str  |
Array |  (1)  |  (2)  |       |       |       |       |  (3)  |
Bool  |       | (17)  |       |       |  (4)  |       |  (5)  |
Class |       |  (2)  | (17)  |       |       |       |       |
Enum  |       |       |       | (17)  |  (6)  |       |  (7)  |
Num   |       |  (8)  |       |  (9)  | (17)  |       | (10)  |
Path  |       | (11)  |       |       |       | (17)  | (12)  |
Str   |       | (13)  |       | (14)  | (15)  | (16)  | (17)  |
Two types that are assignable will always be convertible. A failed conversion attempt will yield Invalid values.
The conversions outlined above are explained here:
  1. An array type A is convertible to an array type B iff the element type of A is convertible to the element type of B.
  2. The negated result of IsNull is used as the converted value.
  3. Each array element is converted to Str and the resulting tokens are concatenated using ',' as the glue. If one or more array elements cannot be converted, the result will be Invalid.
  4. true =>1, false =>0
  5. true =>'true', false =>'false'
  6. The ordinal value of the enum item (see GetItemOrdinal) is used.
  7. The tag value of the enum item (see Tag) is used.
  8. 0 =>false, all other values yield true.
  9. The number is used as the enum item ordinal value (see GetItem ). Will result in Invalid if the number lies outside of the range of valid ordinal values.
  10. The number is formatted as a string (using NumberFormat with round-trip precision):
    123.45 =>'123.45'.
  11. Will be true iff the path value refers to an existing file or directory (depending on IsTrailing).
  12. The path value is used for the assignment (see ToString).
  13. Will be false if the string is null, empty or consists only of whitespaces (see IsEmptyOrWhitespace).
  14. If the string value is equal to the tag of an enum item (see Tag), that enum item will be used. Will be Invalid if not found.
  15. The string value is parsed as a number (see NumberParse). Will be Invalid for unparseable string values.
  16. The string value is converted to a Path (see From). Will be Invalid for bad path strings.
  17. Assignable types (see IsAssignableTo) are always convertible.
When a conversion fails and the result is Invalid, a ConfigException will be thrown, unless the conversion took place during evaluation of a config expression (see Evaluate).


Creates an empty array value using this ConfigType as element type.

public method NewArray ()
type ConfigValue
returns [not-null] The empty array value.
inherited ConfigType.NewArray


This method just calls ToArray, Value and New in sequence.


Resolves all references in this PSI node.

public override sealed method Resolve ()
type ResolveResult
returns The result of the resolver cycle.
inherited ConfigType.Resolve


Resolves this config type into a non-lazy one.

public virtual method ResolveLazy ()
type ConfigType
returns [not-null] The non-lazy config type or Invalid if this config type cannot be resolved into a non-lazy one.
inherited ConfigType.ResolveLazy


Provides additional information about the parsing process.

public method SetParseInfo (RangeI range)
params range The source code range.
inherited ConfigNode.SetParseInfo


Returns the shortest non-ambiguous name for this config type.

public virtual method ShortName (IVectorConst<string> prefixes = null, ClassType superClass = null)
type string
params prefixes The name prefixes or null.
  superClass The class hierarchy root to use for finding name clashes.
returns [not-null] The short name.
inherited ConfigType.ShortName


Uses this type as the element type and returns the corresponding array type.

public virtual method ToArray ()
type ArrayType
returns [not-null] The array type.
inherited ConfigType.ToArray


public override method ToString ()
type string
inherited ConfigType.ToString


Validates the state of this object.

public override method Validate (Validator validator)
params validator [not-null] The validator object.
inherited ConfigType.Validate


Creates a new value object for this config property type.

public override method Value ()
type ConfigValue
returns [not-null] The created value object.
implements ConfigType.Value


The returned value object will have the default value for its type. A class type value must be initialized to a concrete type before its fields can be accessed. This is done by calling New.


Produces source code by feeding the given source code writer.

public override method WriteSourceCode (SourceCodeWriter writer, Context context)
params writer [not-null] The source code writer to use.
  context [not-null] Context information.
implements ConfigNode.WriteSourceCode