The code in N_CIR_Xyce.C, line 867 processing the -plugin statement only works for 1 or 2 plugins but breaks for 3 or more (iirc). Below is a fixed version that I provide under the same license as the current Xyce license, so it can hopefully be included into the Xyce repo without problems.
Current non functional code:
if (commandLine_.argExists(std::string("-plugin")))
{
const std::string plugin = commandLine_.getArgumentValue("-plugin");
for (std::string::size_type i = 0, j = plugin.find_first_of(", "); i != std::string::npos; i = (j == std::string::npos ? j : j + 1), j = plugin.find_first_of(", ", i))
{
Device::registerPlugin(plugin.substr(i, j).c_str());
}
}
Fixed code:
if (commandLine_.argExists(std::string("-plugin")))
{
const std::string plugin = commandLine_.getArgumentValue("-plugin");
std::string::size_type beg = 0;
for (
std::string::size_type end = 0;
(end=plugin.find_first_of(",", end)) != std::string::npos;
++end
)
{
std::string regi=plugin.substr(beg, end-beg);
Device::registerPlugin(plugin.substr(beg, end-beg).c_str());
beg = end + 1;
}
Device::registerPlugin(plugin.substr(beg).c_str());
}