基本稳定

This commit is contained in:
TermiNexus committed 2026-08-07 19:35:20 +08:00
1 parent 02479420e8
commit acc126ce0c
1868 files changed
+1386 -62775

No files matched your search

+2 -16
View File
@@ -82,7 +82,8 @@ class ParsedArgs:
"""Fetch string value. Returns None if key not found."""
if self._ht.__contains__(name) == 0:
return None
return self._ht[name]
r: str = self._ht[name]
return r
def get_int(self, name: str) -> int:
"""Fetch integer value. Returns 0 if key not found."""
@@ -128,29 +129,22 @@ class ArgumentParser:
def __new__(self, prog: str = "", description: str = "",
pool: memhub.MemBuddy | t.CPtr = None) -> t.CPtr:
stdio.printf("[DBG-argparse] __new__ enter pool=%p\n", pool)
mb: memhub.MemBuddy | t.CPtr = pool
if mb is None:
mb = _mbuddy
stdio.printf("[DBG-argparse] __new__ mb=%p\n", mb)
ret: t.CPtr = mb.alloc(40)
stdio.printf("[DBG-argparse] __new__ ret=%p\n", ret)
return ret
def __init__(self, prog: str = "", description: str = "",
pool: memhub.MemBuddy | t.CPtr = None):
stdio.printf("[DBG-argparse] __init__ enter self=%p pool=%p\n", self, pool)
mb: memhub.MemBuddy | t.CPtr = pool
if mb is None:
mb = _mbuddy
stdio.printf("[DBG-argparse] __init__ mb=%p\n", mb)
self.__mbuddy__ = mb
self._prog = prog
self._description = description
self._arg_count = 0
stdio.printf("[DBG-argparse] __init__ before alloc\n")
self._args = mb.alloc(MAX_ARGS * Argument.__sizeof__())
stdio.printf("[DBG-argparse] __init__ after alloc _args=%p\n", self._args)
def add_argument(self, name: str = "", short: str = None,
arg_type: int = 0, default: int = 0,
@@ -168,15 +162,11 @@ class ArgumentParser:
action: Action mode (STORE/STORE_TRUE/STORE_FALSE/COUNT)
help: Help description text
"""
stdio.printf("[DBG-argparse] enter add_argument name=%s args_ptr=%p\n", name, self._args)
if self._arg_count >= MAX_ARGS:
return
idx: int = self._arg_count
stdio.printf("[DBG-argparse] idx=%d sizeof(Argument)=%d\n", idx, Argument.__sizeof__())
arg: Argument | t.CPtr = t.CPtr(t.CUInt64T(self._args) + idx * Argument.__sizeof__())
stdio.printf("[DBG-argparse] arg ptr=%p\n", arg)
arg.name = name
stdio.printf("[DBG-argparse] after arg.name=%s\n", arg.name)
arg.short_name = short
arg.help_text = help
arg.arg_type = arg_type
@@ -184,7 +174,6 @@ class ArgumentParser:
arg.default_int = default
arg.default_str = default_str
arg.required = required
stdio.printf("[DBG-argparse] before dest logic\n")
# Determine positional flag
if name is not None and name[0] != '-':
arg.is_positional = True
@@ -195,9 +184,7 @@ class ArgumentParser:
arg.dest = name + 2
else:
arg.dest = name + 1
stdio.printf("[DBG-argparse] after dest logic\n")
self._arg_count = idx + 1
stdio.printf("[DBG-argparse] exit add_argument\n")
def _get_arg(self, idx: int) -> Argument | t.CPtr:
return t.CPtr(t.CUInt64T(self._args) + idx * Argument.__sizeof__())
@@ -280,7 +267,6 @@ class ArgumentParser:
args: ParsedArgs | t.CPtr = ParsedArgs(self.__mbuddy__)
if args is None:
return None
# Initialize default values
i: int = 0
while i < self._arg_count:
+3 -1
View File
@@ -4,6 +4,7 @@
import t, c
import string
import memhub
import stdio
from stdint import *
# Empty slot marker (hash == 0)
@@ -173,7 +174,8 @@ class HashTable:
sh: t.CUInt64T = self._slot_hash(idx)
if sh == _HT_EMPTY or sh == _HT_TOMBSTONE:
return None
return self._slot_value(idx)
v: t.CPtr = self._slot_value(idx)
return v
def __contains__(self, key: str) -> t.CInt:
"""Check whether key exists in table."""
+19
View File
@@ -1,5 +1,6 @@
from stdint import *
import t, c
import stdio
# String copy function
@@ -46,6 +47,24 @@ def strncpy(dest: str, src: str, n: t.CSizeT) -> str:
return original_dest
# String concatenate function with limited length
def strncat(dest: str, src: str, n: t.CSizeT) -> str:
if dest == None or src == None or n == 0: return dest
original_dest: str = dest
# Find end of dest
while dest[0] != '\0':
dest += 1
# Copy up to n chars from src
i: t.CSizeT = 0
for s in src:
if i >= n: break
dest[0] = s
dest += 1
i += 1
dest[0] = 0
return original_dest
# String length function
def strlen(src: str) -> t.CSizeT | t.CExport:
length: t.CSizeT = 0