00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #define kWhitespaceBit 0x20 // OR into Term or Punct code if whitespace follows
00021 #define MAX_ENCODED_LENGTH 0x1F
00022 #define SET_WHITESPACE_FOLLOWS(x) ((x) | kWhitespaceBit)
00023 #define SET_LENGTH(x, len) ((x) | (len & 0x1F))
00024 #define SET_LENGTH_FOLLOWS(x) (x) // use low-order bits of 0 to mean length
00025
00026
00027 #define GET_WHITESPACE_FOLLOWS(x) ((x) & kWhitespaceBit)
00028 #define GET_LENGTH(x) ((x) & 0x1F)
00029 #define GET_LENGTH_FOLLOWS(x) (((x) & 0x1F) == 0)
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 #define kParseElt_Term 0x80 // char* term
00055 #define kParseElt_Punctuation 0xC0 // char* text
00056
00057 #define IS_TERM_OR_PUNCT(x) ((x) & 0x80)
00058 #define IS_TERM(x) (((x) & 0x40)==0) // assuming IS_TERM_OR_PUNCT(x) != 0
00059 #define IS_PUNCT(x) (((x) & 0x40)!=0) // assuming IS_TERM_OR_PUNCT(x) != 0
00060
00061
00062
00063
00064 #define PCODE(x) (x) // MSB is 0
00065
00066 #define kParseElt_Header PCODE(0x1) // char* key, char* value
00067 #define kParseElt_ResponseCode PCODE(0x2) // int
00068 #define kParseElt_BaseURL PCODE(0x3) // char*
00069 #define kParseElt_Anchor PCODE(0x4) // char*
00070 #define kParseElt_LocalName PCODE(0x5) // char*
00071 #define kParseElt_AnchorDone PCODE(0x6)
00072 #define kParseElt_ChangeFontColor PCODE(0x7) // char*
00073 #define kParseElt_ChangeFontColorEnd PCODE(0x8)
00074 #define kParseElt_ChangeBGColor PCODE(0x9) // char*
00075 #define kParseElt_ChangeBGColorEnd PCODE(0xa)
00076 #define kParseElt_Image PCODE(0xb) // char*
00077
00078
00079
00080
00081 #define kParseElt_Applet PCODE(0xe)
00082 #define kParseElt_AppletDone PCODE(0xf)
00083 #define kParseElt_IFrame PCODE(0x10) // char*
00084 #define kParseElt_IFrameDone PCODE(0x11)
00085 #define kParseElt_Frame PCODE(0x12) // char*
00086 #define kParseElt_Area PCODE(0x13) // char*
00087 #define kParseElt_Meta PCODE(0x14) // char*
00088 #define kParseElt_Frameset PCODE(0x15) // char*
00089 #define kParseElt_FramesetDone PCODE(0x16)
00090 #define kParseElt_Body PCODE(0x17) // char*
00091 #define kParseElt_BodyDone PCODE(0x18)
00092 #define kParseElt_ParagraphStart PCODE(0x19) // char*
00093 #define kParseElt_ParagraphEnd PCODE(0x1a)
00094 #define kParseElt_Break PCODE(0x1b)
00095 #define kParseElt_HorizontalRule PCODE(0x1c)
00096 #define kParseElt_ListItem PCODE(0x1d)
00097 #define kParseElt_UnorderedList PCODE(0x1e)
00098 #define kParseElt_OrderedList PCODE(0x1f)
00099 #define kParseElt_ListDone PCODE(0x20)
00100 #define kParseElt_Div PCODE(0x21) // char*
00101 #define kParseElt_DivDone PCODE(0x22)
00102 #define kParseElt_Span PCODE(0x23) // char*
00103 #define kParseElt_SpanDone PCODE(0x24) // char*
00104 #define kParseElt_Table PCODE(0x25)
00105 #define kParseElt_TableDone PCODE(0x26)
00106 #define kParseElt_Caption PCODE(0x27)
00107 #define kParseElt_CaptionDone PCODE(0x28)
00108 #define kParseElt_TableHCell PCODE(0x29) // char*
00109 #define kParseElt_TableDCell PCODE(0x2a) // char*
00110 #define kParseElt_TableCellDone PCODE(0x2b)
00111 #define kParseElt_TableRow PCODE(0x2c)
00112 #define kParseElt_TableRowDone PCODE(0x2d)
00113 #define kParseElt_Form PCODE(0x2e) // char*
00114 #define kParseElt_FormDone PCODE(0x2f)
00115 #define kParseElt_Select PCODE(0x30) // char*
00116 #define kParseElt_SelectDone PCODE(0x31)
00117 #define kParseElt_Option PCODE(0x32) // char*
00118 #define kParseElt_OptionDone PCODE(0x33)
00119 #define kParseElt_TextArea PCODE(0x34) // char*
00120 #define kParseElt_TextAreaDone PCODE(0x35)
00121 #define kParseElt_Input PCODE(0x36) // char*
00122 #define kParseElt_Heading PCODE(0x37) // int
00123 #define kParseElt_HeadingDone PCODE(0x38)
00124 #define kParseElt_Noframes PCODE(0x39)
00125 #define kParseElt_NoframesDone PCODE(0x3a)
00126 #define kParseElt_Object PCODE(0x3b) // char*
00127 #define kParseElt_ObjectDone PCODE(0x3c)
00128 #define kParseElt_Param PCODE(0x3d) // char*
00129 #define kParseElt_Embed PCODE(0x3e) // char*
00130 #define kParseElt_Head PCODE(0x3f) // char*
00131 #define kParseElt_HeadDone PCODE(0x40)
00132
00133
00134
00135
00136 #define kParseElt_SetFace PCODE(0x41) // int
00137 #define kParseElt_SetSize PCODE(0x42) // int
00138
00139
00140 #define kParseElt_LASTCODE kParseElt_SetSize
00141
00142 #define kBeginDocMarker PCODE(0x43)
00143 #define kEndDocMarker PCODE(0x44)
00144