| 29 | } |
| 30 | |
| 31 | int State::mergeWidgetAndStoreMergedOnes(WidgetPtrSet &mergeWidgets) { |
| 32 | int mergedWidgetCount = 0; |
| 33 | if (STATE_MERGE_DETAIL_TEXT && !this->_widgets.empty()) { |
| 34 | for (const auto &widgetPtr: this->_widgets) { |
| 35 | auto noMerged = mergeWidgets.emplace(widgetPtr).second; |
| 36 | if (!noMerged) { |
| 37 | uintptr_t h = widgetPtr->hash(); |
| 38 | mergedWidgetCount++; |
| 39 | if (this->_mergedWidgets.find(h) == this->_mergedWidgets.end()) { |
| 40 | WidgetPtrVec tempWidgetVector; |
| 41 | tempWidgetVector.emplace_back(widgetPtr); |
| 42 | this->_mergedWidgets.emplace(h, tempWidgetVector); |
| 43 | } else { |
| 44 | this->_mergedWidgets.at(h).emplace_back(widgetPtr); |
| 45 | } |
| 46 | } |
| 47 | } |
| 48 | } |
| 49 | return mergedWidgetCount; |
| 50 | } |
| 51 | |
| 52 | StatePtr State::create(ElementPtr elem, stringPtr activityName) { |
| 53 | StatePtr sharedPtr = std::shared_ptr<State>(new State(std::move(activityName))); |