| 106 | } |
| 107 | |
| 108 | MetadataNode* MetadataNode::GetOrCreateInternal(MetadataTreeNode* treeNode) { |
| 109 | MetadataNode* result = nullptr; |
| 110 | |
| 111 | auto it = s_treeNode2NodeCache.find(treeNode); |
| 112 | |
| 113 | if (it != s_treeNode2NodeCache.end()) { |
| 114 | result = it->second; |
| 115 | } else { |
| 116 | result = new MetadataNode(treeNode); |
| 117 | |
| 118 | s_treeNode2NodeCache.emplace(treeNode, result); |
| 119 | } |
| 120 | |
| 121 | return result; |
| 122 | } |
| 123 | |
| 124 | MetadataTreeNode* MetadataNode::GetOrCreateTreeNodeByName(const string& className) { |
| 125 | MetadataTreeNode* result = nullptr; |