00001 /* 00002 * Copyright 2009 DreamLab Onet.pl Sp. z o.o. 00003 * Licensed under the Apache License, Version 2.0 (the "License"); 00004 * you may not use this file except in compliance with the License. 00005 * You may obtain a copy of the License at 00006 * 00007 * http://www.apache.org/licenses/LICENSE-2.0 00008 * 00009 * Unless required by applicable law or agreed to in writing, software 00010 * distributed under the License is distributed on an "AS IS" BASIS, 00011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00012 * See the License for the specific language governing permissions and 00013 * limitations under the License. 00014 * 00015 * Authors: 00016 * Michal Szklarzewicz <michal(x)szklarzewicz(y)gmail(x)com> 00017 * Grzegorz Jablonski <jablonski(x)grzegorz(y)gmail(x)com> 00018 * (use dot instead of x, and @ instead of y) 00019 */ 00020 00021 #ifndef _FILE_TOKENIZER_ 00022 #define _FILE_TOKENIZER_ 00023 00024 #include <cstdio> 00025 #include <exception> 00029 class FileTokenizerException: public std::exception 00030 { 00031 public: 00032 FileTokenizerException(const char* what):Description(what) {}; 00033 00034 virtual const char* what() const throw() 00035 { 00036 return this->Description; 00037 } 00038 00039 private: 00040 const char* Description; 00041 }; 00045 class FileTokenizer 00046 { 00047 public: 00052 FileTokenizer(const char* fileName); 00056 FileTokenizer(FILE* fileDescriptor): source(fileDescriptor), autoClose(false) {}; 00057 00058 ~FileTokenizer(); 00059 00063 bool is_feof (); 00067 void get_next_token(bool noconvert = false); 00071 int int_value; 00075 double float_value; 00079 char raw_string[2048]; 00080 00081 private: 00082 FILE* source; 00083 const bool autoClose; 00084 00085 }; 00086 00087 #endif