@@ -2245,6 +2245,8 @@ class ClassInfo {
2245
2245
public $ funcInfos ;
2246
2246
/** @var EnumCaseInfo[] */
2247
2247
public $ enumCaseInfos ;
2248
+ /** @var string|null */
2249
+ public $ cond ;
2248
2250
2249
2251
/**
2250
2252
* @param Name[] $extends
@@ -2268,7 +2270,8 @@ public function __construct(
2268
2270
array $ constInfos ,
2269
2271
array $ propertyInfos ,
2270
2272
array $ funcInfos ,
2271
- array $ enumCaseInfos
2273
+ array $ enumCaseInfos ,
2274
+ ?string $ cond
2272
2275
) {
2273
2276
$ this ->name = $ name ;
2274
2277
$ this ->flags = $ flags ;
@@ -2284,6 +2287,7 @@ public function __construct(
2284
2287
$ this ->propertyInfos = $ propertyInfos ;
2285
2288
$ this ->funcInfos = $ funcInfos ;
2286
2289
$ this ->enumCaseInfos = $ enumCaseInfos ;
2290
+ $ this ->cond = $ cond ;
2287
2291
}
2288
2292
2289
2293
/**
@@ -2301,7 +2305,13 @@ public function getRegistration(iterable $allConstInfos): string
2301
2305
2302
2306
$ escapedName = implode ("_ " , $ this ->name ->parts );
2303
2307
2304
- $ code = "static zend_class_entry *register_class_ $ escapedName( " . (empty ($ params ) ? "void " : implode (", " , $ params )) . ") \n" ;
2308
+ $ code = '' ;
2309
+
2310
+ if ($ this ->cond ) {
2311
+ $ code .= "#if {$ this ->cond }\n" ;
2312
+ }
2313
+
2314
+ $ code .= "static zend_class_entry *register_class_ $ escapedName( " . (empty ($ params ) ? "void " : implode (", " , $ params )) . ") \n" ;
2305
2315
2306
2316
$ code .= "{ \n" ;
2307
2317
if ($ this ->type == "enum " ) {
@@ -2362,6 +2372,10 @@ function (Name $item) {
2362
2372
2363
2373
$ code .= "} \n" ;
2364
2374
2375
+ if ($ this ->cond ) {
2376
+ $ code .= "#endif \n" ;
2377
+ }
2378
+
2365
2379
return $ code ;
2366
2380
}
2367
2381
@@ -3183,7 +3197,8 @@ function parseClass(
3183
3197
array $ consts ,
3184
3198
array $ properties ,
3185
3199
array $ methods ,
3186
- array $ enumCases
3200
+ array $ enumCases ,
3201
+ ?string $ cond
3187
3202
): ClassInfo {
3188
3203
$ flags = $ class instanceof Class_ ? $ class ->flags : 0 ;
3189
3204
$ comment = $ class ->getDocComment ();
@@ -3243,7 +3258,8 @@ function parseClass(
3243
3258
$ consts ,
3244
3259
$ properties ,
3245
3260
$ methods ,
3246
- $ enumCases
3261
+ $ enumCases ,
3262
+ $ cond
3247
3263
);
3248
3264
}
3249
3265
@@ -3393,7 +3409,7 @@ function handleStatements(FileInfo $fileInfo, array $stmts, PrettyPrinterAbstrac
3393
3409
}
3394
3410
3395
3411
$ fileInfo ->classInfos [] = parseClass (
3396
- $ className , $ stmt , $ constInfos , $ propertyInfos , $ methodInfos , $ enumCaseInfos
3412
+ $ className , $ stmt , $ constInfos , $ propertyInfos , $ methodInfos , $ enumCaseInfos, $ cond
3397
3413
);
3398
3414
continue ;
3399
3415
}
@@ -3631,7 +3647,7 @@ function (FuncInfo $funcInfo) use($fileInfo, &$generatedFunctionDeclarations) {
3631
3647
}
3632
3648
3633
3649
foreach ($ fileInfo ->classInfos as $ classInfo ) {
3634
- $ code .= generateFunctionEntries ($ classInfo ->name , $ classInfo ->funcInfos );
3650
+ $ code .= generateFunctionEntries ($ classInfo ->name , $ classInfo ->funcInfos , $ classInfo -> cond );
3635
3651
}
3636
3652
}
3637
3653
@@ -3667,22 +3683,30 @@ function generateClassEntryCode(FileInfo $fileInfo, iterable $allConstInfos): st
3667
3683
}
3668
3684
3669
3685
/** @param FuncInfo[] $funcInfos */
3670
- function generateFunctionEntries (?Name $ className , array $ funcInfos ): string {
3671
- $ code = "" ;
3686
+ function generateFunctionEntries (?Name $ className , array $ funcInfos , ?string $ cond = null ): string {
3687
+ $ code = "\n\n" ;
3688
+
3689
+ if ($ cond ) {
3690
+ $ code .= "#if {$ cond }\n" ;
3691
+ }
3672
3692
3673
3693
$ functionEntryName = "ext_functions " ;
3674
3694
if ($ className ) {
3675
3695
$ underscoreName = implode ("_ " , $ className ->parts );
3676
3696
$ functionEntryName = "class_ {$ underscoreName }_methods " ;
3677
3697
}
3678
3698
3679
- $ code .= "\n\n static const zend_function_entry {$ functionEntryName }[] = { \n" ;
3699
+ $ code .= "static const zend_function_entry {$ functionEntryName }[] = { \n" ;
3680
3700
$ code .= generateCodeWithConditions ($ funcInfos , "" , function (FuncInfo $ funcInfo ) {
3681
3701
return $ funcInfo ->getFunctionEntry ();
3682
3702
});
3683
3703
$ code .= "\tZEND_FE_END \n" ;
3684
3704
$ code .= "}; \n" ;
3685
3705
3706
+ if ($ cond ) {
3707
+ $ code .= "#endif \n" ;
3708
+ }
3709
+
3686
3710
return $ code ;
3687
3711
}
3688
3712
0 commit comments