diff --git a/pdal/PluginInfo.hpp b/pdal/PluginInfo.hpp new file mode 100644 index 0000000000..cf83f9ac80 --- /dev/null +++ b/pdal/PluginInfo.hpp @@ -0,0 +1,80 @@ +/****************************************************************************** +* Copyright (c) 2018, Hobu Inc. (hobu.inc@gmail.com) +* +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following +* conditions are met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided +* with the distribution. +* * Neither the name of Hobu, Inc. or Flaxen Geo Consulting nor the +* names of its contributors may be used to endorse or promote +* products derived from this software without specific prior +* written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +* OF SUCH DAMAGE. +****************************************************************************/ + +#pragma once + +#include + +namespace pdal +{ + +struct PluginInfo +{ + std::string name; + std::string description; + std::string link; + PluginInfo(const std::string& n, const std::string& d, const std::string& l) + : name(n), description(d), link(l) + {} +}; + +struct StaticPluginInfo : public PluginInfo +{ + StringList extensions; + StringList defaultExtensions; + + StaticPluginInfo(const std::string& n, const std::string& d, + const std::string& l) : PluginInfo(n, d, l) + {} + + StaticPluginInfo(const std::string& n, const std::string& d, + const std::string& l, const StringList& e) : + PluginInfo(n, d, l), extensions(e) + {} + StaticPluginInfo(const std::string& n, const std::string& d, + const std::string& l, const StringList& e, const StringList& de) : + PluginInfo(n, d, l), extensions(e), defaultExtensions(de) + {} +}; + +} + +extern "C" +{ +// This is a placeholder so as not to break existing plugins even though the +// internal interface has changed. +typedef void PF_ExitFunc; +typedef void (*PF_InitFunc)(); +} +