l0n0lc 0.9.7__py3-none-any.whl → 0.10.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- l0n0lc/c/345/237/272/347/241/200/345/244/204/347/220/206.py +12 -7
- l0n0lc/jit.py +38 -15
- l0n0lc//351/200/232/347/224/250.py +6 -3
- {l0n0lc-0.9.7.dist-info → l0n0lc-0.10.1.dist-info}/METADATA +102 -28
- l0n0lc-0.10.1.dist-info/RECORD +12 -0
- l0n0lc-0.9.7.dist-info/RECORD +0 -12
- {l0n0lc-0.9.7.dist-info → l0n0lc-0.10.1.dist-info}/WHEEL +0 -0
- {l0n0lc-0.9.7.dist-info → l0n0lc-0.10.1.dist-info}/licenses/LICENSE +0 -0
- {l0n0lc-0.9.7.dist-info → l0n0lc-0.10.1.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,8 @@
|
|
1
1
|
from typing import Union, List, get_origin, get_args
|
2
|
-
from .通用 import 生成变量Id, toCString
|
2
|
+
from .通用 import 生成变量Id, toCString, 通用信息
|
3
3
|
import ctypes
|
4
4
|
|
5
5
|
|
6
|
-
def cpp获取变量类型(v):
|
7
|
-
return f'decltype({v})'
|
8
|
-
|
9
|
-
|
10
6
|
class cpp类型:
|
11
7
|
INT8_T = 'int8_t'
|
12
8
|
INT16_T = 'int16_t'
|
@@ -54,6 +50,11 @@ def py类型转ctypes类型(类型):
|
|
54
50
|
ret = 执行额外函数(额外py转ctypes函数, 类型)
|
55
51
|
if ret is not None:
|
56
52
|
return ret
|
53
|
+
|
54
|
+
ret = 通用信息.类型映射表.get(类型)
|
55
|
+
if ret is not None:
|
56
|
+
return ret.对应的ctypes类型
|
57
|
+
|
57
58
|
return py2ctypes映射表.get(类型)
|
58
59
|
|
59
60
|
|
@@ -72,6 +73,10 @@ def py类型转c类型(类型):
|
|
72
73
|
if ret is not None:
|
73
74
|
return ret
|
74
75
|
|
76
|
+
ret = 通用信息.类型映射表.get(类型)
|
77
|
+
if ret is not None:
|
78
|
+
return ret.目标类型
|
79
|
+
|
75
80
|
# 基础类型
|
76
81
|
ret = py2c类型映射表.get(类型)
|
77
82
|
if ret is not None:
|
@@ -198,8 +203,8 @@ class c变量:
|
|
198
203
|
return self.c名字
|
199
204
|
|
200
205
|
@property
|
201
|
-
def
|
202
|
-
return
|
206
|
+
def decltype(self):
|
207
|
+
return f'decltype({self})'
|
203
208
|
|
204
209
|
def 初始化(self, 初始值, 强转类型: str | None = None):
|
205
210
|
if 强转类型:
|
l0n0lc/jit.py
CHANGED
@@ -82,9 +82,10 @@ class c布尔:
|
|
82
82
|
|
83
83
|
|
84
84
|
class py2cpp编译器(ast.NodeVisitor):
|
85
|
-
def __init__(self, 被编译的函数: Callable, c
|
85
|
+
def __init__(self, 被编译的函数: Callable, c编译器, 编译为可执行文件文件名: str | None = None) -> None:
|
86
86
|
self.被编译的函数 = 被编译的函数
|
87
87
|
self.c编译器: cpp编译器 = c编译器
|
88
|
+
self.编译为可执行文件文件名 = 编译为可执行文件文件名
|
88
89
|
self.源代码 = inspect.getsource(被编译的函数)
|
89
90
|
self.代码哈希值 = hashlib.blake2s(
|
90
91
|
self.源代码.encode(), digest_size=8).hexdigest()
|
@@ -109,10 +110,13 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
109
110
|
|
110
111
|
# 保存函数名
|
111
112
|
self.函数名 = 被编译的函数.__name__
|
112
|
-
if
|
113
|
-
self.c函数名 =
|
113
|
+
if 编译为可执行文件文件名:
|
114
|
+
self.c函数名 = 'main'
|
114
115
|
else:
|
115
|
-
|
116
|
+
if 有非英文变量字符(self.函数名):
|
117
|
+
self.c函数名 = f'function_{self.函数名.encode().hex()}'
|
118
|
+
else:
|
119
|
+
self.c函数名 = self.函数名
|
116
120
|
代码文件地址 = inspect.getfile(被编译的函数)
|
117
121
|
文件名 = os.path.split(代码文件地址)[1]
|
118
122
|
文件名hash = hashlib.blake2s(代码文件地址.encode(), digest_size=8).hexdigest()
|
@@ -131,7 +135,11 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
131
135
|
self.c编译器.库目录列表 = list(self.库目录)
|
132
136
|
self.c编译器.链接库 = list(self.链接库列表)
|
133
137
|
输出路径 = f'{通用信息.工作文件夹地址}/{self.获取库文件名()}'
|
134
|
-
self
|
138
|
+
if self.编译为可执行文件文件名:
|
139
|
+
self.c编译器.添加编译选项("-O2")
|
140
|
+
self.c编译器.编译文件(list(cpps), 输出路径=输出路径)
|
141
|
+
else:
|
142
|
+
self.c编译器.编译为动态库(list(cpps), 输出路径=输出路径)
|
135
143
|
|
136
144
|
def 添加c代码(self, 代码: str):
|
137
145
|
self.代码序列.append(c代码(代码, self.当前上下文层级))
|
@@ -385,9 +393,10 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
385
393
|
if isinstance(node.returns, ast.Name):
|
386
394
|
返回py类型 = self.获取值(node.returns)
|
387
395
|
self.返回类型 = py类型转c类型(返回py类型)
|
388
|
-
|
389
|
-
|
390
|
-
self
|
396
|
+
if not self.编译为可执行文件文件名:
|
397
|
+
self.ctypes返回类型 = py类型转ctypes类型(返回py类型)
|
398
|
+
if self.ctypes返回类型 is None:
|
399
|
+
self.抛出代码异常(f'不支持的返回值类型{返回py类型}', node)
|
391
400
|
elif isinstance(node.returns, (tuple)):
|
392
401
|
self.抛出代码异常('函数只能有一个返回值', node)
|
393
402
|
else:
|
@@ -418,10 +427,11 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
418
427
|
self.抛出代码异常(f'不支持的类型{类型}', node)
|
419
428
|
参数变量 = c变量(str(c类型), 参数名, True, 参数值)
|
420
429
|
self.参数变量[参数名] = 参数变量
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
430
|
+
if not self.编译为可执行文件文件名:
|
431
|
+
ctypes类型 = py类型转ctypes类型(类型)
|
432
|
+
if ctypes类型 is None:
|
433
|
+
self.抛出代码异常(f'不支持的参数类型{类型}', node)
|
434
|
+
self.ctypes类型.append(ctypes类型)
|
425
435
|
前置处理函数 = self.参数不同c类型前置处理函数.get(类型)
|
426
436
|
if 前置处理函数 is not None:
|
427
437
|
前置处理函数(self, 参数变量, node)
|
@@ -593,6 +603,8 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
593
603
|
return f'{self.获取无后缀文件名()}.cpp'
|
594
604
|
|
595
605
|
def 获取库文件名(self):
|
606
|
+
if self.编译为可执行文件文件名:
|
607
|
+
return self.编译为可执行文件文件名
|
596
608
|
return f'{self.获取无后缀文件名()}.so'
|
597
609
|
|
598
610
|
def 获取cpp代码(self):
|
@@ -607,6 +619,10 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
607
619
|
if 文件名.startswith(self.文件前缀):
|
608
620
|
文件路径 = os.path.join(通用信息.工作文件夹地址, 文件名)
|
609
621
|
os.remove(文件路径)
|
622
|
+
if self.编译为可执行文件文件名:
|
623
|
+
文件路径 = os.path.join(通用信息.工作文件夹地址, self.编译为可执行文件文件名)
|
624
|
+
if os.path.exists(文件路径):
|
625
|
+
os.remove(文件路径)
|
610
626
|
|
611
627
|
def 将代码保存到文件(self):
|
612
628
|
self.根据缀删除文件()
|
@@ -618,6 +634,8 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
618
634
|
fp.write(cpp代码)
|
619
635
|
|
620
636
|
def 加载库(self):
|
637
|
+
if self.编译为可执行文件文件名:
|
638
|
+
return
|
621
639
|
库地址 = f'{通用信息.工作文件夹地址}/{self.获取库文件名()}'
|
622
640
|
self.目标库 = ctypes.CDLL(库地址)
|
623
641
|
self.cpp函数 = self.目标库[self.c函数名]
|
@@ -625,14 +643,19 @@ class py2cpp编译器(ast.NodeVisitor):
|
|
625
643
|
self.cpp函数.restype = self.ctypes返回类型
|
626
644
|
|
627
645
|
def __call__(self, *args: Any, **kwds: Any) -> Any:
|
628
|
-
|
646
|
+
if self.编译为可执行文件文件名:
|
647
|
+
库文件名 = self.获取库文件名()
|
648
|
+
可执行文件地址 = f'{通用信息.工作文件夹地址}/{库文件名}'
|
649
|
+
raise Exception(f"请直接在命令行执行[{可执行文件地址}]")
|
650
|
+
else:
|
651
|
+
return self.cpp函数(*args)
|
629
652
|
|
630
653
|
|
631
|
-
def jit(jit编译器类=None, cpp编译器类=None, 每次运行都重新编译: bool = False):
|
654
|
+
def jit(jit编译器类=None, cpp编译器类=None, 每次运行都重新编译: bool = False, 编译为可执行文件文件名: str | None = None):
|
632
655
|
def 编译函数(fn: Callable):
|
633
656
|
_c编译器类 = cpp编译器类 or cpp编译器
|
634
657
|
_jit编译器类 = jit编译器类 or py2cpp编译器
|
635
|
-
c语言函数编译器 = _jit编译器类(fn, _c编译器类())
|
658
|
+
c语言函数编译器 = _jit编译器类(fn, _c编译器类(), 编译为可执行文件文件名)
|
636
659
|
库文件名 = c语言函数编译器.获取库文件名()
|
637
660
|
if 每次运行都重新编译 or not os.path.exists(f'{通用信息.工作文件夹地址}/{库文件名}'):
|
638
661
|
c语言函数编译器.编译()
|
@@ -73,11 +73,13 @@ class c类型映射:
|
|
73
73
|
self, 目标类型,
|
74
74
|
include目录: Optional[List[str]],
|
75
75
|
库列表: Optional[List[str]],
|
76
|
-
库目录: Optional[List[str]]
|
76
|
+
库目录: Optional[List[str]],
|
77
|
+
对应的ctypes类型=None) -> None:
|
77
78
|
self.目标类型 = 目标类型
|
78
79
|
self.include目录 = include目录 or []
|
79
80
|
self.库列表 = 库列表 or []
|
80
81
|
self.库目录 = 库目录 or []
|
82
|
+
self.对应的ctypes类型 = 对应的ctypes类型
|
81
83
|
|
82
84
|
def __str__(self) -> str:
|
83
85
|
return self.目标类型
|
@@ -132,9 +134,10 @@ def 映射函数(
|
|
132
134
|
def 映射类型(被映射类型,
|
133
135
|
include目录: Optional[List[str]] = None,
|
134
136
|
链接库列表: Optional[List[str]] = None,
|
135
|
-
库目录列表: Optional[List[str]] = None
|
137
|
+
库目录列表: Optional[List[str]] = None,
|
138
|
+
对应的ctypes类型=None):
|
136
139
|
def 装饰器(映射目标):
|
137
|
-
通用信息.类型映射表[映射目标] = c类型映射(被映射类型, include目录, 链接库列表,
|
140
|
+
通用信息.类型映射表[映射目标] = c类型映射(被映射类型, include目录, 链接库列表, 库目录列表, 对应的ctypes类型)
|
138
141
|
return 映射目标
|
139
142
|
return 装饰器
|
140
143
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: l0n0lc
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.10.1
|
4
4
|
Summary: 一个将python函数翻译为c++函数并运行的jit编译器
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
6
6
|
Requires-Python: >=3.10
|
@@ -14,12 +14,55 @@ Dynamic: license-file
|
|
14
14
|
```
|
15
15
|
pip install l0n0lc
|
16
16
|
```
|
17
|
-
|
17
|
+
|
18
|
+
## 2. 测试可执行.py
|
18
19
|
```python
|
19
20
|
import l0n0lc as lc
|
20
|
-
import
|
21
|
+
import subprocess
|
22
|
+
|
23
|
+
|
24
|
+
@lc.映射函数(print, ['<iostream>'])
|
25
|
+
def cpp_cout(*args):
|
26
|
+
code = f'std::cout'
|
27
|
+
for arg in args:
|
28
|
+
code += f'<< {lc.toCString(arg)} << " "'
|
29
|
+
code += '<< std::endl;'
|
30
|
+
return code
|
31
|
+
|
32
|
+
|
33
|
+
@lc.映射类型('int')
|
34
|
+
class int32_t:
|
35
|
+
def __init__(self, v) -> None:
|
36
|
+
pass
|
37
|
+
|
38
|
+
|
39
|
+
@lc.映射类型('char**')
|
40
|
+
class charpp:
|
41
|
+
def __getitem__(self, key):
|
42
|
+
pass
|
43
|
+
|
44
|
+
|
45
|
+
编译为可执行文件文件名 = '测试可执行文件'
|
46
|
+
|
47
|
+
|
48
|
+
@lc.jit(每次运行都重新编译=True, 编译为可执行文件文件名=编译为可执行文件文件名)
|
49
|
+
def 可执行(argc: int32_t, argv: charpp) -> int32_t:
|
50
|
+
for i in range(argc): # type: ignore
|
51
|
+
print(argv[i])
|
52
|
+
print('Hello World')
|
53
|
+
return int32_t(0)
|
21
54
|
|
22
55
|
|
56
|
+
subprocess.run([f'l0n0lcoutput/{编译为可执行文件文件名}', '参数1', '参数2'])
|
57
|
+
|
58
|
+
```
|
59
|
+
|
60
|
+
## 3. hello_world.py
|
61
|
+
```python
|
62
|
+
import l0n0lc as lc
|
63
|
+
import math
|
64
|
+
import 测试可执行
|
65
|
+
|
23
66
|
@lc.映射函数(math.ceil, ['<cmath>'])
|
24
67
|
def cpp_ceil(v):
|
25
68
|
return f'std::ceil({lc.toCString(v)});'
|
@@ -200,14 +243,19 @@ def test_add(a: int, b: int) -> int:
|
|
200
243
|
|
201
244
|
print('结果:', test_add(1, 3))
|
202
245
|
|
246
|
+
|
203
247
|
```
|
204
248
|
|
205
|
-
##
|
249
|
+
## 4. 运行hello_world.py
|
206
250
|
```
|
207
251
|
uv run tests/hello_world.py
|
208
252
|
# 输入: b'1\n2\n100\n101\n'
|
209
253
|
```
|
210
254
|
```bash
|
255
|
+
l0n0lcoutput/测试可执行文件
|
256
|
+
参数1
|
257
|
+
参数2
|
258
|
+
Hello World
|
211
259
|
输出map:
|
212
260
|
c 3
|
213
261
|
a 1
|
@@ -231,27 +279,53 @@ vv: 1
|
|
231
279
|
|
232
280
|
```
|
233
281
|
|
234
|
-
##
|
282
|
+
## 5. 查看输出文件
|
235
283
|
```bash
|
236
284
|
ls -al ./l0n0lcoutput
|
237
|
-
total
|
238
|
-
drwxr-xr-x 2 root root 4096
|
239
|
-
drwxrwxrwx 11 1000 1000 4096
|
240
|
-
-rw-r--r-- 1 root root
|
241
|
-
-rw-r--r-- 1 root root
|
242
|
-
-
|
243
|
-
-rw-r--r-- 1 root root
|
244
|
-
-
|
245
|
-
-
|
246
|
-
-rw-r--r-- 1 root root
|
247
|
-
-
|
248
|
-
-
|
249
|
-
-rw-r--r-- 1 root root
|
250
|
-
-
|
251
|
-
-
|
285
|
+
total 164
|
286
|
+
drwxr-xr-x 2 root root 4096 Oct 16 01:39 .
|
287
|
+
drwxrwxrwx 11 1000 1000 4096 Oct 16 01:39 ..
|
288
|
+
-rw-r--r-- 1 root root 298 Oct 16 01:39 6cbfb68e317eace4_测试可执行.py_可执行_@d82ed7910ac3268c.cpp
|
289
|
+
-rw-r--r-- 1 root root 128 Oct 16 01:39 6cbfb68e317eace4_测试可执行.py_可执行_@d82ed7910ac3268c.h
|
290
|
+
-rw-r--r-- 1 root root 1811 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.cpp
|
291
|
+
-rw-r--r-- 1 root root 167 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.h
|
292
|
+
-rwxr-xr-x 1 root root 23584 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.so
|
293
|
+
-rw-r--r-- 1 root root 1531 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.cpp
|
294
|
+
-rw-r--r-- 1 root root 398 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.h
|
295
|
+
-rwxr-xr-x 1 root root 40408 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.so
|
296
|
+
-rw-r--r-- 1 root root 155 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.cpp
|
297
|
+
-rw-r--r-- 1 root root 106 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.h
|
298
|
+
-rwxr-xr-x 1 root root 15648 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.so
|
299
|
+
-rw-r--r-- 1 root root 219 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.cpp
|
300
|
+
-rw-r--r-- 1 root root 164 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.h
|
301
|
+
-rwxr-xr-x 1 root root 15688 Oct 16 01:39 c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.so
|
302
|
+
-rwxr-xr-x 1 root root 17248 Oct 16 01:39 测试可执行文件
|
303
|
+
|
304
|
+
```
|
305
|
+
## 6. 6cbfb68e317eace4_测试可执行.py_可执行_@d82ed7910ac3268c.cpp
|
306
|
+
```c++
|
307
|
+
#include "6cbfb68e317eace4_测试可执行.py_可执行_@d82ed7910ac3268c.h"
|
308
|
+
extern "C" int /*可执行*/ main (int argc, char** argv)
|
309
|
+
{
|
310
|
+
for (int64_t i = 0; i < argc; ++i)
|
311
|
+
{
|
312
|
+
std::cout<< argv[i] << " "<< std::endl;;
|
313
|
+
}
|
252
314
|
|
315
|
+
std::cout<< u8"Hello World" << " "<< std::endl;;
|
316
|
+
return int(0);
|
317
|
+
}
|
318
|
+
|
319
|
+
```
|
320
|
+
## 7. 6cbfb68e317eace4_测试可执行.py_可执行_@d82ed7910ac3268c.h
|
321
|
+
```c++
|
322
|
+
#pragma once
|
323
|
+
#include <cstdint>
|
324
|
+
#include <iostream>
|
325
|
+
#include <string>
|
326
|
+
extern "C" int /*可执行*/ main (int argc, char** argv);
|
253
327
|
```
|
254
|
-
##
|
328
|
+
## 8. c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.cpp
|
255
329
|
```c++
|
256
330
|
#include "c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.h"
|
257
331
|
extern "C" int64_t jit_all_ops (int64_t a, int64_t b)
|
@@ -348,7 +422,7 @@ extern "C" int64_t jit_all_ops (int64_t a, int64_t b)
|
|
348
422
|
}
|
349
423
|
|
350
424
|
```
|
351
|
-
##
|
425
|
+
## 9. c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.h
|
352
426
|
```c++
|
353
427
|
#pragma once
|
354
428
|
#include <cstdint>
|
@@ -358,7 +432,7 @@ extern "C" int64_t jit_all_ops (int64_t a, int64_t b)
|
|
358
432
|
#include <vector>
|
359
433
|
extern "C" int64_t jit_all_ops (int64_t a, int64_t b);
|
360
434
|
```
|
361
|
-
##
|
435
|
+
## 10. c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.cpp
|
362
436
|
```c++
|
363
437
|
#include "c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.h"
|
364
438
|
extern "C" int64_t test_add (int64_t a, int64_t b)
|
@@ -423,7 +497,7 @@ extern "C" int64_t test_add (int64_t a, int64_t b)
|
|
423
497
|
}
|
424
498
|
|
425
499
|
```
|
426
|
-
##
|
500
|
+
## 11. c31f68e99ed4ce3c_hello_world.py_test_add_@469de6acaaabc570.h
|
427
501
|
```c++
|
428
502
|
#pragma once
|
429
503
|
#include "c31f68e99ed4ce3c_hello_world.py_jit_all_ops_@7801528c3d61baf7.h"
|
@@ -436,7 +510,7 @@ extern "C" int64_t test_add (int64_t a, int64_t b)
|
|
436
510
|
#include <unordered_map>
|
437
511
|
extern "C" int64_t test_add (int64_t a, int64_t b);
|
438
512
|
```
|
439
|
-
##
|
513
|
+
## 12. c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.cpp
|
440
514
|
```c++
|
441
515
|
#include "c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.h"
|
442
516
|
extern "C" int64_t test_other_fn (int64_t a, int64_t b)
|
@@ -445,14 +519,14 @@ extern "C" int64_t test_other_fn (int64_t a, int64_t b)
|
|
445
519
|
}
|
446
520
|
|
447
521
|
```
|
448
|
-
##
|
522
|
+
## 13. c31f68e99ed4ce3c_hello_world.py_test_other_fn_@75fdd928ab58a8e3.h
|
449
523
|
```c++
|
450
524
|
#pragma once
|
451
525
|
#include <cstdint>
|
452
526
|
#include <string>
|
453
527
|
extern "C" int64_t test_other_fn (int64_t a, int64_t b);
|
454
528
|
```
|
455
|
-
##
|
529
|
+
## 14. c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.cpp
|
456
530
|
```c++
|
457
531
|
#include "c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.h"
|
458
532
|
extern "C" int64_t /*test编译的函数*/ function_74657374e7bc96e8af91e79a84e587bde695b0 (int64_t a, int64_t b)
|
@@ -461,7 +535,7 @@ extern "C" int64_t /*test编译的函数*/ function_74657374e7bc96e8af91e79a84e5
|
|
461
535
|
}
|
462
536
|
|
463
537
|
```
|
464
|
-
##
|
538
|
+
## 15. c31f68e99ed4ce3c_hello_world.py_test编译的函数_@3bf4501e0408a243.h
|
465
539
|
```c++
|
466
540
|
#pragma once
|
467
541
|
#include <cstdint>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
l0n0lc/StdList.py,sha256=0NTIpaRrNHaCiLrRbEVob21pZHa8S8rfaBRALPT-tD0,889
|
2
|
+
l0n0lc/StdMap.py,sha256=997LCvP0ewNciabbmGHVL2eUgMakHBsR3c5HQmOwC_E,666
|
3
|
+
l0n0lc/__init__.py,sha256=fUC6TMeN_fEL7HDazrBEdoWOQkXi5uSGZb7LZj6juog,137
|
4
|
+
l0n0lc/c基础处理.py,sha256=x3ldsG4bQTYfqtrqYgDnn-r936GZCOzB8ZK8e6XseRo,5896
|
5
|
+
l0n0lc/jit.py,sha256=kWg0WNffARhpg-heih4zGsDiFY_mBrSqg4OrZ73zoH0,27362
|
6
|
+
l0n0lc/编译.py,sha256=A9FUV95cVD7Fz7vlKhbqE9CsjpixpdqWQxq1h8e4DBw,2262
|
7
|
+
l0n0lc/通用.py,sha256=ckCW4Sz3IVsIIctoUGA55j_IZrcZQdtH7VXWS3Uh1Dk,4789
|
8
|
+
l0n0lc-0.10.1.dist-info/licenses/LICENSE,sha256=1L-MAjulZ3kpbYwsJtlXpDVITRxykna2Ecg_521YfkA,1093
|
9
|
+
l0n0lc-0.10.1.dist-info/METADATA,sha256=3dvsE0Gse9aSVV5UTn4K4MG2LVqkKgK4MbhPX_Y9WpY,12863
|
10
|
+
l0n0lc-0.10.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
11
|
+
l0n0lc-0.10.1.dist-info/top_level.txt,sha256=Q21D_eEY_-xgRUPwATGp9YDKSBO4w_7MI2MYxQI1aT4,7
|
12
|
+
l0n0lc-0.10.1.dist-info/RECORD,,
|
l0n0lc-0.9.7.dist-info/RECORD
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
l0n0lc/StdList.py,sha256=0NTIpaRrNHaCiLrRbEVob21pZHa8S8rfaBRALPT-tD0,889
|
2
|
-
l0n0lc/StdMap.py,sha256=997LCvP0ewNciabbmGHVL2eUgMakHBsR3c5HQmOwC_E,666
|
3
|
-
l0n0lc/__init__.py,sha256=fUC6TMeN_fEL7HDazrBEdoWOQkXi5uSGZb7LZj6juog,137
|
4
|
-
l0n0lc/c基础处理.py,sha256=GrCPZpLsyfQD8XZQhOCb5y8v9NCZ6bU4C_xfJGx-pvQ,5723
|
5
|
-
l0n0lc/jit.py,sha256=8buPqo2bKCcP9jFKX-mtKhlophPnKzW_U-hiskrcGzk,25949
|
6
|
-
l0n0lc/编译.py,sha256=A9FUV95cVD7Fz7vlKhbqE9CsjpixpdqWQxq1h8e4DBw,2262
|
7
|
-
l0n0lc/通用.py,sha256=RkqP9cMhKhl2h4YxOpAWFFftIPXLZTYMyOOD1PuB59M,4630
|
8
|
-
l0n0lc-0.9.7.dist-info/licenses/LICENSE,sha256=1L-MAjulZ3kpbYwsJtlXpDVITRxykna2Ecg_521YfkA,1093
|
9
|
-
l0n0lc-0.9.7.dist-info/METADATA,sha256=Wg5xIimdAbO32rfSeibpFFecLDPSRUhmux7RCCb_zj0,10994
|
10
|
-
l0n0lc-0.9.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
11
|
-
l0n0lc-0.9.7.dist-info/top_level.txt,sha256=Q21D_eEY_-xgRUPwATGp9YDKSBO4w_7MI2MYxQI1aT4,7
|
12
|
-
l0n0lc-0.9.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|