1 //-------------------------------------------------------------------------- 2 // Copyright (C) 2015-2021 Cisco and/or its affiliates. All rights reserved. 3 // 4 // This program is free software; you can redistribute it and/or modify it 5 // under the terms of the GNU General Public License Version 2 as published 6 // by the Free Software Foundation. You may not use, modify or distribute 7 // this program under any other version of the GNU General Public License. 8 // 9 // This program is distributed in the hope that it will be useful, but 10 // WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 // General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License along 15 // with this program; if not, write to the Free Software Foundation, Inc., 16 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 //-------------------------------------------------------------------------- 18 // piglet_manager.h author Joel Cornett <jocornet@cisco.com> 19 20 #ifndef PIGLET_MANAGER_H 21 #define PIGLET_MANAGER_H 22 23 // Factory for instantiating piglet plugins 24 25 #include <string> 26 #include <vector> 27 28 namespace Lua 29 { 30 class State; 31 } 32 33 namespace Piglet 34 { 35 struct Chunk; 36 struct Api; 37 class BasePlugin; 38 39 class Manager 40 { 41 public: 42 static void init(); 43 44 static void add_plugin(const Api*); 45 46 static BasePlugin* instantiate( 47 Lua::State&, const std::string&, 48 std::string&, std::string&, bool = false); 49 50 static void destroy(BasePlugin*); 51 52 static void add_chunk(const std::string&, const std::string&, const std::string&); 53 static const std::vector<Chunk>& get_chunks(); 54 }; 55 } // namespace Piglet 56 57 #endif 58 59