snapshot before regression test
This commit is contained in:
509
Test/NoVTableTest/App/main.py
Normal file
509
Test/NoVTableTest/App/main.py
Normal file
@@ -0,0 +1,509 @@
|
||||
import t
|
||||
import stdio
|
||||
import string
|
||||
import testcheck
|
||||
import linkedlist
|
||||
import viperlib
|
||||
import stdlib
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 子类继承 linkedlist.LinkedNode:启用链表/树形能力
|
||||
# 字段展平,无 vtable;OOP 方法通过 _generate_inherited_method_wrappers
|
||||
# 自动生成子类包装(self bitcast 为父类指针后调用父类方法)。
|
||||
# 从 LinkedNode* 取回 Node* 需显式向下转型:(Node | t.CPtr)(ptr)
|
||||
# ============================================================
|
||||
class Node(linkedlist.LinkedNode):
|
||||
value: t.CInt
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 1:append + child_count
|
||||
# ============================================================
|
||||
def test_append():
|
||||
testcheck.section("Test 1: append")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
c: Node = Node()
|
||||
a.value = 10
|
||||
b.value = 20
|
||||
c.value = 30
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
root.append(c)
|
||||
testcheck.check(root.child_count == 3,
|
||||
"append count=3",
|
||||
"append count fail")
|
||||
# 验证顺序(LinkedNode* → Node* 显式向下转型)
|
||||
c1: Node | t.CPtr = (Node | t.CPtr)(root.child)
|
||||
c2: Node | t.CPtr = (Node | t.CPtr)(c1.next)
|
||||
c3: Node | t.CPtr = (Node | t.CPtr)(c2.next)
|
||||
testcheck.check(c1.value == 10 and c2.value == 20 and c3.value == 30,
|
||||
"order 10,20,30",
|
||||
"order fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 2:双向链表 prev 指针
|
||||
# ============================================================
|
||||
def test_prev_link():
|
||||
testcheck.section("Test 2: prev pointer (doubly linked)")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
a.value = 1
|
||||
b.value = 2
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
# b.prev 应指向 a
|
||||
bp: Node | t.CPtr = (Node | t.CPtr)(b.prev)
|
||||
testcheck.check(bp is not None and bp.value == 1,
|
||||
"b.prev.value=1",
|
||||
"prev link fail")
|
||||
# a.prev 应为 None(第一个子节点)
|
||||
testcheck.check(a.prev is None,
|
||||
"a.prev=None",
|
||||
"first prev fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 3:last_child 指针(O(1) 追加验证)
|
||||
# ============================================================
|
||||
def test_last_child():
|
||||
testcheck.section("Test 3: last_child pointer")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
a.value = 100
|
||||
b.value = 200
|
||||
root.append(a)
|
||||
lc: Node | t.CPtr = (Node | t.CPtr)(root.last_child)
|
||||
testcheck.check(lc is not None and lc.value == 100,
|
||||
"last_child=100 after 1 append",
|
||||
"last_child fail 1")
|
||||
root.append(b)
|
||||
lc = (Node | t.CPtr)(root.last_child)
|
||||
testcheck.check(lc is not None and lc.value == 200,
|
||||
"last_child=200 after 2 append",
|
||||
"last_child fail 2")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 4:detach(O(1) 摘除)
|
||||
# ============================================================
|
||||
def test_remove():
|
||||
testcheck.section("Test 4: detach (O(1) unlink)")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
c: Node = Node()
|
||||
a.value = 1
|
||||
b.value = 2
|
||||
c.value = 3
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
root.append(c)
|
||||
# 摘除中间的 b
|
||||
b.detach()
|
||||
testcheck.check(root.child_count == 2,
|
||||
"count=2 after detach",
|
||||
"detach count fail")
|
||||
# a.next 应直接指向 c
|
||||
an: Node | t.CPtr = (Node | t.CPtr)(a.next)
|
||||
testcheck.check(an is not None and an.value == 3,
|
||||
"a.next.value=3",
|
||||
"detach link fail")
|
||||
# c.prev 应指向 a
|
||||
cp: Node | t.CPtr = (Node | t.CPtr)(c.prev)
|
||||
testcheck.check(cp is not None and cp.value == 1,
|
||||
"c.prev.value=1",
|
||||
"detach prev fail")
|
||||
# b 的链接应清空
|
||||
testcheck.check(b.parent is None and b.next is None and b.prev is None,
|
||||
"b cleared",
|
||||
"b not cleared")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 5:remove_child
|
||||
# ============================================================
|
||||
def test_remove_child():
|
||||
testcheck.section("Test 5: remove_child")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
a.value = 10
|
||||
b.value = 20
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
root.remove_child(a)
|
||||
testcheck.check(root.child_count == 1,
|
||||
"count=1 after remove_child",
|
||||
"remove_child count fail")
|
||||
fc: Node | t.CPtr = (Node | t.CPtr)(root.child)
|
||||
testcheck.check(fc is not None and fc.value == 20,
|
||||
"first child=20",
|
||||
"remove_child first fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 6:prepend + insert_before + insert_after
|
||||
# ============================================================
|
||||
def test_insert_ops():
|
||||
testcheck.section("Test 6: prepend/insert_before/insert_after")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
c: Node = Node()
|
||||
d: Node = Node()
|
||||
a.value = 1
|
||||
b.value = 2
|
||||
c.value = 3
|
||||
d.value = 4
|
||||
root.append(a) # [1]
|
||||
root.append(c) # [1, 3]
|
||||
root.insert_before(c, b) # [1, 2, 3] 在 c 前插入 b
|
||||
root.insert_after(a, d) # [1, 4, 2, 3] 在 a 后插入 d
|
||||
# 遍历验证顺序
|
||||
cur: Node | t.CPtr = (Node | t.CPtr)(root.child)
|
||||
v0: t.CInt = cur.value
|
||||
cur = (Node | t.CPtr)(cur.next)
|
||||
v1: t.CInt = cur.value
|
||||
cur = (Node | t.CPtr)(cur.next)
|
||||
v2: t.CInt = cur.value
|
||||
cur = (Node | t.CPtr)(cur.next)
|
||||
v3: t.CInt = cur.value
|
||||
testcheck.check(v0 == 1 and v1 == 4 and v2 == 2 and v3 == 3,
|
||||
"order 1,4,2,3",
|
||||
"insert order fail")
|
||||
testcheck.check(root.child_count == 4,
|
||||
"count=4",
|
||||
"insert count fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 7:child_at + count_children
|
||||
# 注意:Viper 中 Node() 是栈分配,循环内 n 会被复用(同一地址),
|
||||
# 导致所有子节点指向同一内存。必须用独立变量保证各节点地址不同。
|
||||
# ============================================================
|
||||
def test_index_access():
|
||||
testcheck.section("Test 7: child_at + count_children")
|
||||
root: Node = Node()
|
||||
n0: Node = Node()
|
||||
n1: Node = Node()
|
||||
n2: Node = Node()
|
||||
n3: Node = Node()
|
||||
n4: Node = Node()
|
||||
n0.value = 0
|
||||
n1.value = 10
|
||||
n2.value = 20
|
||||
n3.value = 30
|
||||
n4.value = 40
|
||||
root.append(n0)
|
||||
root.append(n1)
|
||||
root.append(n2)
|
||||
root.append(n3)
|
||||
root.append(n4)
|
||||
# child_at
|
||||
r0: Node | t.CPtr = (Node | t.CPtr)(root.child_at(0))
|
||||
r2: Node | t.CPtr = (Node | t.CPtr)(root.child_at(2))
|
||||
r4: Node | t.CPtr = (Node | t.CPtr)(root.child_at(4))
|
||||
r5: Node | t.CPtr = (Node | t.CPtr)(root.child_at(5))
|
||||
testcheck.check(r0 is not None and r0.value == 0,
|
||||
"child_at(0)=0",
|
||||
"child_at 0 fail")
|
||||
testcheck.check(r2 is not None and r2.value == 20,
|
||||
"child_at(2)=20",
|
||||
"child_at 2 fail")
|
||||
testcheck.check(r4 is not None and r4.value == 40,
|
||||
"child_at(4)=40",
|
||||
"child_at 4 fail")
|
||||
testcheck.check(r5 is None,
|
||||
"child_at(5)=None",
|
||||
"child_at 5 fail")
|
||||
# count_children
|
||||
cc: t.CSizeT = root.count_children()
|
||||
testcheck.check(cc == 5,
|
||||
"count_children=5",
|
||||
"count_children fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 8:has_children + first_sibling/last_sibling
|
||||
# ============================================================
|
||||
def test_sibling_traverse():
|
||||
testcheck.section("Test 8: has_children + sibling traverse")
|
||||
root: Node = Node()
|
||||
testcheck.check(root.has_children() == 0,
|
||||
"empty has_children=0",
|
||||
"has_children empty fail")
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
c: Node = Node()
|
||||
a.value = 1
|
||||
b.value = 2
|
||||
c.value = 3
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
root.append(c)
|
||||
testcheck.check(root.has_children() == 1,
|
||||
"has_children=1",
|
||||
"has_children fail")
|
||||
# 从 b 出发找头尾兄弟
|
||||
fs: Node | t.CPtr = (Node | t.CPtr)(b.first_sibling())
|
||||
ls: Node | t.CPtr = (Node | t.CPtr)(b.last_sibling())
|
||||
testcheck.check(fs is not None and fs.value == 1,
|
||||
"first_sibling=1",
|
||||
"first_sibling fail")
|
||||
testcheck.check(ls is not None and ls.value == 3,
|
||||
"last_sibling=3",
|
||||
"last_sibling fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 9:unlink(断开所有连接)
|
||||
# ============================================================
|
||||
def test_unlink():
|
||||
testcheck.section("Test 9: unlink")
|
||||
root: Node = Node()
|
||||
a: Node = Node()
|
||||
b: Node = Node()
|
||||
a.value = 1
|
||||
b.value = 2
|
||||
root.append(a)
|
||||
root.append(b)
|
||||
# unlink a:从兄弟链摘除 + 断开父子链接
|
||||
a.unlink()
|
||||
testcheck.check(a.next is None and a.prev is None and a.parent is None,
|
||||
"a links cleared",
|
||||
"a links not cleared")
|
||||
testcheck.check(a.child is None and a.last_child is None and a.child_count == 0,
|
||||
"a child cleared",
|
||||
"a child not cleared")
|
||||
# root 应只剩 b
|
||||
testcheck.check(root.child_count == 1,
|
||||
"root count=1 after unlink",
|
||||
"root count fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 10:SListNode 单向链表(OOP 方法)
|
||||
# ============================================================
|
||||
class SNode(linkedlist.SListNode):
|
||||
value: t.CInt
|
||||
|
||||
|
||||
def test_slist():
|
||||
testcheck.section("Test 10: SListNode (singly linked, OOP)")
|
||||
n0: SNode = SNode()
|
||||
n1: SNode = SNode()
|
||||
n2: SNode = SNode()
|
||||
n0.value = 100
|
||||
n1.value = 200
|
||||
n2.value = 300
|
||||
# append (O(n)) — 直接用 n0 作为 head
|
||||
head: linkedlist.SListNode | t.CPtr = n0
|
||||
head = head.append(n1)
|
||||
head = head.append(n2)
|
||||
# count
|
||||
testcheck.check(head.count() == 3,
|
||||
"count=3",
|
||||
"count fail")
|
||||
# at
|
||||
a0: SNode | t.CPtr = (SNode | t.CPtr)(head.at(0))
|
||||
a1: SNode | t.CPtr = (SNode | t.CPtr)(head.at(1))
|
||||
a2: SNode | t.CPtr = (SNode | t.CPtr)(head.at(2))
|
||||
a3: SNode | t.CPtr = (SNode | t.CPtr)(head.at(3))
|
||||
testcheck.check(a0 is not None and a0.value == 100,
|
||||
"at(0)=100",
|
||||
"at 0 fail")
|
||||
testcheck.check(a1 is not None and a1.value == 200,
|
||||
"at(1)=200",
|
||||
"at 1 fail")
|
||||
testcheck.check(a2 is not None and a2.value == 300,
|
||||
"at(2)=300",
|
||||
"at 2 fail")
|
||||
testcheck.check(a3 is None,
|
||||
"at(3)=None",
|
||||
"at 3 fail")
|
||||
# remove (移除中间节点 n1)
|
||||
head = head.remove(n1)
|
||||
testcheck.check(head.count() == 2,
|
||||
"after remove count=2",
|
||||
"remove count fail")
|
||||
testcheck.check(n1.Next is None,
|
||||
"n1.Next cleared",
|
||||
"n1.Next not cleared")
|
||||
# 移除后 a0.Next 应指向 n2
|
||||
a0b: SNode | t.CPtr = (SNode | t.CPtr)(a0.Next)
|
||||
testcheck.check(a0b is not None and a0b.value == 300,
|
||||
"after remove a0.Next=300",
|
||||
"a0.Next fail")
|
||||
# append_after (O(1))
|
||||
n3: SNode = SNode()
|
||||
n3.value = 400
|
||||
tail: linkedlist.SListNode | t.CPtr = n2.append_after(n3)
|
||||
testcheck.check(tail is n3,
|
||||
"append_after returns n3",
|
||||
"append_after fail")
|
||||
testcheck.check(head.count() == 3,
|
||||
"after append count=3",
|
||||
"append count fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 11:viperlib.sprintf *args 转发
|
||||
# ============================================================
|
||||
def test_sprintf_vararg():
|
||||
testcheck.section("Test 11: viperlib.sprintf *args forwarding")
|
||||
# 测试 %d 单参数
|
||||
buf: t.CChar | t.CPtr = stdlib.malloc(32)
|
||||
if buf is None: return
|
||||
buf[0] = 0
|
||||
viperlib.sprintf(buf, "key%d", 42)
|
||||
testcheck.check(string.strcmp(buf, "key42") == 0,
|
||||
"sprintf key42",
|
||||
"sprintf key%d fail")
|
||||
# 测试无参数
|
||||
buf2: t.CChar | t.CPtr = stdlib.malloc(32)
|
||||
if buf2 is None: return
|
||||
buf2[0] = 0
|
||||
viperlib.sprintf(buf2, "hello")
|
||||
testcheck.check(string.strcmp(buf2, "hello") == 0,
|
||||
"sprintf hello",
|
||||
"sprintf no-arg fail")
|
||||
# 测试多参数
|
||||
buf3: t.CChar | t.CPtr = stdlib.malloc(32)
|
||||
if buf3 is None: return
|
||||
buf3[0] = 0
|
||||
viperlib.sprintf(buf3, "%d+%d=%d", 1, 2, 3)
|
||||
testcheck.check(string.strcmp(buf3, "1+2=3") == 0,
|
||||
"sprintf 1+2=3",
|
||||
"sprintf multi-arg fail")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 测试 12:泛型 GSListNode[T] + GSList[T]
|
||||
#
|
||||
# 验证 4 个技术点(为 llvmlite 简化铺路):
|
||||
# 1. 递归泛型 class GNode(GSListNode[GNode]):
|
||||
# 2. @t.NoVTable + 泛型组合(GNode 无 vptr,字段展平)
|
||||
# 3. 泛型类作字段类型 lst: GSList[GNode]
|
||||
# 4. 泛型方法继承 lst.append(n) / lst.count() / lst.at(i)
|
||||
# (GSList[T] 的方法在特化 GSList[GNode] 后可用)
|
||||
#
|
||||
# 注:编译器暂不支持 模块.泛型类[T]() 跨模块构造,故本地定义。
|
||||
# ============================================================
|
||||
@t.NoVTable
|
||||
class GSListNode[T]:
|
||||
Next: T | t.CPtr
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class GSList[T]:
|
||||
Head: T | t.CPtr
|
||||
Tail: T | t.CPtr
|
||||
Count: t.CSizeT
|
||||
|
||||
def __init__(self):
|
||||
self.Head = None
|
||||
self.Tail = None
|
||||
self.Count = 0
|
||||
|
||||
def append(self, node: T):
|
||||
if node is None: return
|
||||
node.Next = None
|
||||
if self.Head is None:
|
||||
self.Head = node
|
||||
else:
|
||||
self.Tail.Next = node
|
||||
self.Tail = node
|
||||
self.Count += 1
|
||||
|
||||
def count(self) -> t.CSizeT:
|
||||
return self.Count
|
||||
|
||||
def at(self, index: t.CSizeT) -> T | t.CPtr:
|
||||
if self.Head is None: return None
|
||||
cur: T | t.CPtr = self.Head
|
||||
i: t.CSizeT = 0
|
||||
while cur is not None:
|
||||
if i == index: return cur
|
||||
i += 1
|
||||
cur = cur.Next
|
||||
return None
|
||||
|
||||
|
||||
class GNode(GSListNode[GNode]):
|
||||
Value: t.CInt
|
||||
|
||||
|
||||
def test_generic_slist():
|
||||
testcheck.section("Test 12: Generic GSListNode[T] + GSList[T]")
|
||||
# 技术点 3: 泛型类作字段类型 + 构造
|
||||
lst: GSList[GNode] | t.CPtr = GSList[GNode]()
|
||||
|
||||
# 技术点 1+2: 递归泛型 + NoVTable 组合(GNode 定义在上方)
|
||||
n0: GNode = GNode()
|
||||
n1: GNode = GNode()
|
||||
n2: GNode = GNode()
|
||||
n0.Value = 10
|
||||
n1.Value = 20
|
||||
n2.Value = 30
|
||||
|
||||
# 技术点 4: 泛型方法继承
|
||||
lst.append(n0)
|
||||
lst.append(n1)
|
||||
lst.append(n2)
|
||||
|
||||
# count (O(1))
|
||||
testcheck.check(lst.count() == 3,
|
||||
"GSList.count()=3",
|
||||
"GSList count fail")
|
||||
|
||||
# at (O(n)) — 返回 GNode|CPtr,无需向下转型
|
||||
a0: GNode | t.CPtr = lst.at(0)
|
||||
a1: GNode | t.CPtr = lst.at(1)
|
||||
a2: GNode | t.CPtr = lst.at(2)
|
||||
a3: GNode | t.CPtr = lst.at(3)
|
||||
testcheck.check(a0 is not None and a0.Value == 10,
|
||||
"GSList.at(0)=10",
|
||||
"GSList at 0 fail")
|
||||
testcheck.check(a1 is not None and a1.Value == 20,
|
||||
"GSList.at(1)=20",
|
||||
"GSList at 1 fail")
|
||||
testcheck.check(a2 is not None and a2.Value == 30,
|
||||
"GSList.at(2)=30",
|
||||
"GSList at 2 fail")
|
||||
testcheck.check(a3 is None,
|
||||
"GSList.at(3)=None",
|
||||
"GSList at 3 fail")
|
||||
|
||||
# Next 字段强类型(a0.Next 直接是 GNode|CPtr,无需转型)
|
||||
testcheck.check(a0.Next is a1,
|
||||
"a0.Next is a1 (strong type)",
|
||||
"a0.Next fail")
|
||||
testcheck.check(a1.Next is a2,
|
||||
"a1.Next is a2 (strong type)",
|
||||
"a1.Next fail")
|
||||
testcheck.check(a2.Next is None,
|
||||
"a2.Next is None",
|
||||
"a2.Next fail")
|
||||
|
||||
|
||||
def main() -> t.CInt:
|
||||
testcheck.begin("NoVTableTest: linkedlist 库(@t.NoVTable OOP 方法 + 字段展平继承)")
|
||||
test_append()
|
||||
test_prev_link()
|
||||
test_last_child()
|
||||
test_remove()
|
||||
test_remove_child()
|
||||
test_insert_ops()
|
||||
test_index_access()
|
||||
test_sibling_traverse()
|
||||
test_unlink()
|
||||
test_slist()
|
||||
test_sprintf_vararg()
|
||||
test_generic_slist()
|
||||
return testcheck.end()
|
||||
1
Test/NoVTableTest/output/22650858c377c847.deps.json
Normal file
1
Test/NoVTableTest/output/22650858c377c847.deps.json
Normal file
@@ -0,0 +1 @@
|
||||
{"linkedlist": "2d39c6c7d3557b3e", "stdio": "6f62fe05c5ea1ceb", "stdarg": "71e0a3ffcb3ebfad", "w32.win32base": "7e529fe7a078cfef", "win32base": "7e529fe7a078cfef", "stdlib": "90c53dd6db8d41cf", "string": "ab6e54ba9a669f76", "w32.win32console": "bbdf3bbd4c3bc28c", "win32console": "bbdf3bbd4c3bc28c", "viperlib": "c3b259b4059f8668", "viperio": "c9f4be41ca1cc2b4", "testcheck": "dd3002730623424b", "stdint": "f5522571bcce7bcb"}
|
||||
29
Test/NoVTableTest/project.json
Normal file
29
Test/NoVTableTest/project.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/TermiNexus/TransPyC/main/schemas/project-schema.json",
|
||||
"name": "NoVTableTest",
|
||||
"version": "1.0.0",
|
||||
"source_dir": "./App",
|
||||
"temp_dir": "./temp",
|
||||
"output_dir": "./output",
|
||||
"compiler": {
|
||||
"cmd": "llc",
|
||||
"flags": ["-filetype=obj", "-relocation-model=pic"]
|
||||
},
|
||||
"linker": {
|
||||
"cmd": "clang++",
|
||||
"flags": ["-Wl,--allow-multiple-definition", "-Wl,--unresolved-symbols=ignore-in-object-files", "-lmsvcrt", "-lucrt", "-lpthread", "-lmingwex", "-lkernel32", "-luser32", "-latomic"],
|
||||
"output": "NoVTableTest.exe"
|
||||
},
|
||||
"includes": [
|
||||
"../../includes"
|
||||
],
|
||||
"target": {
|
||||
"triple": "x86_64-pc-windows-gnu",
|
||||
"datalayout": "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
},
|
||||
"options": {
|
||||
"slice_level": 3,
|
||||
"target": "llvm",
|
||||
"strict_mode": true
|
||||
}
|
||||
}
|
||||
1
Test/NoVTableTest/temp/22650858c377c847.doc.json
Normal file
1
Test/NoVTableTest/temp/22650858c377c847.doc.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
64
Test/NoVTableTest/temp/22650858c377c847.pyi
Normal file
64
Test/NoVTableTest/temp/22650858c377c847.pyi
Normal file
@@ -0,0 +1,64 @@
|
||||
"""
|
||||
Auto-generated Python stub file from main.py
|
||||
Module: main
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
import t
|
||||
import stdio
|
||||
import string
|
||||
import testcheck
|
||||
import linkedlist
|
||||
import viperlib
|
||||
import stdlib
|
||||
|
||||
class Node(linkedlist.LinkedNode):
|
||||
value: t.CInt
|
||||
|
||||
def test_append() -> t.CInt: pass
|
||||
|
||||
def test_prev_link() -> t.CInt: pass
|
||||
|
||||
def test_last_child() -> t.CInt: pass
|
||||
|
||||
def test_remove() -> t.CInt: pass
|
||||
|
||||
def test_remove_child() -> t.CInt: pass
|
||||
|
||||
def test_insert_ops() -> t.CInt: pass
|
||||
|
||||
def test_index_access() -> t.CInt: pass
|
||||
|
||||
def test_sibling_traverse() -> t.CInt: pass
|
||||
|
||||
def test_unlink() -> t.CInt: pass
|
||||
|
||||
|
||||
class SNode(linkedlist.SListNode):
|
||||
value: t.CInt
|
||||
|
||||
def test_slist() -> t.CInt: pass
|
||||
|
||||
def test_sprintf_vararg() -> t.CInt: pass
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class GSListNode[T]:
|
||||
Next: T | t.CPtr
|
||||
@t.NoVTable
|
||||
class GSList[T]:
|
||||
Head: T | t.CPtr
|
||||
Tail: T | t.CPtr
|
||||
Count: t.CSizeT
|
||||
def __init__(self: GSList) -> t.CInt: pass
|
||||
def append(self: GSList, node: T) -> t.CInt: pass
|
||||
def count(self: GSList) -> t.CSizeT: pass
|
||||
def at(self: GSList, index: t.CSizeT) -> T | t.CPtr: pass
|
||||
class GNode(GSListNode[GNode]):
|
||||
Value: t.CInt
|
||||
|
||||
def test_generic_slist() -> t.CInt: pass
|
||||
|
||||
def main() -> t.CInt: pass
|
||||
63
Test/NoVTableTest/temp/2d39c6c7d3557b3e.pyi
Normal file
63
Test/NoVTableTest/temp/2d39c6c7d3557b3e.pyi
Normal file
@@ -0,0 +1,63 @@
|
||||
"""
|
||||
Auto-generated Python stub file from linkedlist.py
|
||||
Module: linkedlist
|
||||
"""
|
||||
|
||||
|
||||
import t, c
|
||||
from stdint import *
|
||||
|
||||
@t.NoVTable
|
||||
class LinkedNode:
|
||||
next: 'LinkedNode' | t.CPtr
|
||||
prev: 'LinkedNode' | t.CPtr
|
||||
child: 'LinkedNode' | t.CPtr
|
||||
last_child: 'LinkedNode' | t.CPtr
|
||||
parent: 'LinkedNode' | t.CPtr
|
||||
child_count: t.CSizeT
|
||||
def append(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass
|
||||
def prepend(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass
|
||||
def insert_before(self: LinkedNode, node: 'LinkedNode' | t.CPtr, new_node: 'LinkedNode' | t.CPtr) -> t.CInt: pass
|
||||
def insert_after(self: LinkedNode, node: 'LinkedNode' | t.CPtr, new_node: 'LinkedNode' | t.CPtr) -> t.CInt: pass
|
||||
def remove_child(self: LinkedNode, node: 'LinkedNode' | t.CPtr) -> t.CInt: pass
|
||||
def detach(self: LinkedNode) -> t.CInt: pass
|
||||
def unlink(self: LinkedNode) -> t.CInt: pass
|
||||
def has_children(self: LinkedNode) -> t.CInt: pass
|
||||
def child_at(self: LinkedNode, index: t.CSizeT) -> 'LinkedNode' | t.CPtr: pass
|
||||
def count_children(self: LinkedNode) -> t.CSizeT: pass
|
||||
def first_sibling(self: LinkedNode) -> 'LinkedNode' | t.CPtr: pass
|
||||
def last_sibling(self: LinkedNode) -> 'LinkedNode' | t.CPtr: pass
|
||||
@t.NoVTable
|
||||
class SListNode:
|
||||
Next: 'SListNode' | t.CPtr
|
||||
def append(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass
|
||||
def append_after(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass
|
||||
def count(self: SListNode) -> t.CSizeT: pass
|
||||
def at(self: SListNode, index: t.CSizeT) -> 'SListNode' | t.CPtr: pass
|
||||
def remove(self: SListNode, node: 'SListNode' | t.CPtr) -> 'SListNode' | t.CPtr: pass
|
||||
@t.NoVTable
|
||||
class GSListNode[T]:
|
||||
Next: T | t.CPtr
|
||||
@t.NoVTable
|
||||
class GSList[T]:
|
||||
Head: T | t.CPtr
|
||||
Tail: T | t.CPtr
|
||||
Count: t.CSizeT
|
||||
def __init__(self: GSList) -> t.CInt: pass
|
||||
def append(self: GSList, node: T) -> t.CInt: pass
|
||||
def count(self: GSList) -> t.CSizeT: pass
|
||||
def at(self: GSList, index: t.CSizeT) -> T | t.CPtr: pass
|
||||
@t.NoVTable
|
||||
class GTreeNode[T]:
|
||||
Next: T | t.CPtr
|
||||
Prev: T | t.CPtr
|
||||
Child: T | t.CPtr
|
||||
LastChild: T | t.CPtr
|
||||
Parent: T | t.CPtr
|
||||
Count: t.CSizeT
|
||||
def append(self: GTreeNode, node: T | t.CPtr) -> t.CInt: pass
|
||||
def prepend(self: GTreeNode, node: T | t.CPtr) -> t.CInt: pass
|
||||
def detach(self: GTreeNode) -> t.CInt: pass
|
||||
def has_children(self: GTreeNode) -> t.CInt: pass
|
||||
def child_at(self: GTreeNode, index: t.CSizeT) -> T | t.CPtr: pass
|
||||
def count_children(self: GTreeNode) -> t.CSizeT: pass
|
||||
28
Test/NoVTableTest/temp/6f62fe05c5ea1ceb.pyi
Normal file
28
Test/NoVTableTest/temp/6f62fe05c5ea1ceb.pyi
Normal file
@@ -0,0 +1,28 @@
|
||||
"""
|
||||
Auto-generated Python stub file from stdio.py
|
||||
Module: stdio
|
||||
"""
|
||||
|
||||
|
||||
import t, c
|
||||
|
||||
def printf(fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
|
||||
|
||||
def fprintf(stream: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
|
||||
|
||||
def sprintf(buf: bytes, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
|
||||
|
||||
def snprintf(buf: bytes, size: t.CSizeT, fmt: t.CConst | str, *args) -> t.CInt | t.State: pass
|
||||
|
||||
def puts(s: t.CConst | str) -> t.CInt | t.State: pass
|
||||
|
||||
def fputs(s: t.CConst | str, stream: bytes) -> t.CInt | t.State: pass
|
||||
|
||||
def fgets(buf: bytes, size: t.CInt, stream: bytes) -> bytes | t.State: pass
|
||||
|
||||
def fflush(stream: bytes) -> t.CInt | t.State: pass
|
||||
|
||||
|
||||
stdin: t.CExtern | bytes
|
||||
stdout: t.CExtern | bytes
|
||||
stderr: t.CExtern | bytes
|
||||
20
Test/NoVTableTest/temp/71e0a3ffcb3ebfad.pyi
Normal file
20
Test/NoVTableTest/temp/71e0a3ffcb3ebfad.pyi
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
Auto-generated Python stub file from stdarg.py
|
||||
Module: stdarg
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
import t
|
||||
|
||||
def va_start(args: t.CPtr, last_arg: t.CPtr) -> t.State: pass
|
||||
|
||||
def va_arg(args: t.CPtr, type: t.CPtr) -> t.CPtr | t.State: pass
|
||||
|
||||
def va_end(args: t.CPtr) -> t.State | t.State: pass
|
||||
|
||||
|
||||
va_list: t.CTypedef = t.CUnsignedChar | t.CPtr
|
||||
|
||||
def arg(type: t.CType) -> t.State: pass
|
||||
100
Test/NoVTableTest/temp/7e529fe7a078cfef.pyi
Normal file
100
Test/NoVTableTest/temp/7e529fe7a078cfef.pyi
Normal file
@@ -0,0 +1,100 @@
|
||||
"""
|
||||
Auto-generated Python stub file from w32.win32base.py
|
||||
Module: w32.win32base
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
import t
|
||||
from stdint import *
|
||||
|
||||
HANDLE: t.CTypedef = VOIDPTR
|
||||
LPCSTR: t.CTypedef = t.CConst | t.CChar | t.CPtr
|
||||
LPCWSTR: t.CTypedef = t.CConst | t.CUnsignedShort | t.CPtr
|
||||
INVALID_HANDLE_VALUE: t.CDefine = t.CVoid(-1)
|
||||
NULL: t.CDefine = 0
|
||||
TRUE: t.CDefine = 1
|
||||
FALSE: t.CDefine = 0
|
||||
INFINITE: t.CDefine = 0xFFFFFFFF
|
||||
WAIT_FAILED: t.CDefine = 0xFFFFFFFF
|
||||
WAIT_OBJECT_0: t.CDefine = 0
|
||||
WAIT_TIMEOUT: t.CDefine = 258
|
||||
WAIT_ABANDONED: t.CDefine = 0x80
|
||||
MAX_PATH: t.CDefine = 260
|
||||
ERROR_SUCCESS: t.CDefine = 0
|
||||
ERROR_FILE_NOT_FOUND: t.CDefine = 2
|
||||
ERROR_ACCESS_DENIED: t.CDefine = 5
|
||||
ERROR_INSUFFICIENT_BUFFER: t.CDefine = 122
|
||||
|
||||
class SECURITY_ATTRIBUTES:
|
||||
nLength: ULONG
|
||||
lpSecurityDescriptor: VOIDPTR
|
||||
bInheritHandle: BOOL
|
||||
class OVERLAPPED:
|
||||
Internal: ULONGLONG
|
||||
InternalHigh: ULONGLONG
|
||||
Offset: ULONG
|
||||
OffsetHigh: ULONG
|
||||
hEvent: HANDLE
|
||||
class FILETIME:
|
||||
dwLowDateTime: DWORD
|
||||
dwHighDateTime: DWORD
|
||||
class SYSTEMTIME:
|
||||
wYear: WORD
|
||||
wMonth: WORD
|
||||
wDayOfWeek: WORD
|
||||
wDay: WORD
|
||||
wHour: WORD
|
||||
wMinute: WORD
|
||||
wSecond: WORD
|
||||
wMilliseconds: WORD
|
||||
class GUID:
|
||||
Data1: DWORD
|
||||
Data2: WORD
|
||||
Data3: WORD
|
||||
Data4: BYTEPTR
|
||||
class LARGE_INTEGER:
|
||||
QuadPart: LONGLONG
|
||||
class ULARGE_INTEGER:
|
||||
QuadPart: ULONGLONG
|
||||
|
||||
def GetLastError() -> ULONG | t.State: pass
|
||||
|
||||
def SetLastError(dwErrCode: ULONG) -> t.State: pass
|
||||
|
||||
def CloseHandle(hObject: HANDLE) -> BOOL | t.State: pass
|
||||
|
||||
def GetProcAddress(hModule: HANDLE, lpProcName: LPCSTR) -> VOIDPTR | t.State: pass
|
||||
|
||||
def GetModuleHandleA(lpModuleName: LPCSTR) -> HANDLE | t.State: pass
|
||||
|
||||
def GetModuleHandleW(lpModuleName: LPCWSTR) -> HANDLE | t.State: pass
|
||||
|
||||
def LoadLibraryA(lpLibFileName: LPCSTR) -> HANDLE | t.State: pass
|
||||
|
||||
def LoadLibraryW(lpLibFileName: LPCWSTR) -> HANDLE | t.State: pass
|
||||
|
||||
def FreeLibrary(hLibModule: HANDLE) -> BOOL | t.State: pass
|
||||
|
||||
def GetSystemTime(lpSystemTime: SYSTEMTIME | t.CPtr) -> t.State: pass
|
||||
|
||||
def GetLocalTime(lpSystemTime: SYSTEMTIME | t.CPtr) -> t.State: pass
|
||||
|
||||
def FileTimeToSystemTime(lpFileTime: FILETIME | t.CPtr, lpSystemTime: SYSTEMTIME | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def SystemTimeToFileTime(lpSystemTime: SYSTEMTIME | t.CPtr, lpFileTime: FILETIME | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def QueryPerformanceCounter(lpPerformanceCount: LARGE_INTEGER | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def QueryPerformanceFrequency(lpFrequency: LARGE_INTEGER | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def Sleep(dwMilliseconds: ULONG) -> t.State: pass
|
||||
|
||||
def SleepEx(dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG | t.State: pass
|
||||
|
||||
def GetTickCount() -> ULONG | t.State: pass
|
||||
|
||||
def GetTickCount64() -> ULONGLONG | t.State: pass
|
||||
|
||||
def GetCommandLineA() -> CHARPTR | t.State: pass
|
||||
20
Test/NoVTableTest/temp/90c53dd6db8d41cf.pyi
Normal file
20
Test/NoVTableTest/temp/90c53dd6db8d41cf.pyi
Normal file
@@ -0,0 +1,20 @@
|
||||
"""
|
||||
Auto-generated Python stub file from stdlib.py
|
||||
Module: stdlib
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
from stdint import *
|
||||
import t
|
||||
|
||||
def malloc(size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass
|
||||
|
||||
def calloc(nmemb: t.CSizeT, size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass
|
||||
|
||||
def realloc(p: t.CVoid | t.CPtr, size: t.CSizeT) -> t.CVoid | t.CPtr | t.State: pass
|
||||
|
||||
def free(p: t.CVoid | t.CPtr) -> t.State: pass
|
||||
|
||||
def system(cmd: t.CConst | t.CChar | t.CPtr) -> INT | t.State: pass
|
||||
1
Test/NoVTableTest/temp/_phase1_manifest.json
Normal file
1
Test/NoVTableTest/temp/_phase1_manifest.json
Normal file
@@ -0,0 +1 @@
|
||||
{"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\Test\\NoVTableTest\\App\\main.py": {"sha1": "22650858c377c847", "mtime": 1782800242.9985914, "size": 17052}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\linkedlist.py": {"sha1": "2d39c6c7d3557b3e", "mtime": 1782895405.2191627, "size": 16032}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdarg.py": {"sha1": "71e0a3ffcb3ebfad", "mtime": 1781258888.113146, "size": 277}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdint.py": {"sha1": "f5522571bcce7bcb", "mtime": 1782383975.8824987, "size": 4356}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdio.py": {"sha1": "6f62fe05c5ea1ceb", "mtime": 1783239556.0959673, "size": 714}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\stdlib.py": {"sha1": "90c53dd6db8d41cf", "mtime": 1783874975.3597875, "size": 375}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\string.py": {"sha1": "ab6e54ba9a669f76", "mtime": 1783933178.7264287, "size": 9922}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\testcheck.py": {"sha1": "dd3002730623424b", "mtime": 1783927513.1159866, "size": 1818}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperio.py": {"sha1": "c9f4be41ca1cc2b4", "mtime": 1782812279.506002, "size": 1556}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\viperlib.py": {"sha1": "c3b259b4059f8668", "mtime": 1782821991.979496, "size": 56772}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32base.py": {"sha1": "7e529fe7a078cfef", "mtime": 1782488356.7736557, "size": 2662}, "D:\\Users\\TermiNexus\\Desktop\\TransPyC\\includes\\w32\\win32console.py": {"sha1": "bbdf3bbd4c3bc28c", "mtime": 1781200703.5338137, "size": 5604}}
|
||||
12
Test/NoVTableTest/temp/_sha1_map.txt
Normal file
12
Test/NoVTableTest/temp/_sha1_map.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
22650858c377c847:main.py
|
||||
2d39c6c7d3557b3e:includes/linkedlist.py
|
||||
6f62fe05c5ea1ceb:includes/stdio.py
|
||||
71e0a3ffcb3ebfad:includes/stdarg.py
|
||||
7e529fe7a078cfef:includes/w32\win32base.py
|
||||
90c53dd6db8d41cf:includes/stdlib.py
|
||||
ab6e54ba9a669f76:includes/string.py
|
||||
bbdf3bbd4c3bc28c:includes/w32\win32console.py
|
||||
c3b259b4059f8668:includes/viperlib.py
|
||||
c9f4be41ca1cc2b4:includes/viperio.py
|
||||
dd3002730623424b:includes/testcheck.py
|
||||
f5522571bcce7bcb:includes/stdint.py
|
||||
48
Test/NoVTableTest/temp/ab6e54ba9a669f76.pyi
Normal file
48
Test/NoVTableTest/temp/ab6e54ba9a669f76.pyi
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
Auto-generated Python stub file from string.py
|
||||
Module: string
|
||||
"""
|
||||
|
||||
|
||||
from stdint import *
|
||||
import t, c
|
||||
|
||||
def strcpy(dest: str, src: str) -> str: pass
|
||||
|
||||
def strcat(dest: str, src: str) -> str: pass
|
||||
|
||||
def strncpy(dest: str, src: str, n: t.CSizeT) -> str: pass
|
||||
|
||||
def strlen(src: str) -> t.CSizeT | t.CExport: pass
|
||||
|
||||
def strcmp(str1: str, str2: str) -> t.CInt: pass
|
||||
|
||||
def samestr(str1: str, str2: str) -> bool: pass
|
||||
|
||||
def strncmp(str1: str, str2: str, n: t.CSizeT) -> t.CInt: pass
|
||||
|
||||
def memcmp(ptr1: t.CVoid | t.CPtr, ptr2: t.CVoid | t.CPtr, n: t.CSizeT) -> t.CInt: pass
|
||||
|
||||
def strchr(s: str, cr: t.CInt) -> str: pass
|
||||
|
||||
def strrchr(s: str, cr: t.CInt) -> str: pass
|
||||
|
||||
def strstr(s: str, needle: str) -> str: pass
|
||||
|
||||
def strspn(s: str, skip: str) -> int: pass
|
||||
|
||||
def memset(ptr: t.CVoid | t.CPtr, value: t.CInt, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass
|
||||
|
||||
def memset32(ptr: t.CVoid | t.CPtr, value: t.CUInt32T, count: t.CSizeT) -> t.CVoid | t.CPtr: pass
|
||||
|
||||
def memcpy(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr | t.CExport: pass
|
||||
|
||||
def memmove(dest: t.CVoid | t.CPtr, src: t.CVoid | t.CPtr, num: t.CSizeT) -> t.CVoid | t.CPtr: pass
|
||||
|
||||
def atoi(src: str) -> t.CInt: pass
|
||||
|
||||
def atoll(src: str) -> t.CInt64T: pass
|
||||
|
||||
def atof(src: str) -> t.CDouble: pass
|
||||
|
||||
def split(s: str, delim: str, result: t.CArray[str]) -> int: pass
|
||||
138
Test/NoVTableTest/temp/bbdf3bbd4c3bc28c.pyi
Normal file
138
Test/NoVTableTest/temp/bbdf3bbd4c3bc28c.pyi
Normal file
@@ -0,0 +1,138 @@
|
||||
"""
|
||||
Auto-generated Python stub file from w32.win32console.py
|
||||
Module: w32.win32console
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
import t
|
||||
from stdint import *
|
||||
from w32.win32base import *
|
||||
|
||||
ENABLE_PROCESSED_INPUT: t.CDefine = 0x0001
|
||||
ENABLE_LINE_INPUT: t.CDefine = 0x0002
|
||||
ENABLE_ECHO_INPUT: t.CDefine = 0x0004
|
||||
ENABLE_WINDOW_INPUT: t.CDefine = 0x0008
|
||||
ENABLE_MOUSE_INPUT: t.CDefine = 0x0010
|
||||
ENABLE_INSERT_MODE: t.CDefine = 0x0020
|
||||
ENABLE_QUICK_EDIT_MODE: t.CDefine = 0x0040
|
||||
ENABLE_EXTENDED_FLAGS: t.CDefine = 0x0080
|
||||
ENABLE_PROCESSED_OUTPUT: t.CDefine = 0x0001
|
||||
ENABLE_WRAP_AT_EOL_OUTPUT: t.CDefine = 0x0002
|
||||
ENABLE_VIRTUAL_TERMINAL_PROCESSING: t.CDefine = 0x0004
|
||||
DISABLE_NEWLINE_AUTO_RETURN: t.CDefine = 0x0008
|
||||
ENABLE_LVB_GRID_WORLDWIDE: t.CDefine = 0x0010
|
||||
FOREGROUND_BLUE: t.CDefine = 0x0001
|
||||
FOREGROUND_GREEN: t.CDefine = 0x0002
|
||||
FOREGROUND_RED: t.CDefine = 0x0004
|
||||
FOREGROUND_INTENSITY: t.CDefine = 0x0008
|
||||
BACKGROUND_BLUE: t.CDefine = 0x0010
|
||||
BACKGROUND_GREEN: t.CDefine = 0x0020
|
||||
BACKGROUND_RED: t.CDefine = 0x0040
|
||||
BACKGROUND_INTENSITY: t.CDefine = 0x0080
|
||||
KEY_EVENT: t.CDefine = 0x0001
|
||||
MOUSE_EVENT: t.CDefine = 0x0002
|
||||
WINDOW_BUFFER_SIZE_EVENT: t.CDefine = 0x0004
|
||||
MENU_EVENT: t.CDefine = 0x0008
|
||||
FOCUS_EVENT: t.CDefine = 0x0010
|
||||
|
||||
class COORD:
|
||||
X: SHORT
|
||||
Y: SHORT
|
||||
class SMALL_RECT:
|
||||
Left: SHORT
|
||||
Top: SHORT
|
||||
Right: SHORT
|
||||
Bottom: SHORT
|
||||
class CONSOLE_SCREEN_BUFFER_INFO:
|
||||
dwSize: COORD
|
||||
dwCursorPosition: COORD
|
||||
wAttributes: WORD
|
||||
srWindow: SMALL_RECT
|
||||
dwMaximumWindowSize: COORD
|
||||
class CONSOLE_CURSOR_INFO:
|
||||
dwSize: ULONG
|
||||
bVisible: BOOL
|
||||
class CHAR_INFO:
|
||||
UnicodeChar: WCHAR
|
||||
Attributes: WORD
|
||||
class KEY_EVENT_RECORD:
|
||||
bKeyDown: BOOL
|
||||
wRepeatCount: WORD
|
||||
wVirtualKeyCode: WORD
|
||||
wVirtualScanCode: WORD
|
||||
uChar: WCHAR
|
||||
dwControlKeyState: ULONG
|
||||
class MOUSE_EVENT_RECORD:
|
||||
dwMousePosition: COORD
|
||||
dwButtonState: ULONG
|
||||
dwControlKeyState: ULONG
|
||||
dwEventFlags: ULONG
|
||||
class WINDOW_BUFFER_SIZE_RECORD:
|
||||
dwSize: COORD
|
||||
class INPUT_RECORD:
|
||||
EventType: WORD
|
||||
Event: KEY_EVENT_RECORD
|
||||
|
||||
def SetConsoleOutputCP(codepage: UINT) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleCP(codepage: UINT) -> BOOL | t.State: pass
|
||||
|
||||
def GetConsoleCP() -> UINT | t.State: pass
|
||||
|
||||
def GetConsoleOutputCP() -> UINT | t.State: pass
|
||||
|
||||
def GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: CONSOLE_SCREEN_BUFFER_INFO | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleScreenBufferSize(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) -> BOOL | t.State: pass
|
||||
|
||||
def GetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleTextAttribute(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL | t.State: pass
|
||||
|
||||
def FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: t.CChar, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def FillConsoleOutputCharacterW(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfAttrsWritten: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def WriteConsoleA(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL | t.State: pass
|
||||
|
||||
def WriteConsoleW(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL | t.State: pass
|
||||
|
||||
def ReadConsoleA(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL | t.State: pass
|
||||
|
||||
def ReadConsoleW(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL | t.State: pass
|
||||
|
||||
def GetConsoleMode(hConsoleHandle: HANDLE, lpMode: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleMode(hConsoleHandle: HANDLE, dwMode: ULONG) -> BOOL | t.State: pass
|
||||
|
||||
def ReadConsoleInputA(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def ReadConsoleInputW(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def GetNumberOfConsoleInputEvents(hConsoleInput: HANDLE, lpNumberOfEvents: ULONG | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def FlushConsoleInputBuffer(hConsoleInput: HANDLE) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleTitleA(lpConsoleTitle: LPCSTR) -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleTitleW(lpConsoleTitle: LPCWSTR) -> BOOL | t.State: pass
|
||||
|
||||
def GetConsoleTitleA(lpConsoleTitle: CHARPTR, nSize: ULONG) -> ULONG | t.State: pass
|
||||
|
||||
def GetConsoleTitleW(lpConsoleTitle: WCHARPTR, nSize: ULONG) -> ULONG | t.State: pass
|
||||
|
||||
def AllocConsole() -> BOOL | t.State: pass
|
||||
|
||||
def FreeConsole() -> BOOL | t.State: pass
|
||||
|
||||
def SetConsoleWindowInfo(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: SMALL_RECT | t.CPtr) -> BOOL | t.State: pass
|
||||
|
||||
def ScrollConsoleScreenBufferA(hConsoleOutput: HANDLE, lpScrollRectangle: SMALL_RECT | t.CPtr, lpClipRectangle: SMALL_RECT | t.CPtr, dwDestinationOrigin: COORD, lpFill: CHAR_INFO | t.CPtr) -> BOOL | t.State: pass
|
||||
23
Test/NoVTableTest/temp/c3b259b4059f8668.pyi
Normal file
23
Test/NoVTableTest/temp/c3b259b4059f8668.pyi
Normal file
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
Auto-generated Python stub file from viperlib.py
|
||||
Module: viperlib
|
||||
"""
|
||||
|
||||
|
||||
import t, c
|
||||
import viperio
|
||||
from stdarg import arg, va_arg
|
||||
|
||||
TEMP_BUF_SIZE: t.CDefine = 68
|
||||
|
||||
def get_digit_count(num: t.CUnsignedInt, base: t.CInt) -> t.CStatic | t.CInt: pass
|
||||
|
||||
def sprintf(buf: t.CChar | t.CPtr, rule: str, *args) -> t.CVoid | t.CExport: pass
|
||||
|
||||
def vsprintf(buf: t.CChar | t.CPtr, rule: str, *args) -> t.CInt: pass
|
||||
|
||||
def snprintf(buf: t.CChar | t.CPtr, size: t.CSizeT, fmt: str, *args) -> t.CInt | t.CExport: pass
|
||||
|
||||
def _check_special_float(fv: t.CDouble) -> t.CInt: pass
|
||||
|
||||
def vsnprintf(buf: t.CChar | t.CPtr, size: t.CSizeT, fmt: str, ap: t.CChar | t.CPtr) -> t.CInt | t.CExport: pass
|
||||
22
Test/NoVTableTest/temp/c9f4be41ca1cc2b4.pyi
Normal file
22
Test/NoVTableTest/temp/c9f4be41ca1cc2b4.pyi
Normal file
@@ -0,0 +1,22 @@
|
||||
"""
|
||||
Auto-generated Python stub file from viperio.py
|
||||
Module: viperio
|
||||
"""
|
||||
|
||||
|
||||
import t, c
|
||||
from stdint import *
|
||||
|
||||
class Buf:
|
||||
data: t.CChar | t.CPtr
|
||||
length: t.CSizeT
|
||||
capacity: t.CSizeT
|
||||
owned: bool
|
||||
def __init__(self: Buf, data: t.CChar | t.CPtr, capacity: t.CSizeT, length: t.CSizeT, owned: bool) -> t.CInt: pass
|
||||
def clear(self: Buf) -> t.CInt: pass
|
||||
def write(self: Buf, src: t.CChar | t.CPtr, count: t.CSizeT) -> t.CSizeT: pass
|
||||
def cstr(self: Buf) -> t.CChar | t.CPtr: pass
|
||||
def reset(self: Buf) -> t.CInt: pass
|
||||
def __enter__(self: Buf) -> 'Buf' | t.CPtr: pass
|
||||
def __exit__(self: Buf) -> t.CInt: pass
|
||||
def free(self: Buf) -> t.CInt: pass
|
||||
31
Test/NoVTableTest/temp/dd3002730623424b.pyi
Normal file
31
Test/NoVTableTest/temp/dd3002730623424b.pyi
Normal file
@@ -0,0 +1,31 @@
|
||||
"""
|
||||
Auto-generated Python stub file from testcheck.py
|
||||
Module: testcheck
|
||||
"""
|
||||
|
||||
|
||||
import t, c
|
||||
import stdio
|
||||
from w32.win32console import SetConsoleOutputCP, SetConsoleCP
|
||||
|
||||
CP_UTF8: t.CDefine = 65001
|
||||
_pass_count: t.CExtern | t.CInt
|
||||
_fail_count: t.CExtern | t.CInt
|
||||
_total_pass: t.CExtern | t.CInt
|
||||
_total_fail: t.CExtern | t.CInt
|
||||
|
||||
def begin(name: str) -> t.CInt: pass
|
||||
|
||||
def section(name: str) -> t.CInt: pass
|
||||
|
||||
def ok(msg: str) -> t.CInt: pass
|
||||
|
||||
def fail(msg: str) -> t.CInt: pass
|
||||
|
||||
def check(cond: t.CInt, ok_msg: str, fail_msg: str) -> t.CInt: pass
|
||||
|
||||
def info(msg: str) -> t.CInt: pass
|
||||
|
||||
def end() -> t.CInt: pass
|
||||
|
||||
def summary() -> t.CInt: pass
|
||||
100
Test/NoVTableTest/temp/f5522571bcce7bcb.pyi
Normal file
100
Test/NoVTableTest/temp/f5522571bcce7bcb.pyi
Normal file
@@ -0,0 +1,100 @@
|
||||
"""
|
||||
Auto-generated Python stub file from stdint.py
|
||||
Module: stdint
|
||||
"""
|
||||
|
||||
import c
|
||||
|
||||
|
||||
import t
|
||||
|
||||
INT: t.CTypedef = t.CInt
|
||||
INTPTR: t.CTypedef = t.CInt | t.CPtr
|
||||
BOOL: t.CTypedef = t.CInt
|
||||
UINT: t.CTypedef = t.CUnsignedInt
|
||||
UINTPTR: t.CTypedef = UINT | t.CPtr
|
||||
BYTE: t.CTypedef = t.CUnsignedChar
|
||||
BYTEPTR: t.CTypedef = BYTE | t.CPtr
|
||||
WORD: t.CTypedef = t.CUInt16T
|
||||
DWORD: t.CTypedef = t.CUInt32T
|
||||
QWORD: t.CTypedef = t.CUInt64T
|
||||
TCHAR: t.CTypedef = t.CChar
|
||||
CHARLIST: t.CTypedef = str | t.CPtr
|
||||
VOID: t.CTypedef = t.CVoid
|
||||
SHORT: t.CTypedef = t.CShort
|
||||
SHORTPTR: t.CTypedef = t.CShort | t.CPtr
|
||||
USHORT: t.CTypedef = t.CUnsignedShort
|
||||
USHORTPTR: t.CTypedef = t.CUnsignedShort | t.CPtr
|
||||
LONGLONG: t.CTypedef = t.CLongLong
|
||||
ULONGLONG: t.CTypedef = t.CUnsignedLongLong
|
||||
LONG: t.CTypedef = t.CLong
|
||||
ULONG: t.CTypedef = t.CUnsignedLong
|
||||
WCHAR: t.CTypedef = WORD
|
||||
WCHARPTR: t.CTypedef = WORD | t.CPtr
|
||||
CHARPTR: t.CTypedef = t.CChar | t.CPtr
|
||||
FSIZE_t: t.CTypedef = DWORD
|
||||
LBA_t: t.CTypedef = DWORD
|
||||
VOIDPTR: t.CTypedef = t.CVoid | t.CPtr
|
||||
FLOAT: t.CTypedef = t.CFloat
|
||||
DOUBLE: t.CTypedef = t.CDouble
|
||||
FLOAT8: t.CTypedef = t.CFloat8T
|
||||
FLOAT16: t.CTypedef = t.CFloat16T
|
||||
FLOAT32: t.CTypedef = t.CFloat32T
|
||||
FLOAT64: t.CTypedef = t.CFloat64T
|
||||
FLOAT128: t.CTypedef = t.CFloat128T
|
||||
INT8: t.CTypedef = t.CInt8T
|
||||
INT16: t.CTypedef = t.CInt16T
|
||||
INT32: t.CTypedef = t.CInt32T
|
||||
INT64: t.CTypedef = t.CInt64T
|
||||
UINT8: t.CTypedef = t.CUInt8T
|
||||
UINT16: t.CTypedef = t.CUInt16T
|
||||
UINT32: t.CTypedef = t.CUInt32T
|
||||
UINT64: t.CTypedef = t.CUInt64T
|
||||
INT8PTR: t.CTypedef = t.CInt8T | t.CPtr
|
||||
INT16PTR: t.CTypedef = t.CInt16T | t.CPtr
|
||||
INT32PTR: t.CTypedef = t.CInt32T | t.CPtr
|
||||
INT64PTR: t.CTypedef = t.CInt64T | t.CPtr
|
||||
UINT8PTR: t.CTypedef = t.CUInt8T | t.CPtr
|
||||
UINT16PTR: t.CTypedef = t.CUInt16T | t.CPtr
|
||||
UINT32PTR: t.CTypedef = t.CUInt32T | t.CPtr
|
||||
UINT64PTR: t.CTypedef = t.CUInt64T | t.CPtr
|
||||
CHAR8: t.CTypedef = t.CChar8T
|
||||
CHAR16: t.CTypedef = t.CChar16T
|
||||
CHAR32: t.CTypedef = t.CChar32T
|
||||
CHAR8PTR: t.CTypedef = t.CChar8T | t.CPtr
|
||||
CHAR16PTR: t.CTypedef = t.CChar16T | t.CPtr
|
||||
CHAR32PTR: t.CTypedef = t.CChar32T | t.CPtr
|
||||
i8: t.CTypedef = t.CInt8T
|
||||
i16: t.CTypedef = t.CInt16T
|
||||
i32: t.CTypedef = t.CInt32T
|
||||
i64: t.CTypedef = t.CInt64T
|
||||
u8: t.CTypedef = t.CUInt8T
|
||||
u16: t.CTypedef = t.CUInt16T
|
||||
u32: t.CTypedef = t.CUInt32T
|
||||
u64: t.CTypedef = t.CUInt64T
|
||||
SIZE_T: t.CTypedef = t.CSizeT
|
||||
SSIZE_T: t.CTypedef = t.CPtrDiffT
|
||||
PTRDIFF_T: t.CTypedef = t.CPtrDiffT
|
||||
int8_t: t.CTypedef = t.CInt8T
|
||||
int16_t: t.CTypedef = t.CInt16T
|
||||
int32_t: t.CTypedef = t.CInt32T
|
||||
int64_t: t.CTypedef = t.CInt64T
|
||||
uint8_t: t.CTypedef = t.CUInt8T
|
||||
uint16_t: t.CTypedef = t.CUInt16T
|
||||
uint32_t: t.CTypedef = t.CUInt32T
|
||||
uint64_t: t.CTypedef = t.CUInt64T
|
||||
size_t: t.CTypedef = t.CSizeT
|
||||
ssize_t: t.CTypedef = t.CPtrDiffT
|
||||
ptrdiff_t: t.CTypedef = t.CPtrDiffT
|
||||
intptr_t: t.CTypedef = t.CIntPtrT
|
||||
uintptr_t: t.CTypedef = t.CUIntPtrT
|
||||
wchar_t: t.CTypedef = t.CWCharT
|
||||
char8_t: t.CTypedef = t.CChar8T
|
||||
char16_t: t.CTypedef = t.CChar16T
|
||||
char32_t: t.CTypedef = t.CChar32T
|
||||
float8_t: t.CTypedef = t.CFloat8T
|
||||
float16_t: t.CTypedef = t.CFloat16T
|
||||
float32_t: t.CTypedef = t.CFloat32T
|
||||
float64_t: t.CTypedef = t.CFloat64T
|
||||
float128_t: t.CTypedef = t.CFloat128T
|
||||
_Bool: t.CTypedef = t.CBool
|
||||
Reference in New Issue
Block a user