Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

parseelt.h

Go to the documentation of this file.
00001 //***************************************************************************
00002 // This source code is copyrighted 2002 by Google Inc.  All rights
00003 // reserved.  You are given a limited license to use this source code for
00004 // purposes of participating in the Google programming contest.  If you
00005 // choose to use or distribute the source code for any other purpose, you
00006 // must either (1) first obtain written approval from Google, or (2)
00007 // prominently display the foregoing copyright notice and the following
00008 // warranty and liability disclaimer on each copy used or distributed.
00009 // 
00010 // The source code and repository (the "Software") is provided "AS IS",
00011 // with no warranty, express or implied, including but not limited to the
00012 // implied warranties of merchantability and fitness for a particular
00013 // use.  In no event shall Google Inc. be liable for any damages, direct
00014 // or indirect, even if advised of the possibility of such damages.
00015 //***************************************************************************
00016 
00017 
00018 #ifndef PARSE_ELT_H
00019 #define PARSE_ELT_H
00020 
00021 #include <vector>
00022 #include "repos-reader.h"
00023 #include "handler-parser.h"
00024 
00025 
00026 // This class provides a namespace to collect together parsing-related 
00027 // functions and variables.
00028 
00029 class ParseElt {
00030 
00031  public:
00032   typedef vector<ParseHandler*>* HandlerVec;
00033 
00034   // Given a ReposReader positioned at the beginning of a document
00035   // and a vector of parse handlers, parse the document, issuing
00036   // the appropriate callbacks to the parse handlers for each parse
00037   // element that is encountered. 
00038   static void Process_Document(ReposReader* rr, HandlerVec ph);
00039 
00040  private:
00041   static void Process_Header(int pc, ReposReader* rr, HandlerVec ph);
00042   static void Process_ResponseCode(int pc, ReposReader* rr, HandlerVec ph);
00043   static void Process_BaseURL(int pc, ReposReader* rr, HandlerVec ph);
00044   static void Process_Anchor(int pc, ReposReader* rr, HandlerVec ph);
00045   static void Process_LocalName(int pc, ReposReader* rr, HandlerVec ph);
00046   static void Process_AnchorDone(int pc, ReposReader* rr, HandlerVec ph);
00047   static void Process_ChangeFontColor(int pc, ReposReader* rr, HandlerVec ph);
00048   static void Process_ChangeFontColorEnd(int pc, ReposReader* rr, 
00049                                          HandlerVec ph);
00050   static void Process_ChangeBGColor(int pc, ReposReader* rr, HandlerVec ph);
00051   static void Process_ChangeBGColorEnd(int pc, ReposReader* rr, HandlerVec ph);
00052   static void Process_Image(int pc, ReposReader* rr, HandlerVec ph);
00053   static void Process_ImageHeight(int pc, ReposReader* rr, HandlerVec ph);
00054   static void Process_ImageWidth(int pc, ReposReader* rr, HandlerVec ph);
00055   static void Process_Applet(int pc, ReposReader* rr, HandlerVec ph);
00056   static void Process_AppletDone(int pc, ReposReader* rr, HandlerVec ph);
00057   static void Process_IFrame(int pc, ReposReader* rr, HandlerVec ph);
00058   static void Process_IFrameDone(int pc, ReposReader* rr, HandlerVec ph);
00059   static void Process_Frame(int pc, ReposReader* rr, HandlerVec ph);
00060   static void Process_Area(int pc, ReposReader* rr, HandlerVec ph);
00061   static void Process_Meta(int pc, ReposReader* rr, HandlerVec ph);
00062   static void Process_Frameset(int pc, ReposReader* rr, HandlerVec ph);
00063   static void Process_FramesetDone(int pc, ReposReader* rr, HandlerVec ph);
00064   static void Process_Body(int pc, ReposReader* rr, HandlerVec ph);
00065   static void Process_BodyDone(int pc, ReposReader* rr, HandlerVec ph);
00066   static void Process_ParagraphStart(int pc, ReposReader* rr, HandlerVec ph);
00067   static void Process_ParagraphEnd(int pc, ReposReader* rr, HandlerVec ph);
00068   static void Process_Break(int pc, ReposReader* rr, HandlerVec ph);
00069   static void Process_HorizontalRule(int pc, ReposReader* rr, HandlerVec ph);
00070   static void Process_ListItem(int pc, ReposReader* rr, HandlerVec ph);
00071   static void Process_UnorderedList(int pc, ReposReader* rr, HandlerVec ph);
00072   static void Process_OrderedList(int pc, ReposReader* rr, HandlerVec ph);
00073   static void Process_ListDone(int pc, ReposReader* rr, HandlerVec ph);
00074   static void Process_Div(int pc, ReposReader* rr, HandlerVec ph);
00075   static void Process_DivDone(int pc, ReposReader* rr, HandlerVec ph);
00076   static void Process_Span(int pc, ReposReader* rr, HandlerVec ph);
00077   static void Process_SpanDone(int pc, ReposReader* rr, HandlerVec ph);
00078   static void Process_Table(int pc, ReposReader* rr, HandlerVec ph);
00079   static void Process_TableDone(int pc, ReposReader* rr, HandlerVec ph);
00080   static void Process_Caption(int pc, ReposReader* rr, HandlerVec ph);
00081   static void Process_CaptionDone(int pc, ReposReader* rr, HandlerVec ph);
00082   static void Process_TableHCell(int pc, ReposReader* rr, HandlerVec ph);
00083   static void Process_TableDCell(int pc, ReposReader* rr, HandlerVec ph);
00084   static void Process_TableCellDone(int pc, ReposReader* rr, HandlerVec ph);
00085   static void Process_TableRow(int pc, ReposReader* rr, HandlerVec ph);
00086   static void Process_TableRowDone(int pc, ReposReader* rr, HandlerVec ph);
00087   static void Process_Form(int pc, ReposReader* rr, HandlerVec ph);
00088   static void Process_FormDone(int pc, ReposReader* rr, HandlerVec ph);
00089   static void Process_Select(int pc, ReposReader* rr, HandlerVec ph);
00090   static void Process_SelectDone(int pc, ReposReader* rr, HandlerVec ph);
00091   static void Process_Option(int pc, ReposReader* rr, HandlerVec ph);
00092   static void Process_OptionDone(int pc, ReposReader* rr, HandlerVec ph);
00093   static void Process_TextArea(int pc, ReposReader* rr, HandlerVec ph);
00094   static void Process_TextAreaDone(int pc, ReposReader* rr, HandlerVec ph);
00095   static void Process_Input(int pc, ReposReader* rr, HandlerVec ph);
00096   static void Process_Heading(int pc, ReposReader* rr, HandlerVec ph);
00097   static void Process_HeadingDone(int pc, ReposReader* rr, HandlerVec ph);
00098   static void Process_Noframes(int pc, ReposReader* rr, HandlerVec ph);
00099   static void Process_NoframesDone(int pc, ReposReader* rr, HandlerVec ph);
00100   static void Process_Object(int pc, ReposReader* rr, HandlerVec ph);
00101   static void Process_ObjectDone(int pc, ReposReader* rr, HandlerVec ph);
00102   static void Process_Param(int pc, ReposReader* rr, HandlerVec ph);
00103   static void Process_Embed(int pc, ReposReader* rr, HandlerVec ph);
00104   static void Process_Head(int pc, ReposReader* rr, HandlerVec ph);
00105   static void Process_HeadDone(int pc, ReposReader* rr, HandlerVec ph);
00106   static void Process_SetFace(int pc, ReposReader* rr, HandlerVec ph);
00107   static void Process_SetSize(int pc, ReposReader* rr, HandlerVec ph);
00108   static void Process_TermOrPunct(int pc, ReposReader* rr, HandlerVec ph);
00109 
00110   static const int kTextBufSize = 1024;
00111   typedef void (*ParseEltMethod)(int pc, ReposReader* rr, HandlerVec ph);
00112   
00113   static const ParseEltMethod kParseCodeTable[];
00114 
00115   static char cbuf1_[];  
00116   static char cbuf2_[];
00117   static int cur_face_;
00118   static int cur_size_;
00119   static Document doc_;
00120 };
00121 
00122 
00123 
00124 #endif

Generated on Wed May 29 11:37:15 2002 for MarkovPR by doxygen1.2.15