@@ -1486,45 +1486,79 @@ def get_loader_epilogue(specs, namespace, tags, obj, meta):
1486
1486
1487
1487
return epilogue
1488
1488
1489
+
1490
+ def get_event_wait_list_functions (specs , namespace , tags ):
1491
+ funcs = []
1492
+ for s in specs :
1493
+ for obj in s ['objects' ]:
1494
+ if re .match (r"function" , obj ['type' ]):
1495
+ if any (x ['name' ] == 'phEventWaitList' for x in obj ['params' ]) and any (
1496
+ x ['name' ] == 'numEventsInWaitList' for x in obj ['params' ]):
1497
+ funcs .append (make_func_name (namespace , tags , obj ))
1498
+ return funcs
1499
+
1500
+
1489
1501
"""
1490
- Public :
1491
- returns a dictionary with lists of create, retain and release functions
1502
+ Private :
1503
+ returns a dictionary with lists of create, get, retain and release functions
1492
1504
"""
1493
- def get_create_retain_release_functions (specs , namespace , tags ):
1505
+ def _get_create_get_retain_release_functions (specs , namespace , tags ):
1494
1506
funcs = []
1495
1507
for s in specs :
1496
1508
for obj in s ['objects' ]:
1497
1509
if re .match (r"function" , obj ['type' ]):
1498
1510
funcs .append (make_func_name (namespace , tags , obj ))
1499
1511
1500
- create_suffixes = r"(Create[A-Za-z]*){1}"
1501
- retain_suffixes = r"(Retain){1}"
1502
- release_suffixes = r"(Release){1}"
1512
+ create_suffixes = r"(Create[A-Za-z]*){1}$"
1513
+ get_suffixes = r"(Get){1}$"
1514
+ retain_suffixes = r"(Retain){1}$"
1515
+ release_suffixes = r"(Release){1}$"
1516
+ common_prefix = r"^" + namespace
1503
1517
1504
- create_exp = namespace + r"([A-Za-z]+)" + create_suffixes
1505
- retain_exp = namespace + r"([A-Za-z]+)" + retain_suffixes
1506
- release_exp = namespace + r"([A-Za-z]+)" + release_suffixes
1518
+ create_exp = common_prefix + r"[A-Za-z]+" + create_suffixes
1519
+ get_exp = common_prefix + r"[A-Za-z]+" + get_suffixes
1520
+ retain_exp = common_prefix + r"[A-Za-z]+" + retain_suffixes
1521
+ release_exp = common_prefix + r"[A-Za-z]+" + release_suffixes
1507
1522
1508
- create_funcs , retain_funcs , release_funcs = (
1523
+ create_funcs , get_funcs , retain_funcs , release_funcs = (
1509
1524
list (filter (lambda f : re .match (create_exp , f ), funcs )),
1525
+ list (filter (lambda f : re .match (get_exp , f ), funcs )),
1510
1526
list (filter (lambda f : re .match (retain_exp , f ), funcs )),
1511
1527
list (filter (lambda f : re .match (release_exp , f ), funcs )),
1512
1528
)
1513
1529
1514
- create_funcs , retain_funcs = (
1515
- list (filter (lambda f : re .sub (create_suffixes , "Release" , f ) in release_funcs , create_funcs )),
1516
- list (filter (lambda f : re .sub (retain_suffixes , "Release" , f ) in release_funcs , retain_funcs )),
1517
- )
1530
+ return {"create" : create_funcs , "get" : get_funcs , "retain" : retain_funcs , "release" : release_funcs }
1518
1531
1519
- return {"create" : create_funcs , "retain" : retain_funcs , "release" : release_funcs }
1520
1532
1533
+ """
1534
+ Public:
1535
+ returns a list of dictionaries containing handle types and the corresponding create, get, retain and release functions
1536
+ """
1537
+ def get_handle_create_get_retain_release_functions (specs , namespace , tags ):
1538
+ # Handles without release function
1539
+ excluded_handles = ["$x_platform_handle_t" , "$x_native_handle_t" ]
1540
+ # Handles from experimental features
1541
+ exp_prefix = "$x_exp"
1542
+
1543
+ funcs = _get_create_get_retain_release_functions (specs , namespace , tags )
1544
+ records = []
1545
+ for h in get_adapter_handles (specs ):
1546
+ if h ['name' ] in excluded_handles or h ['name' ].startswith (exp_prefix ):
1547
+ continue
1521
1548
1522
- def get_event_wait_list_functions (specs , namespace , tags ):
1523
- funcs = []
1524
- for s in specs :
1525
- for obj in s ['objects' ]:
1526
- if re .match (r"function" , obj ['type' ]):
1527
- if any (x ['name' ] == 'phEventWaitList' for x in obj ['params' ]) and any (
1528
- x ['name' ] == 'numEventsInWaitList' for x in obj ['params' ]):
1529
- funcs .append (make_func_name (namespace , tags , obj ))
1530
- return funcs
1549
+ class_type = subt (namespace , tags , h ['class' ])
1550
+ create_funcs = list (filter (lambda f : class_type in f , funcs ['create' ]))
1551
+ get_funcs = list (filter (lambda f : class_type in f , funcs ['get' ]))
1552
+ retain_funcs = list (filter (lambda f : class_type in f , funcs ['retain' ]))
1553
+ release_funcs = list (filter (lambda f : class_type in f , funcs ['release' ]))
1554
+
1555
+ record = {}
1556
+ record ['handle' ] = subt (namespace , tags , h ['name' ])
1557
+ record ['create' ] = create_funcs
1558
+ record ['get' ] = get_funcs
1559
+ record ['retain' ] = retain_funcs
1560
+ record ['release' ] = release_funcs
1561
+
1562
+ records .append (record )
1563
+
1564
+ return records
0 commit comments