补充
This commit is contained in:
133
Test/test.py
Normal file
133
Test/test.py
Normal file
@@ -0,0 +1,133 @@
|
||||
import t, c
|
||||
# import stdint
|
||||
|
||||
|
||||
MAX_ORDER = 123
|
||||
|
||||
print
|
||||
|
||||
@t.Object
|
||||
class ClassObject:
|
||||
k: t.CInt
|
||||
def __init__(self, k: t.CInt):
|
||||
self.k = k
|
||||
def __enter__(self) -> 'ClassObject':
|
||||
return c.Deref(self)
|
||||
def __exit__(self):
|
||||
self.work()
|
||||
def work(self):
|
||||
print(1)
|
||||
|
||||
@t.Object
|
||||
class ClassObject1(ClassObject):
|
||||
def __init__(self):
|
||||
super().__init__(123)
|
||||
ClassObject.__init__(self, 123)
|
||||
|
||||
class ClassObject2:
|
||||
a: t.CInt
|
||||
b: t.CInt
|
||||
c: t.CInt
|
||||
|
||||
LONGLONG1: t.CTypedef = t.CLong
|
||||
LONGLONG2: t.CTypedef | t.CLong | t.CLong
|
||||
LONGLONG3: t.CTypedef = t.CLong | t.CLong
|
||||
ULONGLONG: t.CTypedef = t.CUnsignedLong | t.CLong
|
||||
|
||||
class A:
|
||||
a: int
|
||||
class B:
|
||||
b: int
|
||||
ccc: list[B, 1212] | t.CPtr = []
|
||||
ccc[0].b
|
||||
|
||||
class memory_block:
|
||||
f: t.CInt
|
||||
|
||||
class __buddy_system(t.CStruct):
|
||||
free_lists1: list[memory_block, 1] | t.CPtr # 空闲块链表
|
||||
free_lists1: list[memory_block, 1] | t.CPtr # 空闲块链表
|
||||
free_lists2: list[memory_block, MAX_ORDER] | t.CPtr # 空闲块链表
|
||||
free_lists3: list[memory_block, 1 + 1] | t.CPtr # 空闲块链表
|
||||
free_lists4: list[memory_block, MAX_ORDER + 1] | t.CPtr[t.CArrayPtr[t.CArrayPtr]] # 空闲块链表
|
||||
total_memory: t.CUInt64T # 总内存大小
|
||||
used_memory: t.CUInt64T # 已使用内存大小
|
||||
free_memory: t.CUInt64T # 空闲内存大小
|
||||
start_addr: t.CVoid | t.CPtr # 内存起始地址
|
||||
end_addr: t.CVoid | t.CPtr # 内存结束地址
|
||||
|
||||
UINT1: t.CTypedef = t.CUnsignedInt
|
||||
UINT: t.CTypedef | t.CUnsignedInt # int must be 16-bit or 32-bit
|
||||
BYTE: t.CTypedef | t.CUnsignedChar # char must be 8-bit
|
||||
WORD: t.CTypedef | t.CUInt16T # 16-bit unsigned
|
||||
DWORD: t.CTypedef | t.CUInt32T # 32-bit unsigned
|
||||
QWORD: t.CTypedef | t.CUInt64T # 64-bit unsigned
|
||||
TCHAR: t.CTypedef | t.CChar
|
||||
WCHAR: t.CTypedef | WORD # UTF-16 code unit
|
||||
FSIZE_t: t.CTypedef | DWORD
|
||||
LBA_t: t.CTypedef | DWORD
|
||||
|
||||
def DEF_NAMEBUFF() -> t.CDefine:
|
||||
lfn: WCHAR | t.CPtr # Pointer to LFN working buffer and directory entry block scratchpad buffer
|
||||
|
||||
def add(a: t.CInt, b: t.CInt) -> t.CConst | t.CInt | t.CPtr[t.CPtr]:
|
||||
return c.Deref(c.Deref((a + b)))
|
||||
|
||||
def main(l: t.CInt = 1):
|
||||
kkkkkkkkkkkk1: UINT1
|
||||
kkkkkkkkkkkk2: UINT
|
||||
print(kkkkkkkkkkkk1 + kkkkkkkkkkkkk2)
|
||||
ssr: ClassObject | t.CPtr = ClassObject(6)
|
||||
with ClassObject(1) as a:
|
||||
a.work()
|
||||
aaa: t.CInt | t.CPtr[t.CPtr]
|
||||
cursor: t.CConst | t.CChar[112] | t.CArrayPtr[t.CArrayPtr]
|
||||
k = add(1, 2)
|
||||
|
||||
co2: ClassObject2
|
||||
co22: ClassObject2 = ClassObject2()
|
||||
co23 = ClassObject2(a=1, b=1)
|
||||
|
||||
b: ClassObject | t.CPtr = malloc(ClassObject.__sizeof__())
|
||||
b = ClassObject(1)
|
||||
with b as llll:
|
||||
llll.work()
|
||||
|
||||
match (l):
|
||||
case 1:
|
||||
print(1)
|
||||
case 2:
|
||||
print(2)
|
||||
case _:
|
||||
print(3)
|
||||
if l == 3 and k == 1:
|
||||
c.Break()
|
||||
print(4)
|
||||
c.NoBreak()
|
||||
match 3:
|
||||
case 1:
|
||||
print(1)
|
||||
case 2:
|
||||
print(2)
|
||||
case _:
|
||||
print(3)
|
||||
if l == 3 and k == 1:
|
||||
c.Break()
|
||||
print(4)
|
||||
c.NoBreak()
|
||||
# a := b 格式
|
||||
|
||||
UINT(123, t.CPtr).__sizeof__() # enum,union的实例化也和typedef一样
|
||||
x: t.CInt
|
||||
if (x := k) and 666:
|
||||
print(x)
|
||||
|
||||
t.CType(123, UINT).__sizeof__()
|
||||
|
||||
DEF_NAMEBUFF
|
||||
|
||||
len(x)
|
||||
|
||||
math_test: t.CInt = 1+1-2+(3*4/2+1-6)/12+9*9
|
||||
|
||||
import base64
|
||||
Reference in New Issue
Block a user