00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00031
00032 #pragma once
00033
00034 #include "../api_core.h"
00035 #include "../Text/string_types.h"
00036 #include <vector>
00037 #include <utility>
00038
00042 class CL_API_CORE CL_XMLToken
00043 {
00046
00047 public:
00048 CL_XMLToken() : type(NULL_TOKEN), variant(SINGLE)
00049 {
00050 }
00051
00055
00056 public:
00057 enum TokenType
00058 {
00059 NULL_TOKEN = 0,
00060 ELEMENT_TOKEN = 1,
00061 TEXT_TOKEN = 3,
00062 CDATA_SECTION_TOKEN = 4,
00063 ENTITY_REFERENCE_TOKEN = 5,
00064 ENTITY_TOKEN = 6,
00065 PROCESSING_INSTRUCTION_TOKEN = 7,
00066 COMMENT_TOKEN = 8,
00067 DOCUMENT_TYPE_TOKEN = 10,
00068 NOTATION_TOKEN = 12
00069 };
00070
00071 enum TokenVariant
00072 {
00073 BEGIN = 1,
00074 END = 2,
00075 SINGLE = 3
00076 };
00077
00078
00079 typedef std::pair<CL_StringRef, CL_StringRef> Attribute;
00080
00082 TokenType type;
00083
00085 TokenVariant variant;
00086
00088 CL_StringRef name;
00089
00091 CL_StringRef value;
00092
00094 std::vector<Attribute> attributes;
00095
00099
00100 public:
00101
00105
00106 private:
00108 };
00109