本文整理汇总了C++中jccl::ConfigElementPtr::getVersion方法的典型用法代码示例。如果您正苦于以下问题:C++ ConfigElementPtr::getVersion方法的具体用法?C++ ConfigElementPtr::getVersion怎么用?C++ ConfigElementPtr::getVersion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类jccl::ConfigElementPtr
的用法示例。
在下文中一共展示了ConfigElementPtr::getVersion方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: configure
void SignalGrabStrategy::configure(jccl::ConfigElementPtr elt)
{
vprASSERT(elt->getID() == getElementType());
const unsigned int req_cfg_version(1);
// Check for correct version of plugin configuration.
if ( elt->getVersion() < req_cfg_version )
{
std::stringstream msg;
msg << "Configuration of SignalGrabStrategy failed. Required config "
<< "element version is " << req_cfg_version << ", but element '"
<< elt->getName() << "' is version " << elt->getVersion();
throw PluginException(msg.str(), VRKIT_LOCATION);
}
const std::string choose_btn_prop("choose_button_nums");
const std::string grab_btn_prop("grab_button_nums");
const std::string release_btn_prop("release_button_nums");
mChooseBtn.configure(elt->getProperty<std::string>(choose_btn_prop),
mWandInterface);
mGrabBtn.configure(elt->getProperty<std::string>(grab_btn_prop),
mWandInterface);
mReleaseBtn.configure(elt->getProperty<std::string>(release_btn_prop),
mWandInterface);
// Determine if grab and release are activated using the same button
// sequence. This indicates that the grab/release operation is a toggle
// and must be handled differently than if the two operations are
// separate.
mGrabReleaseToggle = mGrabBtn == mReleaseBtn;
}
示例2: configure
void MultiObjectGrabStrategy::configure(jccl::ConfigElementPtr elt)
{
vprASSERT(elt->getID() == getElementType());
const unsigned int req_cfg_version(1);
// Check for correct version of plugin configuration.
if ( elt->getVersion() < req_cfg_version )
{
std::stringstream msg;
msg << "Configuration of MultiObjectGrabStrategy failed. Required "
<< "config element version is " << req_cfg_version
<< ", but element '" << elt->getName() << "' is version "
<< elt->getVersion();
throw PluginException(msg.str(), VRKIT_LOCATION);
}
const std::string choose_btn_prop("choose_button_nums");
const std::string grab_btn_prop("grab_button_nums");
const std::string release_btn_prop("release_button_nums");
mChooseBtn.configure(elt->getProperty<std::string>(choose_btn_prop),
mWandInterface);
mGrabBtn.configure(elt->getProperty<std::string>(grab_btn_prop),
mWandInterface);
mReleaseBtn.configure(elt->getProperty<std::string>(release_btn_prop),
mWandInterface);
}
示例3: setDisplaySystemElement
void DisplayManager::setDisplaySystemElement(jccl::ConfigElementPtr elt)
{
if ( elt->getVersion() < 3 )
{
vprDEBUG(vrjDBG_DISP_MGR, vprDBG_WARNING_LVL)
<< clrOutBOLD(clrYELLOW, "WARNING") << ": Display system element '"
<< elt->getName() << "'" << std::endl;
vprDEBUG_NEXTnl(vrjDBG_DISP_MGR, vprDBG_WARNING_LVL)
<< " is out of date.\n";
vprDEBUG_NEXTnl(vrjDBG_DRAW_MGR, vprDBG_WARNING_LVL)
<< " Expected version 3 but found version "
<< elt->getVersion() << ". Pipe\n";
vprDEBUG_NEXTnl(vrjDBG_DRAW_MGR, vprDBG_WARNING_LVL)
<< " configurations will not work.\n" << vprDEBUG_FLUSH;
}
mDisplaySystemElement = elt;
}
示例4: configAdd
bool CorbaPerfPlugin::configAdd(jccl::ConfigElementPtr element)
{
const unsigned int min_def_version(2);
if ( element->getVersion() < min_def_version )
{
vprDEBUG(jcclDBG_PLUGIN, vprDBG_WARNING_LVL)
<< clrOutBOLD(clrYELLOW, "WARNING") << ": Element named '"
<< element->getName() << "'" << std::endl;
vprDEBUG_NEXTnl(jcclDBG_PLUGIN, vprDBG_WARNING_LVL)
<< "is version " << element->getVersion()
<< ", but we expect at least version " << min_def_version
<< ".\n";
vprDEBUG_NEXTnl(jcclDBG_PLUGIN, vprDBG_WARNING_LVL)
<< "Default values will be used for some settings.\n"
<< vprDEBUG_FLUSH;
}
// If the ORB is already running, we need to shut it down first. One big
// reason for doing this is to release the resources (memory and so on)
// allocated previously.
if ( mInterface != NULL || mCorbaManager != NULL )
{
vprDEBUG(vrjDBG_PLUGIN, vprDBG_STATE_LVL)
<< "[CorbaPerfPlugin::configAdd()] Attempting to shut down "
<< "existing CORBA instance.\n" << vprDEBUG_FLUSH;
// stopCorba() will call disable() if we are still in the enabled state.
stopCorba();
}
// We'll ignore the return value for now. startCorba() prints out enough
// warning information on its own if something goes wrong.
this->startCorba(element->getProperty<std::string>("endpoint_addr"),
element->getProperty<vpr::Uint16>("endpoint_port"));
return true;
}
示例5: config
bool Vrpn::config(jccl::ConfigElementPtr e)
{
const unsigned int min_def_version(2);
if ( e->getVersion() < min_def_version )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< clrOutBOLD(clrYELLOW, "WARNING:") << " Element named '"
<< e->getName() << "'" << std::endl;
vprDEBUG_NEXTnl(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< "is version " << e->getVersion()
<< ", but we expect at least version " << min_def_version
<< ".\n";
vprDEBUG_NEXTnl(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< "Default values will be used for some settings.\n"
<< vprDEBUG_FLUSH;
}
if ( ! (Input::config(e) && Position::config(e) && Digital::config(e) &&
Analog::config(e)) )
{
return false;
}
// Get the name of the VRPN tracker server.
mTrackerServer = e->getProperty<std::string>("tracker_server");
// Get the number of tracked objects.
mTrackerNumber = e->getProperty<int>("tracker_count");
if ( mTrackerNumber > 0 )
{
if ( mTrackerServer.empty() )
{
vprDEBUG(vprDBG_ALL, vprDBG_WARNING_LVL)
<< "[Vrpn::config()] VRPN tracker server name not set!\n"
<< vprDEBUG_FLUSH;
mTrackerNumber = 0;
}
else
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL)
<< "VRPN driver set to read " << mTrackerNumber
<< " tracker values from '" << mTrackerServer << "'\n"
<< vprDEBUG_FLUSH;
}
mPositions.resize(mTrackerNumber);
mQuats.resize(mTrackerNumber);
}
// Get the name of the VRPN button server.
mButtonServer = e->getProperty<std::string>("button_server");
// Get the number of buttons.
mButtonNumber = e->getProperty<int>("button_count");
if ( mButtonNumber > 0 )
{
if ( mButtonServer.empty() )
{
vprDEBUG(vprDBG_ALL, vprDBG_WARNING_LVL)
<< "[Vrpn::config()] VRPN button server name not set!\n"
<< vprDEBUG_FLUSH;
mButtonNumber = 0;
}
else
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL)
<< "VRPN driver set to read " << mButtonNumber
<< " button values from '" << mButtonServer << "'\n"
<< vprDEBUG_FLUSH;
}
mButtons.resize(mButtonNumber);
}
// Get the name of the VRPN analog server.
mAnalogServer = e->getProperty<std::string>("analog_server");
// Get the number of analogs.
mAnalogNumber = e->getProperty<int>("analog_count");
if ( mAnalogNumber > 0 )
{
if ( mAnalogServer.empty() )
{
vprDEBUG(vprDBG_ALL, vprDBG_WARNING_LVL)
<< "[Vrpn::config()] VRPN analog server name not set!\n"
<< vprDEBUG_FLUSH;
mAnalogNumber = 0;
}
else
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL)
<< "VRPN driver set to read " << mAnalogNumber
<< " analog values from '" << mAnalogServer << "'\n"
<< vprDEBUG_FLUSH;
}
mAnalogs.resize(mAnalogNumber);
}
//.........这里部分代码省略.........
示例6: config
bool InputWindowXWin::config(jccl::ConfigElementPtr e)
{
unsigned required_definition_ver(1);
if (e->getVersion() < required_definition_ver)
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< clrOutBOLD(clrRED, "ERROR")
<< ": [gadget::InputWindowXWin::config()] Element named '"
<< e->getName() << "'" << std::endl << vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "is version " << e->getVersion()
<< ", but we require at least version " << required_definition_ver
<< ". Ignoring.\n" << vprDEBUG_FLUSH;
return false;
}
if ( ! ( InputArea::config(e) && Input::config(e) ) )
{
return false;
}
const char neg_one_STRING[] = "-1";
// Get size and position
mWidth = e->getProperty<int>("size", 0);
mHeight = e->getProperty<int>("size", 1);
// Sanity checks.
if (mWidth == 0)
{
mWidth = 400;
}
if (mHeight == 0)
{
mHeight = 400;
}
mX = e->getProperty<int>("origin", 0);
mY = e->getProperty<int>("origin", 1);
// Get the X display string
int x_disp_num = e->getProperty<int>("display_number");
jccl::ConfigElementPtr disp_sys_elt =
gadget::InputManager::instance()->getDisplaySystemElement();
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL)
<< "gadget::InputWindowXWin: display_number: " << x_disp_num
<< std::endl << vprDEBUG_FLUSH;
if (NULL == disp_sys_elt.get())
{
vprDEBUG(vprDBG_ERROR, vprDBG_CONFIG_LVL)
<< clrOutNORM(clrRED, "ERROR")
<< ": [gadget::InputWindowXWin::config()] display_system element "
<< "is NULL.\n" << vprDEBUG_FLUSH;
return false;
}
if ( x_disp_num >= 0 && disp_sys_elt.get() != NULL )
{
if ( disp_sys_elt->getVersion() < 3 )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< clrOutBOLD(clrYELLOW, "WARNING") << ": Display system element '"
<< disp_sys_elt->getName() << "'" << std::endl;
vprDEBUG_NEXTnl(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< " is out of date.\n";
vprDEBUG_NEXTnl(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< " Expected version 3 but found version "
<< disp_sys_elt->getVersion() << ". Pipe\n";
vprDEBUG_NEXTnl(gadgetDBG_INPUT_MGR, vprDBG_WARNING_LVL)
<< " configurations will not work.\n" << vprDEBUG_FLUSH;
}
mXDisplayString = disp_sys_elt->getProperty<std::string>("pipes",
x_disp_num);
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL)
<< "[gadget::InputWindowXWin::config()] Display: " << mXDisplayString
<< std::endl << vprDEBUG_FLUSH;
}
else
{
mXDisplayString = std::string("-1");
}
if ((mXDisplayString.empty()) || (strcmp(mXDisplayString.c_str(), neg_one_STRING) == 0)) // Use display env
{
const std::string DISPLAY_str("DISPLAY");
vpr::System::getenv(DISPLAY_str, mXDisplayString);
}
return true;
}
示例7: configure
void ModeHarnessPlugin::configure(jccl::ConfigElementPtr elt)
{
vprASSERT(elt->getID() == getElementType());
const unsigned int req_cfg_version(2);
// Check for correct version of plugin configuration.
if ( elt->getVersion() < req_cfg_version )
{
std::stringstream msg;
msg << "Configuration of ModeHarnessPlugin failed. Required config "
<< "element version is " << req_cfg_version << ", but element '"
<< elt->getName() << "' is version " << elt->getVersion();
throw PluginException(msg.str(), VRKIT_LOCATION);
}
const std::string component_path_prop("component_path");
const std::string default_component_prop("default_component");
const std::string component_prop("component");
const std::string plugin_prop("plugin");
const std::string signal_prop("signal");
const std::string active_component_prop("active_component");
// Set up two default search paths:
// 1. Relative path to './plugins/mode'
// 2. VRKIT_BASE_DIR/lib/vrkit/plugins/mode
//
// In all of the above cases, the 'debug' subdirectory is searched first if
// this is a debug build (i.e., when VRKIT_DEBUG is defined and _DEBUG is
// not).
std::vector<std::string> component_path =
plugin::getDefaultSearchPath("mode");
const unsigned int num_plugin_paths(elt->getNum(component_path_prop));
for ( unsigned int i = 0; i < num_plugin_paths; ++i )
{
std::string dir = elt->getProperty<std::string>(component_path_prop, i);
component_path.push_back(vpr::replaceEnvVars(dir));
}
mDefaultComponentName =
elt->getProperty<std::string>(default_component_prop);
const unsigned int num_comps(elt->getNum(component_prop));
for ( unsigned int i = 0; i < num_comps; ++i )
{
jccl::ConfigElementPtr comp_elt =
elt->getProperty<jccl::ConfigElementPtr>(component_prop, i);
mComponentInfo.push_back(
ComponentInfo(comp_elt->getName(),
comp_elt->getProperty<std::string>(plugin_prop))
);
}
const unsigned int num_signals(elt->getNum(signal_prop));
for ( unsigned int i = 0; i < num_signals; ++i )
{
jccl::ConfigElementPtr signal_elt =
elt->getProperty<jccl::ConfigElementPtr>(signal_prop, i);
mSignalDefs.push_back(
SignalDef(signal_elt->getName(),
signal_elt->getProperty<std::string>(active_component_prop))
);
}
std::vector<vpr::LibraryPtr> modules = plugin::findModules(component_path);
std::for_each(modules.begin(), modules.end(),
boost::bind(&ModeHarnessPlugin::registerModule, this, _1));
}
示例8: configure
void SlideMoveStrategy::configure(jccl::ConfigElementPtr cfgElt)
{
vprASSERT(cfgElt->getID() == getElementType());
const unsigned int req_cfg_version(2);
if ( cfgElt->getVersion() < req_cfg_version )
{
std::stringstream msg;
msg << "Configuration of SlideMoveStrategy failed. Required config "
<< "element version is " << req_cfg_version << ", but element '"
<< cfgElt->getName() << "' is version " << cfgElt->getVersion();
throw PluginException(msg.str(), VRKIT_LOCATION);
}
const std::string slide_target_prop("slide_target");
const std::string analog_input_prop("analog_input");
const std::string forward_value_prop("forward_slide_value");
const std::string slide_epsilon_prop("slide_epsilon");
const unsigned int slide_target =
cfgElt->getProperty<unsigned int>(slide_target_prop);
if ( slide_target == 0 || slide_target == 1 )
{
mSlideTarget = static_cast<SlideTarget>(slide_target);
}
else
{
VRKIT_STATUS << "ERROR: Invalid slide target identifier "
<< slide_target << std::endl;
}
const int analog_num = cfgElt->getProperty<int>(analog_input_prop);
// -1 disables sliding. Otherwise, the analog number must be in the range
// 0 <= analog_num < 4.
if ( analog_num == -1 || 0 <= analog_num && analog_num < 4 )
{
mAnalogNum = analog_num;
}
else
{
VRKIT_STATUS << "ERROR: Analog input index (" << analog_num
<< ") given!\n"
<< "This must be -1 (to disable) or in the range [0, 4)."
<< std::endl;
}
const float fwd_val = cfgElt->getProperty<float>(forward_value_prop);
if ( fwd_val == 0.0f || fwd_val == 1.0f )
{
mForwardValue = fwd_val;
}
else
{
VRKIT_STATUS << "ERROR: Invalid forward sliding value (" << fwd_val
<< ") given!\n"
<< "This must be either 0.0 or 1.0" << std::endl;
}
const float eps = cfgElt->getProperty<float>(slide_epsilon_prop);
if ( eps >= 0.0f )
{
mSlideEpsilon = eps;
}
else
{
VRKIT_STATUS << "ERROR: Slide epsilon must be non-negative!"
<< std::endl;
}
}
示例9: config
// Configure the MotionStar with the given config element.
bool MotionStar::config(jccl::ConfigElementPtr e)
{
bool retval(false);
if ( Input::config(e) && Position::config(e) )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_STATE_LVL)
<< "MotionStar::config(jccl::ConfigElementPtr)\n"
<< vprDEBUG_FLUSH;
const unsigned int cur_version(2);
if ( e->getVersion() < cur_version )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< clrOutBOLD(clrRED, "ERROR")
<< " [gadget::MotionStar::config()] Element named '"
<< e->getName() << "'" << std::endl << vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "is version " << e->getVersion()
<< ", but we require at least version " << cur_version
<< std::endl << vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "Ignoring this element and moving on." << std::endl
<< vprDEBUG_FLUSH;
retval = false;
}
else
{
// Configure mMotionStar with the config info.
const unsigned num_filters = e->getNum("position_filters");
// Sanity check. There has to be at least one position filter
// configured.
if ( num_filters == 0 )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< clrOutBOLD(clrRED, "ERROR")
<< ": [MotionStar::config(jccl::ConfigElementPtr)] No position "
<< "filters configured in " << e->getName() << std::endl
<< vprDEBUG_FLUSH;
retval = false;
}
else
{
BIRDNET::units expected_units;
// Find the first position_transform_filter instance and get its
// device_units property value. This will tell us what units we're
// expecting from the hardware.
const std::string filter_type("position_transform_filter");
for ( unsigned i = 0; i < num_filters; ++i )
{
jccl::ConfigElementPtr pos_elt =
e->getProperty<jccl::ConfigElementPtr>("position_filters", i);
if ( pos_elt->getID() == filter_type )
{
const float unit_conv =
pos_elt->getProperty<float>("device_units");
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_VERB_LVL)
<< "[gadget::MotionStar::config()] Read " << unit_conv
<< " as the conversion from device units to meters.\n"
<< vprDEBUG_FLUSH;
// Inches. This is the most likely configuration as of this
// writing.
if ( unit_conv == 0.0254f )
{
expected_units = BIRDNET::INCHES;
}
// Feet.
else if ( unit_conv == 0.3048f )
{
expected_units = BIRDNET::FEET;
}
// Meters.
else if ( unit_conv == 1.0f )
{
expected_units = BIRDNET::METERS;
}
// Unexpected value.
else
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "[MotionStar::config(jccl::ConfigElementPtr)] "
<< clrOutBOLD(clrRED, "ERROR")
<< ": Unsupported device unit value " << unit_conv
<< " in " << pos_elt->getFullName() << std::endl
<< vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "Check your configuration for errors.\n"
<< vprDEBUG_FLUSH;
// Break out of this method early because the
// configuration element we were given is bad.
return false;
}
//.........这里部分代码省略.........
示例10: configureInputManager
bool InputManager::configureInputManager(jccl::ConfigElementPtr element)
{
bool have_bad_elt = (element->getID() != std::string("input_manager"));
vprASSERT(!have_bad_elt);
if(have_bad_elt)
{
return false;
}
bool ret_val = false;
vpr::DebugOutputGuard dbg_output(gadgetDBG_INPUT_MGR, vprDBG_STATE_LVL,
std::string("Handling input_manager element:\n"),
std::string("-- end state -- \n"));
// Keep this up to date with the version of the element definition we're
// expecting to handle.
const unsigned int cur_version(2);
// If the element version is less than cur_version, we will not try to
// proceed. Instead, we'll print an error message and return false so
// that the Config Manager knows this element wasn't consumed.
if ( element->getVersion() < cur_version )
{
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< clrOutBOLD(clrRED, "ERROR")
<< ": [gadget::InputManager::configureInputManager()] Element named '"
<< element->getName() << "'" << std::endl << vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "is version " << element->getVersion()
<< ", but we require at least version " << cur_version
<< std::endl << vprDEBUG_FLUSH;
vprDEBUG_NEXT(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL)
<< "Ignoring this element and moving on." << std::endl
<< vprDEBUG_FLUSH;
ret_val = false;
}
// We got the right version of the config element and can proceed.
else
{
const std::string driver_path_prop_name("driver_path");
const int path_count(element->getNum(driver_path_prop_name));
std::vector<fs::path> search_path(path_count);
for ( unsigned int i = 0; i < search_path.size(); ++i )
{
std::string temp_str =
vpr::replaceEnvVars(element->getProperty<std::string>(driver_path_prop_name, i));
try
{
search_path[i] = fs::path(temp_str, fs::native);
}
catch(fs::filesystem_error& fsEx)
{
vprDEBUG(vprDBG_ERROR, vprDBG_CRITICAL_LVL)
<< clrOutNORM(clrRED, "ERROR")
<< ": [gadget::InputManager::configureInputManager()] File "
<< "system exception caught while converting\n"
<< vprDEBUG_FLUSH;
vprDEBUG_NEXT(vprDBG_ERROR, vprDBG_CRITICAL_LVL)
<< "'" << temp_str << "'\n" << vprDEBUG_FLUSH;
vprDEBUG_NEXT(vprDBG_ERROR, vprDBG_CRITICAL_LVL)
<< "to a Boost.Filesystem path.\n" << vprDEBUG_FLUSH;
vprDEBUG_NEXT(vprDBG_ERROR, vprDBG_CRITICAL_LVL)
<< fsEx.what() << std::endl << vprDEBUG_FLUSH;
}
}
// Append a default driver search path to search_path.
const fs::path default_search_dir =
gadget::getDefaultPluginRoot() / std::string("drivers");
vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_VERB_LVL)
<< "[gadget::InputManager::configureInputManager()] Appending "
<< "default search path '"
<< default_search_dir.native_directory_string() << "'\n"
<< vprDEBUG_FLUSH;
#if defined(GADGET_DEBUG)
// For a debug build, search in the debug subdirectory of
// default_search_dir before looking in default_search_dir.
search_path.push_back(default_search_dir / std::string("debug"));
#endif
search_path.push_back(default_search_dir);
// --- Load device driver dsos -- //
// - Load individual drivers
const std::string driver_prop_name("driver");
const std::string get_version_func("getGadgeteerVersion");
const std::string driver_init_func("initDevice");
int driver_count = element->getNum(driver_prop_name);
std::string driver_dso_name;
for ( int i = 0; i < driver_count; ++i )
{
driver_dso_name =
element->getProperty<std::string>(driver_prop_name, i);
//.........这里部分代码省略.........
示例11: init
GridPtr Grid::init(jccl::ConfigElementPtr cfgElt)
{
vprASSERT(cfgElt->getID() == std::string("grid"));
const unsigned int req_cfg_version(1);
// Check for correct version of plugin configuration.
if ( cfgElt->getVersion() < req_cfg_version )
{
std::ostringstream msg;
msg << "Failed to configure grid '" << cfgElt->getName()
<< "'. Required config element version is " << req_cfg_version
<< ", but this element is version " << cfgElt->getVersion();
throw PluginException(msg.str(), VRKIT_LOCATION);
}
mName = cfgElt->getName();
const std::string size_prop("size");
const std::string granularity_prop("granularity");
const std::string color_prop("color");
const std::string corner_prop("corner");
const std::string corner_pos_prop("corner_position");
const std::string orient_prop("orientation");
const OSG::Real32 width = cfgElt->getProperty<OSG::Real32>(size_prop, 0);
const OSG::Real32 height = cfgElt->getProperty<OSG::Real32>(size_prop, 1);
if ( width <= 0.0f || height <= 0.0f )
{
std::ostringstream msg_stream;
msg_stream << "Invalid grid dimensions " << width << "x" << height;
throw PluginException(msg_stream.str(), VRKIT_LOCATION);
}
const float granularity = cfgElt->getProperty<float>(granularity_prop);
if ( granularity <= 0.0f )
{
std::ostringstream msg_stream;
msg_stream << "Invalid grid cell granularity " << granularity;
throw PluginException(msg_stream.str(), VRKIT_LOCATION);
}
OSG::Real32 red = cfgElt->getProperty<OSG::Real32>(color_prop, 0);
OSG::Real32 green = cfgElt->getProperty<OSG::Real32>(color_prop, 1);
OSG::Real32 blue = cfgElt->getProperty<OSG::Real32>(color_prop, 2);
if ( red < 0.0f || red > 1.0f )
{
std::cerr << "WARNING: Invalid red color value " << red
<< " in config element '" << cfgElt->getName() << "'"
<< std::endl;
red = 0.0f;
}
if ( green < 0.0f || green > 1.0f )
{
std::cerr << "WARNING: Invalid green color value " << green
<< " in config element '" << cfgElt->getName() << "'"
<< std::endl;
green = 0.0f;
}
if ( blue < 0.0f || blue > 1.0f )
{
std::cerr << "WARNING: Invalid blue color value " << blue
<< " in config element '" << cfgElt->getName() << "'"
<< std::endl;
blue = 0.0f;
}
unsigned int corner_val = cfgElt->getProperty<unsigned int>(corner_prop);
Corner corner;
if ( 0 <= corner_val && corner_val <= 3 )
{
corner = static_cast<Corner>(corner_val);
}
else
{
std::ostringstream msg_stream;
msg_stream << "Invalid corner value " << corner_val
<< "; must be one of 0, 1, 2, or 3";
throw PluginException(msg_stream.str(), VRKIT_LOCATION);
}
const OSG::Vec3f corner_pos(
cfgElt->getProperty<float>(corner_pos_prop, 0),
cfgElt->getProperty<float>(corner_pos_prop, 1),
cfgElt->getProperty<float>(corner_pos_prop, 2)
);
OSG::Quaternion rot;
rot.setValue(
gmtl::Math::deg2Rad(cfgElt->getProperty<float>(orient_prop, 0)),
gmtl::Math::deg2Rad(cfgElt->getProperty<float>(orient_prop, 1)),
gmtl::Math::deg2Rad(cfgElt->getProperty<float>(orient_prop, 2))
);
initGeometry(width, height, granularity, corner, corner_pos, rot,
//.........这里部分代码省略.........
示例12: configure
void WandInterface::configure(jccl::ConfigElementPtr elt)
{
vprASSERT(elt->getID() == getElementType());
const unsigned int req_cfg_version(1);
if ( elt->getVersion() < req_cfg_version )
{
std::ostringstream msg;
msg << "Configuration of WandInterface failed. Required config "
<< "element version is " << req_cfg_version << ", but element '"
<< elt->getName() << "' is version " << elt->getVersion();
throw Exception(msg.str(), VRKIT_LOCATION);
}
const std::string pos_name_prop("position_name");
const std::string digital_name_prop("digital_name");
const std::string analog_name_prop("analog_name");
const std::string wand_name = elt->getProperty<std::string>(pos_name_prop);
if ( wand_name.empty() )
{
throw Exception("Empty wand name is not allowed", VRKIT_LOCATION);
}
mWandInterface.init(wand_name);
const unsigned int num_digitals(elt->getNum(digital_name_prop));
if ( num_digitals > 0 )
{
mButtonInterfaces.resize(num_digitals);
for ( unsigned int d = 0; d < num_digitals; ++d )
{
const std::string digital_name =
elt->getProperty<std::string>(digital_name_prop, d);
if ( digital_name.empty() )
{
mButtonInterfaces.clear();
std::ostringstream msg_stream;
msg_stream << "Empty digital name (index " << d
<< ") is not allowed";
throw Exception(msg_stream.str(), VRKIT_LOCATION);
}
mButtonInterfaces[d].init(digital_name);
}
}
const unsigned int num_analogs(elt->getNum(analog_name_prop));
if ( num_analogs > 0 )
{
mAnalogInterfaces.resize(num_analogs);
for ( unsigned int a = 0; a < num_analogs; ++a )
{
const std::string analog_name =
elt->getProperty<std::string>(analog_name_prop, a);
if ( analog_name.empty() )
{
mAnalogInterfaces.clear();
std::ostringstream msg_stream;
msg_stream << "Empty analog name (index " << a
<< ") is not allowed";
throw Exception(msg_stream.str(), VRKIT_LOCATION);
}
mAnalogInterfaces[a].init(analog_name);
}
}
}