24 #include "ns3/assert.h"    30                     const std::string &matchedPath,
    31                     const std::string &wildcardSeparator)
    34   if (configPath == 
"*")
    39   std::vector<std::string> nonWildcardTokens;
    40   std::vector<std::size_t> nonWildcardTokenPositions;
    42   size_t nonWildcardTokenCount;
    43   size_t wildcardCount = 0;
    51       tokenStart = asterisk + 1;
    52       asterisk = configPath.find (
"*", tokenStart);
    55       if (asterisk != std::string::npos)
    61       nonWildcardTokens.push_back (configPath.substr (tokenStart, asterisk - tokenStart));
    63   while (asterisk != std::string::npos);
    66   if (wildcardCount == 0)
    72   nonWildcardTokenCount = nonWildcardTokens.size ();
    79   for (i = 0; i < nonWildcardTokenCount; i++)
    82       token = matchedPath.find (nonWildcardTokens[i], tokenStart);
    85       if (token == std::string::npos)
    87           NS_ASSERT_MSG (
false, 
"Error: non-wildcard token not found in matched path");
    91       nonWildcardTokenPositions.push_back (token);
    95       tokenStart = token + nonWildcardTokens[i].size ();
    98   std::string wildcardMatches = 
"";
   103   size_t wildcardMatchesSet = 0;
   106   for (i = 0; i < nonWildcardTokenCount; i++)
   109       matchStart = nonWildcardTokenPositions[i] + nonWildcardTokens[i].size ();
   110       if (i != nonWildcardTokenCount - 1)
   112           matchEnd   = nonWildcardTokenPositions[i + 1] - 1;
   116           matchEnd   = matchedPath.length () - 1;
   122       if (matchStart <= matchEnd)
   125           wildcardMatches += matchedPath.substr (matchStart,
   126                                                  matchEnd - matchStart + 1);
   129           wildcardMatchesSet++;
   130           if (wildcardMatchesSet == wildcardCount)
   138               wildcardMatches += wildcardSeparator;
   144   return wildcardMatches;
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
std::string GetWildcardMatches(const std::string &configPath, const std::string &matchedPath, const std::string &wildcardSeparator)
Returns the text matches from the matched path for each of the wildcards in the Config path...