69 lines
1.0 KiB
C++
Executable File
69 lines
1.0 KiB
C++
Executable File
/*
|
|
* This file is a part of Winix
|
|
* and is not publicly distributed
|
|
*
|
|
* Copyright (c) 2008-2010, Tomasz Sowa
|
|
* All rights reserved.
|
|
*
|
|
*/
|
|
|
|
#ifndef headerfile_winix_core_httpsimpleparser
|
|
#define headerfile_winix_core_httpsimpleparser
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
class HttpSimpleParser
|
|
{
|
|
protected:
|
|
|
|
bool read_name;
|
|
bool value_can_be_quoted;
|
|
bool skip_white_chars;
|
|
bool recognize_special_chars;
|
|
|
|
int ParseHalfHex(int c);
|
|
void ReadName();
|
|
void ReadQuotedValue();
|
|
void ReadValue();
|
|
|
|
std::string last_name;
|
|
std::string last_value;
|
|
|
|
int last_c;
|
|
int separator;
|
|
|
|
// '-1' means end (eof)
|
|
virtual int GetChar() = 0;
|
|
virtual void Parameter(std::string & last_name, std::string & last_value) = 0;
|
|
|
|
void ToLower(std::string & s);
|
|
bool IsWhite(int c);
|
|
|
|
void SkipWhiteChars();
|
|
void TrimWhiteChars(std::string & s);
|
|
void CheckSpecialChar();
|
|
|
|
void Parse();
|
|
|
|
|
|
public:
|
|
|
|
|
|
HttpSimpleParser()
|
|
{
|
|
separator = '&';
|
|
read_name = true;
|
|
value_can_be_quoted = false;
|
|
skip_white_chars = false;
|
|
recognize_special_chars = true;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|