// Copyright (C) 2000-2007, Luca Padovani . // // This file is part of GtkMathView, a flexible, high-quality rendering // engine for MathML documents. // // GtkMathView is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published // by the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // GtkMathView 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 // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . #include #include "Attribute.hh" #include "TemplateBuilder.hh" #include "custom_reader_Model.hh" #include "custom_reader_Builder.hh" #include "TemplateReaderRefinementContext.hh" typedef TemplateBuilder > BUILDER; SmartPtr custom_reader_Builder::create() { return BUILDER::create(); } void* custom_reader_Builder::findSelfOrAncestorModelElement(const SmartPtr& elem) const { for (SmartPtr p(elem); p; p = p->getParent()) if (void* id = linker.assoc(p)) return id; return 0; } bool custom_reader_Builder::notifyStructureChanged(void* id) { if (SmartPtr elem = linker.assoc(id)) { elem->setDirtyStructure(); elem->setDirtyAttributeD(); return true; } else return false; } bool custom_reader_Builder::notifyAttributeChanged(void* id, const char*) { if (SmartPtr elem = linker.assoc(id)) { elem->setDirtyAttribute(); return true; } else return false; }