-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathtaichi.py
More file actions
38 lines (31 loc) · 1.37 KB
/
Copy pathtaichi.py
File metadata and controls
38 lines (31 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""Taichi FFI convention"""
import os
from .. import pattern
from .base_provider import BaseProvider
class TaichiProvider(BaseProvider):
"""Provider for Taichi FFI.
Parameters
----------
resolver : PyImportResolver
Resolver for orginial definition.
logger : Logger object
"""
def __init__(self, resolver, logger):
super().__init__(resolver, logger, "taichi")
self.cpp_pybind_func = pattern.re_match_pybind_method()
self.cpp_pybind_class = pattern.re_match_pybind_class()
# ti.core.global_var_expr_from_snode
# taichi_lang_core.expr_add, taichi_lang_core.create_kernel
# tc_core.Array2DVector4
self.py_ti_core = pattern.re_matcher(r"[\.|_]?core\.(?P<key>[A-Za-z0-9_]+)",
lambda match, path, rg:
pattern.Ref(key=match.group("key"), path=path, range=rg),
use_search=True)
def get_additional_scan_dirs(self, root_path):
return [os.path.join(root_path, "taichi")]
def _cc_extract(self, path, source, begin, end):
results = self.cpp_pybind_func(path, source)
results += self.cpp_pybind_class(path, source)
return results
def _py_extract(self, path, source, begin, end):
return self.py_ti_core(path, source, begin, end)