ctkRequirePlugin.cpp

Go to the documentation of this file.
00001 /*=============================================================================
00002 
00003   Library: CTK
00004 
00005   Copyright (c) 2010 German Cancer Research Center,
00006     Division of Medical and Biological Informatics
00007 
00008   Licensed under the Apache License, Version 2.0 (the "License");
00009   you may not use this file except in compliance with the License.
00010   You may obtain a copy of the License at
00011 
00012     http://www.apache.org/licenses/LICENSE-2.0
00013 
00014   Unless required by applicable law or agreed to in writing, software
00015   distributed under the License is distributed on an "AS IS" BASIS,
00016   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00017   See the License for the specific language governing permissions and
00018   limitations under the License.
00019 
00020 =============================================================================*/
00021 
00022 #include "ctkRequirePlugin_p.h"
00023 
00024 #include "ctkPluginConstants.h"
00025 #include "ctkPluginPrivate_p.h"
00026 
00027 
00028   ctkRequirePlugin::ctkRequirePlugin(ctkPluginPrivate* requestor,
00029                 const QString& name, const QString& res,
00030                 const QString& range)
00031                   : name(name),
00032                   resolution(res.isEmpty() ? PluginConstants::RESOLUTION_MANDATORY : res),
00033                   pluginRange(range.isEmpty() ? ctkVersionRange::defaultVersionRange() : range)
00034   {
00035 
00036     if (resolution != PluginConstants::RESOLUTION_MANDATORY &&
00037         resolution != PluginConstants::RESOLUTION_OPTIONAL )
00038     {
00039       QString what = QString("Invalid directive : '")
00040                      + PluginConstants::RESOLUTION_DIRECTIVE + ":=" + this->resolution
00041                      + "' in manifest header '"
00042                      + PluginConstants::REQUIRE_PLUGIN + ": " + this->name
00043                      + "' of plugin with id " + requestor->id
00044                      + " (" + requestor->symbolicName + ")"
00045                      + ". The value must be either '"
00046                      + PluginConstants::RESOLUTION_MANDATORY + "' or '"
00047                      + PluginConstants::RESOLUTION_OPTIONAL  + "'.";
00048       throw std::invalid_argument(what.toStdString());
00049       }
00050 
00051 
00052   }
00053 
00054   bool ctkRequirePlugin::overlap(const ctkRequirePlugin& rp) const
00055   {
00056     if (resolution == PluginConstants::RESOLUTION_MANDATORY &&
00057         rp.resolution != PluginConstants::RESOLUTION_MANDATORY)
00058     {
00059       return false;
00060     }
00061     return pluginRange.withinRange(rp.pluginRange);
00062 
00063 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated on 21 May 2010 for CTK by  doxygen 1.6.1