00001 00007 /* 00008 # Copyright (c) <2009> <Sebastien Heymann> 00009 # 00010 # Permission is hereby granted, free of charge, to any person obtaining a copy 00011 # of this software and associated documentation files (the "Software"), to deal 00012 # in the Software without restriction, including without limitation the rights 00013 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00014 # copies of the Software, and to permit persons to whom the Software is 00015 # furnished to do so, subject to the following conditions: 00016 # 00017 # The above copyright notice and this permission notice shall be included in 00018 # all copies or substantial portions of the Software. 00019 # 00020 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00021 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00022 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00023 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00024 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00025 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00026 # THE SOFTWARE. 00027 */ 00028 00029 #ifndef _FILEREADER_H 00030 #define _FILEREADER_H 00031 00032 #include "gexf.h" 00033 #include "abstractparser.h" 00034 00035 00036 namespace libgexf { 00037 00041 class FileReader { 00042 public: 00046 enum Version { _1_0, _1_1}; 00047 public: 00048 FileReader(); 00049 00056 explicit FileReader(const std::string& filepath, const Version v=_1_1); 00057 00061 FileReader(const FileReader& orig); 00062 00063 virtual ~FileReader(); 00064 00065 00071 libgexf::GEXF getGEXFCopy(); 00072 00079 void init(const std::string& filepath, const Version v=_1_1); 00080 00085 void slurp(); 00086 00087 //int relaxNGValidate(const std::string schema); 00088 private: 00089 void createParser(); 00090 void streamFile(); 00091 private: 00092 GEXF* _gexf; 00093 AbstractParser* _parser; 00094 std::string _filepath; 00095 Version _v; 00096 }; 00097 00098 } /* namespace libgexf */ 00099 00100 #endif /* _FILEREADER_H */