#include <Type.h>

Public Types | |
| enum | type_kind { UnspecT = 0, ErrorT, AnyT, BooleanT, ByteblockT, FloatT, IntegerT, LocaleT, PathT, StringT, SymbolT, TermT, VoidT, WildcardT, FlexT, VariableT, ListT, MapT, BlockT, TupleT, FunctionT, NilT, NFlexT } |
| typedef enum Type::type_kind | tkind |
Public Member Functions | |
| Type () | |
| Type (tkind kind, bytecodeistream &str) | |
| virtual | ~Type () |
| virtual string | toString () const |
| virtual string | toXmlString () const |
| virtual std::ostream & | toStream (std::ostream &str) const |
| virtual std::ostream & | toXml (std::ostream &str, int indent) const |
| virtual bool | isBasetype () const |
| virtual constTypePtr | matchFlex (constTypePtr, unsigned int=0) const |
| virtual int | match (constTypePtr expected) const |
| virtual int | matchvalue (YCPValue value) const |
| virtual bool | canCast (constTypePtr to) const |
| virtual TypePtr | clone () const |
| virtual constTypePtr | unflex (constTypePtr type, unsigned int number=0) const |
| string | preToString () const |
| string | postToString () const |
| bool | isConst () const |
| void | asConst () |
| bool | isReference () const |
| void | asReference () |
| int | basematch (constTypePtr expected) const |
| virtual bool | equals (constTypePtr expected) const |
| bool | isUnspec () const |
| bool | isError () const |
| bool | isAny () const |
| bool | isBoolean () const |
| bool | isByteblock () const |
| bool | isFloat () const |
| bool | isInteger () const |
| bool | isLocale () const |
| bool | isPath () const |
| bool | isString () const |
| bool | isSymbol () const |
| bool | isTerm () const |
| bool | isVoid () const |
| bool | isWildcard () const |
| bool | isFlex () const |
| bool | isNFlex () const |
| bool | isVariable () const |
| bool | isList () const |
| bool | isMap () const |
| bool | isBlock () const |
| bool | isTuple () const |
| bool | isFunction () const |
| bool | isNil () const |
| YCPValueType | valueType () const |
| virtual constTypePtr | commontype (constTypePtr type) const |
| virtual constTypePtr | detailedtype (constTypePtr type) const |
Static Public Member Functions | |
| static void | setNocheck (bool nocheck) |
| static constTypePtr | vt2type (enum YCPValueType vt) |
| static int | nextToken (const char **signature) |
| static constTypePtr | fromSignature (const char **signature) |
| static constTypePtr | fromSignature (const string &signature) |
| static constTypePtr | determineFlexType (constFunctionTypePtr actual, constFunctionTypePtr declared) |
| static FunctionTypePtr | Function (constTypePtr return_type) |
Static Public Attributes | |
| static const constTypePtr | Unspec = TypePtr ( new Type (UnspecT)) |
| static const constTypePtr | Error = TypePtr ( new Type (ErrorT)) |
| static const constTypePtr | Any = TypePtr ( new Type (AnyT)) |
| static const constTypePtr | Void = TypePtr ( new Type (VoidT)) |
| static const constTypePtr | Boolean = TypePtr ( new Type (BooleanT)) |
| static const constTypePtr | Byteblock = TypePtr ( new Type (ByteblockT)) |
| static const constTypePtr | Float = TypePtr ( new Type (FloatT)) |
| static const constTypePtr | Integer = TypePtr ( new Type (IntegerT)) |
| static const constTypePtr | Locale = TypePtr ( new Type (LocaleT)) |
| static const constTypePtr | Path = TypePtr ( new Type (PathT)) |
| static const constTypePtr | String = TypePtr ( new Type (StringT)) |
| static const constTypePtr | Symbol = TypePtr ( new Type (SymbolT)) |
| static const constTypePtr | Term = TypePtr ( new Type (TermT)) |
| static const constTypePtr | Wildcard = TypePtr ( new Type (WildcardT)) |
| static const constTypePtr | ConstAny = TypePtr ( new Type (AnyT, true)) |
| static const constTypePtr | ConstVoid = TypePtr ( new Type (VoidT, true)) |
| static const constTypePtr | ConstBoolean = TypePtr ( new Type (BooleanT, true)) |
| static const constTypePtr | ConstByteblock = TypePtr ( new Type (ByteblockT, true)) |
| static const constTypePtr | ConstFloat = TypePtr ( new Type (FloatT, true)) |
| static const constTypePtr | ConstInteger = TypePtr ( new Type (IntegerT, true)) |
| static const constTypePtr | ConstLocale = TypePtr ( new Type (LocaleT, true)) |
| static const constTypePtr | ConstPath = TypePtr ( new Type (PathT, true)) |
| static const constTypePtr | ConstString = TypePtr ( new Type (StringT, true)) |
| static const constTypePtr | ConstSymbol = TypePtr ( new Type (SymbolT, true)) |
| static const constTypePtr | ConstTerm = TypePtr ( new Type (TermT, true)) |
| static const constTypePtr | ConstList = TypePtr ( new Type (ListT, true)) |
| static const constTypePtr | ConstMap = TypePtr ( new Type (MapT, true)) |
| static const constTypePtr | Flex = TypePtr ( new FlexType()) |
| static const constTypePtr | ConstFlex = TypePtr ( new FlexType (true)) |
| static const constTypePtr | NFlex1 = TypePtr ( new NFlexType(1)) |
| static const constTypePtr | ConstNFlex1 = TypePtr ( new NFlexType (1, true)) |
| static const constTypePtr | NFlex2 = TypePtr ( new NFlexType(2)) |
| static const constTypePtr | ConstNFlex2 = TypePtr ( new NFlexType (2, true)) |
| static const constTypePtr | NFlex3 = TypePtr ( new NFlexType(3)) |
| static const constTypePtr | ConstNFlex3 = TypePtr ( new NFlexType (3, true)) |
| static const constTypePtr | NFlex4 = TypePtr ( new NFlexType(4)) |
| static const constTypePtr | ConstNFlex4 = TypePtr ( new NFlexType (4, true)) |
| static const constTypePtr | ListUnspec = new ListType (Type::Unspec) |
| static const constTypePtr | List = new ListType (Type::Any) |
| static const constTypePtr | MapUnspec = new MapType (Type::Unspec, Type::Unspec) |
| static const constTypePtr | Map = new MapType (Type::Any, Type::Any) |
| static const constTypePtr | Variable = new VariableType (Type::Any) |
| static const constTypePtr | Block = new BlockType (Type::Any) |
| static const constTypePtr | Nil = TypePtr ( new Type (NilT)) |
Protected Member Functions | |
| Type (tkind kind, bool as_const=false, bool as_reference=false) | |
Protected Attributes | |
| tkind | m_kind |
| bool | m_const |
| bool | m_reference |
Private Member Functions | |
| REP_BODY (Type) | |
| tkind | kind () const |
| typedef enum Type::type_kind Type::tkind |
| enum Type::type_kind |
| Type::Type | ( | tkind | kind, | |
| bool | as_const = false, |
|||
| bool | as_reference = false | |||
| ) | [inline, protected] |
| Type::Type | ( | ) |
| Type::Type | ( | tkind | kind, | |
| bytecodeistream & | str | |||
| ) |
| Type::~Type | ( | ) | [virtual] |
| Type::REP_BODY | ( | Type | ) | [private] |
| static void Type::setNocheck | ( | bool | nocheck | ) | [static] |
enable/disable type checking
| constTypePtr Type::vt2type | ( | enum YCPValueType | vt | ) | [static] |
convert YCPValueType to Type
| int Type::nextToken | ( | const char ** | signature | ) | [static] |
signature parser, get next token
signature parser, get next token >= 0 -> tkind -1 -> const -100 (-x) -> NFlex '&' -> reference '<' '>' ',' '(' ')'
| constTypePtr Type::fromSignature | ( | const char ** | signature | ) | [static] |
Construct from a string literal type code
Construct from a string literal type code
| s | eg. "list <string>" |
| static constTypePtr Type::fromSignature | ( | const string & | signature | ) | [inline, static] |
Construct from a string literal type code
| s | eg. string("list <string>") |
| constTypePtr Type::determineFlexType | ( | constFunctionTypePtr | actual, | |
| constFunctionTypePtr | declared | |||
| ) | [static] |
determine actual type if declared type contains 'flex' or 'flexN' Returns actual - unchanged or fixed
determine actual type if declared type contains flex type Returns actual - unchanged or fixed or NULL on error
| symbol | type of a symbol parameter from YEBuiltin, else isUnspec |
| FunctionTypePtr Type::Function | ( | constTypePtr | return_type | ) | [static] |
| tkind Type::kind | ( | ) | const [inline, private] |
| string Type::toString | ( | void | ) | const [virtual] |
Converts a type code to its YCP notation.
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| string Type::toXmlString | ( | ) | const [virtual] |
| std::ostream & Type::toStream | ( | std::ostream & | str | ) | const [virtual] |
write bytecode out to stream
write out to bytecode stream
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| std::ostream & Type::toXml | ( | std::ostream & | str, | |
| int | indent | |||
| ) | const [virtual] |
write xml out to stream
| virtual bool Type::isBasetype | ( | ) | const [inline, virtual] |
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| virtual constTypePtr Type::matchFlex | ( | constTypePtr | , | |
| unsigned int | = 0 | |||
| ) | const [inline, virtual] |
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| int Type::match | ( | constTypePtr | expected | ) | const [virtual] |
check match with expected type <0: no match, ==0: full match, >0: propagated match
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| int Type::matchvalue | ( | YCPValue | value | ) | const [virtual] |
check match with value <0: no match, ==0: full match, >0: propagated match
| bool Type::canCast | ( | constTypePtr | to | ) | const [virtual] |
check, if the type can be casted (at runtime considered to be - similar to dynamic_cast) to another type
Reimplemented in ListType, MapType, BlockType, TupleType, and FunctionType.
| TypePtr Type::clone | ( | ) | const [virtual] |
clone this type
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| constTypePtr Type::unflex | ( | constTypePtr | type, | |
| unsigned int | number = 0 | |||
| ) | const [virtual] |
replace any 'FlexT' (number == 0) or 'NFlexT' (number != 0) with 'type'
Reimplemented in FlexType, NFlexType, VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| string Type::preToString | ( | ) | const [inline] |
prefix qualifier
| string Type::postToString | ( | ) | const [inline] |
postfix qualifier
| bool Type::isConst | ( | ) | const [inline] |
return const qualifier
| void Type::asConst | ( | ) | [inline] |
set const qualifier
| bool Type::isReference | ( | ) | const [inline] |
return reference qualifier
| void Type::asReference | ( | ) | [inline] |
set reference qualifier
| int Type::basematch | ( | constTypePtr | expected | ) | const |
check if base matches with expected type <0: no match, ==0: full match, >0: propagated match
| bool Type::equals | ( | constTypePtr | expected | ) | const [virtual] |
check equality of the types, without any assumptions like any == unspec
Reimplemented in VariableType, ListType, MapType, BlockType, TupleType, and FunctionType.
| bool Type::isUnspec | ( | ) | const [inline] |
| bool Type::isError | ( | ) | const [inline] |
| bool Type::isAny | ( | ) | const [inline] |
| bool Type::isBoolean | ( | ) | const [inline] |
| bool Type::isByteblock | ( | ) | const [inline] |
| bool Type::isFloat | ( | ) | const [inline] |
| bool Type::isInteger | ( | ) | const [inline] |
| bool Type::isLocale | ( | ) | const [inline] |
| bool Type::isPath | ( | ) | const [inline] |
| bool Type::isString | ( | ) | const [inline] |
| bool Type::isSymbol | ( | ) | const [inline] |
| bool Type::isTerm | ( | ) | const [inline] |
| bool Type::isVoid | ( | ) | const [inline] |
| bool Type::isWildcard | ( | ) | const [inline] |
| bool Type::isFlex | ( | ) | const [inline] |
| bool Type::isNFlex | ( | ) | const [inline] |
| bool Type::isVariable | ( | ) | const [inline] |
| bool Type::isList | ( | ) | const [inline] |
| bool Type::isMap | ( | ) | const [inline] |
| bool Type::isBlock | ( | ) | const [inline] |
| bool Type::isTuple | ( | ) | const [inline] |
| bool Type::isFunction | ( | ) | const [inline] |
| bool Type::isNil | ( | ) | const [inline] |
| YCPValueType Type::valueType | ( | ) | const |
| constTypePtr Type::commontype | ( | constTypePtr | type | ) | const [virtual] |
| constTypePtr Type::detailedtype | ( | constTypePtr | type | ) | const [virtual] |
tkind Type::m_kind [protected] |
bool Type::m_const [protected] |
bool Type::m_reference [protected] |
const constTypePtr Type::Unspec = TypePtr ( new Type (UnspecT)) [static] |
const constTypePtr Type::Error = TypePtr ( new Type (ErrorT)) [static] |
const constTypePtr Type::Void = TypePtr ( new Type (VoidT)) [static] |
const constTypePtr Type::Boolean = TypePtr ( new Type (BooleanT)) [static] |
const constTypePtr Type::Byteblock = TypePtr ( new Type (ByteblockT)) [static] |
const constTypePtr Type::Float = TypePtr ( new Type (FloatT)) [static] |
const constTypePtr Type::Integer = TypePtr ( new Type (IntegerT)) [static] |
const constTypePtr Type::Locale = TypePtr ( new Type (LocaleT)) [static] |
const constTypePtr Type::Path = TypePtr ( new Type (PathT)) [static] |
const constTypePtr Type::String = TypePtr ( new Type (StringT)) [static] |
const constTypePtr Type::Symbol = TypePtr ( new Type (SymbolT)) [static] |
const constTypePtr Type::Term = TypePtr ( new Type (TermT)) [static] |
const constTypePtr Type::Wildcard = TypePtr ( new Type (WildcardT)) [static] |
const constTypePtr Type::ConstAny = TypePtr ( new Type (AnyT, true)) [static] |
const constTypePtr Type::ConstVoid = TypePtr ( new Type (VoidT, true)) [static] |
const constTypePtr Type::ConstBoolean = TypePtr ( new Type (BooleanT, true)) [static] |
const constTypePtr Type::ConstByteblock = TypePtr ( new Type (ByteblockT, true)) [static] |
const constTypePtr Type::ConstFloat = TypePtr ( new Type (FloatT, true)) [static] |
const constTypePtr Type::ConstInteger = TypePtr ( new Type (IntegerT, true)) [static] |
const constTypePtr Type::ConstLocale = TypePtr ( new Type (LocaleT, true)) [static] |
const constTypePtr Type::ConstPath = TypePtr ( new Type (PathT, true)) [static] |
const constTypePtr Type::ConstString = TypePtr ( new Type (StringT, true)) [static] |
const constTypePtr Type::ConstSymbol = TypePtr ( new Type (SymbolT, true)) [static] |
const constTypePtr Type::ConstTerm = TypePtr ( new Type (TermT, true)) [static] |
const constTypePtr Type::ConstList = TypePtr ( new Type (ListT, true)) [static] |
const constTypePtr Type::ConstMap = TypePtr ( new Type (MapT, true)) [static] |
const constTypePtr Type::Flex = TypePtr ( new FlexType()) [static] |
const constTypePtr Type::ConstFlex = TypePtr ( new FlexType (true)) [static] |
const constTypePtr Type::NFlex1 = TypePtr ( new NFlexType(1)) [static] |
const constTypePtr Type::ConstNFlex1 = TypePtr ( new NFlexType (1, true)) [static] |
const constTypePtr Type::NFlex2 = TypePtr ( new NFlexType(2)) [static] |
const constTypePtr Type::ConstNFlex2 = TypePtr ( new NFlexType (2, true)) [static] |
const constTypePtr Type::NFlex3 = TypePtr ( new NFlexType(3)) [static] |
const constTypePtr Type::ConstNFlex3 = TypePtr ( new NFlexType (3, true)) [static] |
const constTypePtr Type::NFlex4 = TypePtr ( new NFlexType(4)) [static] |
const constTypePtr Type::ConstNFlex4 = TypePtr ( new NFlexType (4, true)) [static] |
const constTypePtr Type::ListUnspec = new ListType (Type::Unspec) [static] |
const constTypePtr Type::List = new ListType (Type::Any) [static] |
const constTypePtr Type::MapUnspec = new MapType (Type::Unspec, Type::Unspec) [static] |
const constTypePtr Type::Variable = new VariableType (Type::Any) [static] |
const constTypePtr Type::Block = new BlockType (Type::Any) [static] |
1.5.3