TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

class EnumType in Tinman.Core.Config

Config property type: enumeration type.

sealed class EnumType extends ConfigType

Public / Attributes

CanBeNull

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

Documentation

Returns the documentation of this config type.

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

IsAbstract

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

Remarks:

Abstract types cannot be instantiated via New.

IsArray

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:

ArrayType

IsBoolean

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:

ConfigType

IsClass

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:

ClassType

IsEnum

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:

EnumType

IsInvalid

Is this type invalid?

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

IsLazy

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

Remarks:

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. This will throw a TinmanException if the referred config type does not exist (yet).

IsNumber

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:

ConfigType

IsPath

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:

ConfigType

IsSimple

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:

ConfigType.Bool
ConfigType.Num
ConfigType.Path
ConfigType.Str

IsString

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:

ConfigType

IsStruct

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

Remarks:

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

IsValid

Is this type valid?

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

ItemCount

Returns the number of enumeration items.

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

Items

Returns the items of this enumeration.

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

Members

Returns the type members.

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

Module

The module that owns this config type.

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

Name

The human-readable name of this config type.

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

Range

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

ShouldHaveDocumentation

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

AsArray

Casts this config type to ArrayType.

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

See also:

ConfigType.IsArray

AsClass

Casts this config type to ClassType.

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

See also:

ConfigType.IsClass

AsEnum

Casts this config type to EnumType.

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

See also:

ConfigType.IsEnum

Builder

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.

ClearRange

Clears the source code range.

public method ClearRange ()
inherited ConfigNode.ClearRange

See also:

ConfigNode.Range

Equals

Compares this object with the given one.

[Pure]
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

FindAt

Finds all config nodes which code range (see Range) intersects with the given range (see Intersects).

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

FixTry

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

Remarks:

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

GetItem

Returns an enum item.

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

GetItemOrdinal

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.

IsAssignableTo

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

Remarks:

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:

IsConvertibleTo

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

[EmptyBody]
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

Remarks:

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).

Resolve

Resolves all references in this PSI node.

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

ResolveLazy

Resolves this config type into a non-lazy one.

public virtual method ResolveLazy ()
type ConfigType
returns [not-null] The non-lazy config type.
inherited ConfigType.ResolveLazy

SetParseInfo

Provides additional information about the parsing process.

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

ShortName

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

ToArray

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

ToString

[Pure]
public override method ToString ()
type string
inherited ConfigType.ToString

Validate

Validates the state of this object.

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

Value

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

Remarks:

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.

WriteSourceCode

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