Warning, file /graphics/glaxnimate/src/core/model/simple_visitor.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "visitor.hpp" 0010 0011 namespace glaxnimate::model { 0012 0013 template<class NodeType, class Callback> 0014 class SimpleVisitor : public Visitor 0015 { 0016 public: 0017 SimpleVisitor(Callback callback) : callback(std::move(callback)) {} 0018 0019 private: 0020 void on_visit(model::DocumentNode* node) override 0021 { 0022 if ( auto obj = node->cast<NodeType>() ) 0023 callback(obj); 0024 } 0025 0026 Callback callback; 0027 }; 0028 0029 template<class NodeType, class Callback> 0030 void simple_visit(model::DocumentNode* node, bool skip_locked, Callback callback) 0031 { 0032 SimpleVisitor<NodeType, Callback>(std::move(callback)).visit(node, skip_locked); 0033 } 0034 0035 } // namespace glaxnimate::model