| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare (strict_types=1); 4 namespace WordPress\AiClient\Messages\Util; 5 6 use WordPress\AiClient\Messages\Enums\ModalityEnum; 7 /** 8 * Utility class for building modality combinations. 9 * 10 * @since 1.4.0 11 */ 12 class ModalityCombinationsUtil 13 { 14 /** 15 * Builds all modality combinations that always include the required modalities 16 * with every possible subset of the optional modalities. 17 * 18 * Uses binary representation to enumerate all 2^n subsets of the optional 19 * modalities. Each subset is merged with the required modalities to form one 20 * complete combination. Modality lists are unordered, so only unique 21 * combinations (not permutations) are produced. 22 * 23 * @since 1.4.0 24 * 25 * @param list<ModalityEnum> $required Required modalities included in every combination. 26 * @param list<ModalityEnum> $optional Optional modalities to generate subsets from. 27 * @return list<list<ModalityEnum>> List of modality combinations, each containing 28 * all required modalities plus a unique subset of 29 * the optional modalities. 30 */ 31 public static function buildCombinations(array $required, array $optional): array 32 { 33 $combinations = []; 34 $count = count($optional); 35 $subsetCount = 1 << $count; 36 // 2^count. 37 for ($i = 0; $i < $subsetCount; $i++) { 38 $combo = $required; 39 for ($j = 0; $j < $count; $j++) { 40 if ($i & 1 << $j) { 41 $combo[] = $optional[$j]; 42 } 43 } 44 $combinations[] = $combo; 45 } 46 return $combinations; 47 } 48 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Mon Oct 19 08:20:34 2026 | Cross-referenced by PHPXref |