00001 /* This file is part of QJson 00002 * 00003 * Copyright (C) 2008 Flavio Castelli <flavio.castelli@gmail.com> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License version 2.1, as published by the Free Software Foundation. 00008 * 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public License 00016 * along with this library; see the file COPYING.LIB. If not, write to 00017 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 * Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #ifndef _JSON_SCANNER 00022 #define _JSON_SCANNER 00023 00024 #include <QtCore/QIODevice> 00025 #include <QtCore/QVariant> 00026 #include <QtCore/QLocale> 00027 00028 #define YYSTYPE QVariant 00029 00030 // Only include FlexLexer.h if it hasn't been already included 00031 #if ! defined(yyFlexLexerOnce) 00032 #include <FlexLexer.h> 00033 #endif 00034 00035 #include "parser_p.h" 00036 00037 00038 00039 namespace yy { 00040 class location; 00041 int yylex(YYSTYPE *yylval, yy::location *yylloc, QJson::ParserPrivate* driver); 00042 } 00043 00044 class JSonScanner : public yyFlexLexer 00045 { 00046 public: 00047 explicit JSonScanner(QIODevice* io); 00048 ~JSonScanner(); 00049 00050 void allowSpecialNumbers(bool allow); 00051 00052 int yylex(YYSTYPE* yylval, yy::location *yylloc); 00053 int yylex(); 00054 int LexerInput(char* buf, int max_size); 00055 protected: 00056 bool m_allowSpecialNumbers; 00057 QIODevice* m_io; 00058 00059 YYSTYPE* m_yylval; 00060 yy::location* m_yylloc; 00061 bool m_criticalError; 00062 QString m_currentString; 00063 QLocale m_C_locale; 00064 }; 00065 00066 #endif
|
hosts this site. |
Send comments to: QJson Developers |