| 13388 | } |
| 13389 | |
| 13390 | std::vector<std::vector<std::string>> vectorize( std::shared_ptr<Node> node ) |
| 13391 | { |
| 13392 | if ( node->type == NodeType::VAR ) |
| 13393 | { |
| 13394 | return { { node->value } }; |
| 13395 | } |
| 13396 | else if ( node->type == NodeType::OR ) |
| 13397 | { |
| 13398 | auto left = vectorize( node->left ); |
| 13399 | auto right = vectorize( node->right ); |
| 13400 | left.insert( left.end(), right.begin(), right.end() ); |
| 13401 | return left; |
| 13402 | } |
| 13403 | else |
| 13404 | { |
| 13405 | assert( node->type == NodeType::AND ); |
| 13406 | auto left = vectorize( node->left ); |
| 13407 | auto right = vectorize( node->right ); |
| 13408 | std::vector<std::vector<std::string>> result; |
| 13409 | for ( auto const & l : left ) |
| 13410 | { |
| 13411 | for ( auto const & r : right ) |
| 13412 | { |
| 13413 | result.push_back( l ); |
| 13414 | result.back().insert( result.back().end(), r.begin(), r.end() ); |
| 13415 | } |
| 13416 | } |
| 13417 | return result; |
| 13418 | } |
| 13419 | } |
| 13420 | |
| 13421 | void VulkanHppGenerator::readExtension( tinyxml2::XMLElement const * element ) |
| 13422 | { |