39 ~EggNameUniquifier() {
    56   string category = get_category(node);
    57   if (egg_cat.is_debug()) {
    59       << 
"Uniquifying " << node->get_name() << 
", category = " << category
    63   if (!category.empty()) {
    67     bool inserted = 
false;
    69       inserted = names.insert(UsedNames::value_type(name, node)).second;
    75       inserted = names.insert(UsedNames::value_type(name, node)).second;
    78     if (egg_cat.is_debug()) {
    80         << 
"Uniquifying " << node->get_name() << 
" to "    87   if (node->
is_of_type(EggGroupNode::get_class_type())) {
    89     DCAST_INTO_V(group, node);
    91     EggGroupNode::iterator ci;
    92     for (ci = group->begin(); ci != group->end(); ++ci) {
    94       nassertv(child != 
nullptr);
   105 get_node(
const string &category, 
const string &name)
 const {
   106   Categories::const_iterator ci;
   107   ci = _categories.find(category);
   108   if (ci == _categories.end()) {
   113   UsedNames::const_iterator ni;
   114   ni = names.find(name);
   115   if (ni == names.end()) {
   127 has_name(
const string &category, 
const string &name)
 const {
   128   Categories::const_iterator ci;
   129   ci = _categories.find(category);
   130   if (ci == _categories.end()) {
   135   UsedNames::const_iterator ni;
   136   ni = names.find(name);
   137   if (ni == names.end()) {
   151   UsedNames &names = _categories[category];
   152   bool inserted = names.insert(UsedNames::value_type(name, node)).second;
   163   return node->get_name();
   178   std::ostringstream str;
   180     str << category << index;
   182     str << name << 
"." << category << index;
 bool add_name(const std::string &category, const std::string &name, EggNode *node=nullptr)
Adds the name to the indicated category.
 
This is our own Panda specialization on the default STL map.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
 
A base class for nodes in the hierarchy that are not leaf nodes.
 
void clear()
Empties the table of used named and prepares the Uniquifier for a new tree.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
 
virtual std::string filter_name(EggNode *node)
Returns the name of the given node, or at least the name it should be.
 
void uniquify(EggNode *node)
Begins the traversal from the indicated node.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
 
virtual std::string generate_name(EggNode *node, const std::string &category, int index)
Generates a new name for the given node when its existing name clashes with some other node.
 
EggNode * get_node(const std::string &category, const std::string &name) const
Returns the node associated with the given category and name, or NULL if the name has not been used.
 
A base class for things that may be directly added into the egg hierarchy.
 
bool is_of_type(TypeHandle handle) const
Returns true if the current object is or derives from the indicated type.
 
TypeHandle is the identifier used to differentiate C++ class types.
 
bool has_name(const std::string &category, const std::string &name) const
Returns true if the name has been used for the indicated category already, false otherwise.
 
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.