summaryrefslogtreecommitdiff
path: root/libs/glibmm2/examples/markup/parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/glibmm2/examples/markup/parser.cc')
-rw-r--r--libs/glibmm2/examples/markup/parser.cc176
1 files changed, 0 insertions, 176 deletions
diff --git a/libs/glibmm2/examples/markup/parser.cc b/libs/glibmm2/examples/markup/parser.cc
deleted file mode 100644
index c9286f6c0b..0000000000
--- a/libs/glibmm2/examples/markup/parser.cc
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Copyright (C) 2002 The gtkmm Development Team
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <glibmm.h>
-#include <iomanip>
-#include <iostream>
-
-
-namespace
-{
-
-#ifndef GLIBMM_EXCEPTIONS_ENABLED
-//This is an alternative, to use when we have disabled exceptions:
-std::auto_ptr<Glib::Error> processing_error;
-#endif //GLIBMM_EXCEPTIONS_ENABLED
-
-void file_get_contents(const std::string& filename, Glib::ustring& contents)
-{
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
- const Glib::RefPtr<Glib::IOChannel> channel = Glib::IOChannel::create_from_file(filename, "r");
- channel->read_to_end(contents);
- #else
- const Glib::RefPtr<Glib::IOChannel> channel = Glib::IOChannel::create_from_file(filename, "r", processing_error);
- channel->read_to_end(contents, processing_error);
- #endif //GLIBMM_EXCEPTIONS_ENABLED
-}
-
-Glib::ustring trim_whitespace(const Glib::ustring& text)
-{
- Glib::ustring::const_iterator pbegin (text.begin());
- Glib::ustring::const_iterator pend (text.end());
-
- while(pbegin != pend && Glib::Unicode::isspace(*pbegin))
- ++pbegin;
-
- Glib::ustring::const_iterator temp (pend);
-
- while(pbegin != temp && Glib::Unicode::isspace(*--temp))
- pend = temp;
-
- return Glib::ustring(pbegin, pend);
-}
-
-
-class DumpParser : public Glib::Markup::Parser
-{
-public:
- DumpParser();
- virtual ~DumpParser();
-
-protected:
- virtual void on_start_element(Glib::Markup::ParseContext& context,
- const Glib::ustring& element_name,
- const AttributeMap& attributes);
-
- virtual void on_end_element(Glib::Markup::ParseContext& context,
- const Glib::ustring& element_name);
-
- virtual void on_text(Glib::Markup::ParseContext& context, const Glib::ustring& text);
-
-private:
- int parse_depth_;
-
- void indent();
-};
-
-DumpParser::DumpParser()
-:
- parse_depth_ (0)
-{}
-
-DumpParser::~DumpParser()
-{}
-
-void DumpParser::on_start_element(Glib::Markup::ParseContext&,
- const Glib::ustring& element_name,
- const AttributeMap& attributes)
-{
- indent();
- std::cout << '<' << element_name;
-
- for(AttributeMap::const_iterator p = attributes.begin(); p != attributes.end(); ++p)
- {
- std::cout << ' ' << p->first << "=\"" << p->second << '"';
- }
-
- std::cout << ">\n";
-
- ++parse_depth_;
-}
-
-void DumpParser::on_end_element(Glib::Markup::ParseContext&, const Glib::ustring& element_name)
-{
- --parse_depth_;
-
- indent();
- std::cout << "</" << element_name << ">\n";
-}
-
-void DumpParser::on_text(Glib::Markup::ParseContext&, const Glib::ustring& text)
-{
- const Glib::ustring trimmed_text = trim_whitespace(text);
-
- if(!trimmed_text.empty())
- {
- indent();
- std::cout << trimmed_text << '\n';
- }
-}
-
-void DumpParser::indent()
-{
- if(parse_depth_ > 0)
- {
- std::cout << std::setw(4 * parse_depth_)
- /* gcc 2.95.3 doesn't like this: << std::right */
- << ' ';
- }
-}
-
-} // anonymous namespace
-
-
-int main(int argc, char** argv)
-{
- if(argc < 2)
- {
- std::cerr << "Usage: parser filename\n";
- return 1;
- }
-
- DumpParser parser;
- Glib::Markup::ParseContext context (parser);
-
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
- try
- {
- #endif //GLIBMM_EXCEPTIONS_ENABLED
- Glib::ustring contents;
- file_get_contents(argv[1], contents);
-
- context.parse(contents);
- context.end_parse();
- #ifdef GLIBMM_EXCEPTIONS_ENABLED
- }
- catch(const Glib::Error& error)
- {
- std::cerr << argv[1] << ": " << error.what() << std::endl;
- return 1;
- }
- #else
- if(processing_error.get())
- {
- std::cerr << argv[1] << ": " << processing_error->what() << std::endl;
- return 1;
- }
- #endif //GLIBMM_EXCEPTIONS_ENABLED
-
-
- return 0;
-}
-