| 764 | : column_orders_(column_orders), leaf_count_(0) {} |
| 765 | |
| 766 | void Visit(Node* node) override { |
| 767 | if (node->is_group()) { |
| 768 | GroupNode* group_node = static_cast<GroupNode*>(node); |
| 769 | for (int i = 0; i < group_node->field_count(); ++i) { |
| 770 | group_node->field(i)->Visit(this); |
| 771 | } |
| 772 | } else { // leaf node |
| 773 | PrimitiveNode* leaf_node = static_cast<PrimitiveNode*>(node); |
| 774 | leaf_node->SetColumnOrder(column_orders_[leaf_count_++]); |
| 775 | } |
| 776 | } |
| 777 | |
| 778 | private: |
| 779 | const std::vector<ColumnOrder>& column_orders_; |