00001 /**************************************************************************************/00002 /* */00003 /* Visualization Library */00004 /* http://visualizationlibrary.org */00005 /* */00006 /* Copyright (c) 2005-2010, Michele Bosi */00007 /* All rights reserved. */00008 /* */00009 /* Redistribution and use in source and binary forms, with or without modification, */00010 /* are permitted provided that the following conditions are met: */00011 /* */00012 /* - Redistributions of source code must retain the above copyright notice, this */00013 /* list of conditions and the following disclaimer. */00014 /* */00015 /* - Redistributions in binary form must reproduce the above copyright notice, this */00016 /* list of conditions and the following disclaimer in the documentation and/or */00017 /* other materials provided with the distribution. */00018 /* */00019 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */00020 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */00021 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */00022 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */00023 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */00024 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */00025 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */00026 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */00027 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */00028 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */00029 /* */00030 /**************************************************************************************/00031
00032 #ifndef VLXParser_INCLUDE_ONCE00033 #define VLXParser_INCLUDE_ONCE00034
00035 #include <vlCore/BufferedStream.hpp>00036 #include <vlCore/VLXLinker.hpp>00037
00038 namespace vl
00039 {
00041class VLXParser: publicObject00042 {
00043 VL_INSTRUMENT_ABSTRACT_CLASS(vl::VLXParser, Object)
00044
00045 public:
00046
00047 virtualboolparseHeader() = 0;
00048
00049 virtualboolparse() = 0;
00050
00052boollink()
00053 {
00054 VLXLinker linker;
00055
00056 for(size_t i=0; i<mStructures.size(); ++i)
00057 linker.add(mStructures[i].get());
00058
00059 return linker.link();
00060 }
00061
00063voidparseMetadata()
00064 {
00065 mMetadata.clear();
00066
00067 for(size_t i=0; i<mStructures.size(); ++i)
00068 {
00069 if (mStructures[i]->tag() == "<Metadata>")
00070 {
00071 constVLXStructure* st = mStructures[i].get();
00072
00073 for(size_t ikey=0; ikey<st->value().size(); ++ikey)
00074 mMetadata[st->value()[ikey].key()] = st->value()[ikey].value();
00075
00076 mStructures.erase( mStructures.begin() + i );
00077 }
00078 }
00079 }
00080
00082 std::vector< ref<VLXStructure> >& structures() { returnmStructures; }
00083
00085const std::vector< ref<VLXStructure> >& structures() const { returnmStructures; }
00086
00088const std::map< std::string, VLXValue >& metadata() const { returnmMetadata; }
00089
00091const std::string& encoding() const { returnmEncoding; }
00092
00094unsignedshortversion() const { returnmVersion;}
00095
00096 protected:
00097 std::string mEncoding;
00098unsignedshortmVersion;
00099 std::vector< ref<VLXStructure> > mStructures;
00100 std::map< std::string, VLXValue > mMetadata;
00101 };
00102 }
00103
00104 #endif
Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:02.
Permission is granted to use this page to write and publish articles regarding Visualization Library.