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