#define FASTER_ARRAY_COMPREHENSIONS typedef enum { kGeneratorList,kGeneratorFrom,kGeneratorFromTo,kGeneratorFromThen,kGeneratorFromThenTo,kGeneratorArrayOnly } GeneratorKind; extern int gGeneratorNumber; extern int gListFunctionNumber; STRUCT (generator, Generator) { GeneratorKind gen_kind; Bool gen_arrayCombined; int gen_array_index_n; NodeP gen_array; NodeP *gen_array_size_node_h; NodeP gen_pattern; union { NodeP val_list; struct { ArgP fbt_from; ArgP fbt_by; ArgP fbt_to; } val_fbt; } val; }; # define gen_list val.val_list # define gen_from val.val_fbt.fbt_from # define gen_by val.val_fbt.fbt_by # define gen_to val.val_fbt.fbt_to # define kMaxParallelGenerators 16 extern unsigned ConvertGenerators (unsigned n, GeneratorS generators[],IdentP updatedArrayIdent,NodeP *arrayNodePtr, int *const array_index_generator_n_p,NodeP result_node_p,NodeP guard_p,ScopeP scope); extern void GenerateComprehensionFunction (ImpRules impRule, unsigned n, GeneratorS djennereeturs [], NodeP guard, NodeP result_node_p,int array_index_generator_n, NodeP *begin, NodeP end, NodeP **successP, unsigned line, NodeP *array); extern NodeP ComputeNewArrayLength (unsigned n, GeneratorS generators [], ScopeP scope);