bool ClParserParser:: readIdentifier(ClParserIdentifierPtr &identifier) { StringVectorT scopes; std::string idstr, str; if (! parse_.readIdentifier(idstr)) return false; while (parse_.isString("::")) { parse_.skipChars(2); if (! parse_.readIdentifier(str)) break; scopes.push_back(idstr); idstr = str; } identifier = ClParserIdentifierMgrInst->createIdentifier(idstr); StringVectorT::const_iterator p1 = scopes.begin(); StringVectorT::const_iterator p2 = scopes.end (); for ( ; p1 != p2; ++p1) identifier->addScope(*p1); return true; }