/ styx_sax.hh / Content
#ifndef __STYX_SAX_H__
#define __STYX_SAX_H__
#include
#include
#include
#include
#include "styx.hh"
#define SAX_ERR_RETURN {setStatus(SAX_STATUS_ERR_PARSE);
errorHandler(line); return ;}
typedef enum StyxSaxStatus_e
{
SAX_STATUS_NONE = 0,
SAX_STATUS_OK,
SAX_STATUS_STOPPED,
SAX_STATUS_NO_FILE,
SAX_STATUS_ERR_PARSE
} StyxSaxStatus;
class StyxSaxAttr
{
public:
string getName(void);
string getValue(void);
StyxSaxAttr(string name, string value);
private:
string name;
string value;
};
class StyxSax
{
public:
StyxSaxStatus saxParse(char* filename);
void saxStop(void);
StyxSax(void);
virtual ~StyxSax(void);
protected:
void setStatus(StyxSaxStatus newStatus);
virtual void openTagHandler(string name, vector attrs);
virtual void insideTextHandler(char c);
virtual void closeTagHandler(string name);
virtual void commentHandler(string content);
virtual void processingInstructionHandler(string target, string content);
virtual void cdataHandler(string content);
virtual void errorHandler(int line);
private:
FILE* file;
StyxSaxStatus saxStatus;
int line;
int charac;
char getChar(void);
void ungetChar(char c);
void doOpenTag(void);
void parseOpenTag(void);
void parseCloseTag(void);
void parseProcessingInstruction(void);
void parseComment(void);
void parseCdata(void);
};
#endif /* __STYX_SAX_H__ */