![]() |
C++ API DOCUMENTATION |
00001 /***************************************************************************** 00002 * 00003 * This file is part of Mapnik (c++ mapping toolkit) 00004 * 00005 * Copyright (C) 2006 Artem Pavlenko 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 * 00021 *****************************************************************************/ 00022 00023 //$Id$ 00024 00025 #ifndef FILTER_TO_STRING_HPP 00026 #define FILTER_TO_STRING_HPP 00027 00028 // mapnik 00029 #include <mapnik/filter.hpp> 00030 #include <mapnik/expression.hpp> 00031 // stl 00032 #include <set> 00033 00034 namespace mapnik 00035 { 00036 template <typename FeatureT> 00037 class filter_to_string : public filter_visitor<FeatureT> 00038 { 00039 private: 00040 std::string text_; 00041 public: 00042 filter_to_string() {} 00043 void visit(filter<FeatureT>& /*filter*/) 00044 { 00045 //not interested 00046 } 00047 void visit(expression<FeatureT>& exp) 00048 { 00049 property<FeatureT>* pf; 00050 if ((pf = dynamic_cast<property<FeatureT>*>(&exp))) 00051 { 00052 names_.insert(pf->name()); 00053 } 00054 } 00055 std::string const& text() const 00056 { 00057 return text_; 00058 } 00059 00060 virtual ~filter_to_string() {} 00061 private: 00062 filter_to_string(filter_to_string const&); 00063 filter_to_string& operator=(filter_to_string const&); 00064 }; 00065 } 00066 00067 #endif //FILTER_TO_STRING