4 #include <ros/package.h>
30 for (
auto it = args.
cbegin(); it != args.
cend(); ++it)
43 if (args[0] ==
"rospkg" && args.
size() == 2)
48 result = ros::package::getPath(args[1]);
51 error <<
"ROS package '" << args[1] <<
"' unknown.";
57 else if (args[0] ==
"env" && (args.
size() == 2 || args.
size() == 3))
63 env_value = getenv(args[1].c_str());
64 if (env_value ==
nullptr)
73 error <<
"Environment variable '" << args[1] <<
"' unknown.";
80 else if (args[0] ==
"file" && args.
size() == 2)
86 if (filename[0] ==
'/')
101 error <<
"Unknown resolve function: '" << args[0] <<
"' with " << args.
size() - 1 <<
" arguments.";
113 bool inner_function_skipped =
false;
115 for(; i < str.
size();)
119 if (c ==
'$' && (i + 1) < str.
size() && str[i + 1] ==
'(')
129 inner_function_skipped =
true;
139 if (args.
back().empty())
145 error <<
"Empty resolve function.";
156 if (inner_function_skipped)
160 error <<
"Inner resolve function skipped, but not this one: " << resolved_args <<
".";
168 if (!args.
back().empty())
179 error <<
"Missing ')'.";
195 while(i < str.
size())
198 if (i_sign == std::string::npos)
204 result += str.
substr(i, i_sign - i);