00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef YCPValue_h
00023 #define YCPValue_h
00024
00025 #define XREFDEBUG "Y2XREFDEBUG"
00026
00027 #include "YCPElement.h"
00028
00029 class bytecodeistream;
00030
00036 enum YCPValueType {
00037 YT_VOID = 0,
00038 YT_BOOLEAN = 1,
00039 YT_INTEGER = 2,
00040 YT_FLOAT = 3,
00041 YT_STRING = 4,
00042 YT_BYTEBLOCK = 5,
00043 YT_PATH = 6,
00044 YT_SYMBOL = 7,
00045 YT_LIST = 8,
00046 YT_TERM = 9,
00047 YT_MAP = 10,
00048 YT_CODE = 11,
00049 YT_RETURN = 12,
00050 YT_BREAK = 13,
00051 YT_ENTRY = 14,
00052 YT_ERROR = 15,
00053 YT_REFERENCE = 16,
00054 YT_EXTERNAL = 17
00055 };
00056
00057 enum YCPOrder {
00058 YO_LESS = -1,
00059 YO_EQUAL = 0,
00060 YO_GREATER = 1
00061 };
00062
00071 class YCPValueRep : public YCPElementRep
00072 {
00073 public:
00079 virtual YCPValueType valuetype() const = 0;
00080
00085 const char * valuetype_str() const;
00086
00090 bool isVoid() const;
00091
00095 bool isBoolean() const;
00096
00100 bool isInteger() const;
00101
00105 bool isFloat() const;
00106
00110 bool isString() const;
00111
00115 bool isByteblock() const;
00116
00120 bool isPath() const;
00121
00125 bool isSymbol() const;
00126
00130 bool isList() const;
00131
00136 bool isTerm() const;
00137
00141 bool isMap() const;
00142
00146 bool isCode() const;
00147
00151 bool isBreak() const;
00152
00156 bool isReturn() const;
00157
00161 bool isEntry() const;
00162
00166 bool isReference() const;
00167
00171 bool isExternal() const;
00172
00176 YCPVoid asVoid() const;
00177
00181 YCPBoolean asBoolean() const;
00182
00186 YCPInteger asInteger() const;
00187
00191 YCPFloat asFloat() const;
00192
00196 YCPString asString() const;
00197
00201 YCPByteblock asByteblock() const;
00202
00206 YCPPath asPath() const;
00207
00211 YCPSymbol asSymbol() const;
00212
00216 YCPList asList() const;
00217
00221 YCPTerm asTerm() const;
00222
00226 YCPMap asMap() const;
00227
00231 YCPCode asCode() const;
00232
00236 YCPEntry asEntry() const;
00237
00241 YCPReference asReference() const;
00242
00246 YCPExternal asExternal() const;
00247
00252 bool equal (const YCPValue&) const;
00253
00263 YCPOrder compare(const YCPValue &v, bool rl = false) const;
00264
00265 virtual std::ostream & toXml (std::ostream & str, int indent ) const = 0;
00266 };
00267
00268
00275 class YCPValue : public YCPElement
00276 {
00277 DEF_COMMON(Value, Element);
00278 public:
00283 YCPValue ();
00284 };
00285
00286
00287
00288 extern YCPValue YCPError ( string message, const YCPValue &ret = YCPNull ());
00289
00290 #endif // YCPValue_h