]> Creatis software - cpPlugins.git/blob - lib/third_party/Pluma/Pluma.inl
c3b6ce7b2c917b6f6c2a76036b35bbf5d849e421
[cpPlugins.git] / lib / third_party / Pluma / Pluma.inl
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // Pluma - Plug-in Management Framework\r
4 // Copyright (C) 2010-2012 Gil Costa (gsaurus@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 \r
26 ////////////////////////////////////////////////////////////\r
27 inline Pluma::Pluma(){\r
28     // Nothing to do\r
29 }\r
30 \r
31 \r
32 ////////////////////////////////////////////////////////////\r
33 template<typename ProviderType>\r
34 void Pluma::acceptProviderType(){\r
35     PluginManager::registerType(\r
36         ProviderType::PLUMA_PROVIDER_TYPE,\r
37         ProviderType::PLUMA_INTERFACE_VERSION,\r
38         ProviderType::PLUMA_INTERFACE_LOWEST_VERSION\r
39     );\r
40 }\r
41 \r
42 \r
43 ////////////////////////////////////////////////////////////\r
44 template<typename ProviderType>\r
45 void Pluma::getProviders(std::vector<ProviderType*>& providers){\r
46     const std::list<Provider*>* lst = PluginManager::getProviders(ProviderType::PLUMA_PROVIDER_TYPE);\r
47     if (!lst) return;\r
48     providers.reserve(providers.size() + lst->size());\r
49     std::list<Provider*>::const_iterator it;\r
50     for (it = lst->begin() ; it != lst->end() ; ++it)\r
51         providers.push_back(static_cast<ProviderType*>(*it));\r
52 }\r