Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8840 → Rev 8841

/kernel/trunk/asmxygen.py
43,7 → 43,7
def get_declarations(asm_file_contents, asm_file_name):
kernel_structure[asm_file_name] = [ [], [], [], [], [] ]
 
variable_pattern = re.compile(r'^\s*([\w\.]+)\s+d[bwdq] .*')
variable_pattern = re.compile(r'^\s*([\w\.]+)\s+d([bwdq])\s+([^;]*)\s*([;].*)?')
macro_pattern = re.compile(r'^\s*macro\s+([\w]+).*')
proc_pattern = re.compile(r'^\s*proc\s+([\w\.]+).*')
label_pattern = re.compile(r'^(?!;)\s*([\w\.]+):.*')
56,9 → 56,19
 
match = variable_pattern.findall(line)
if len(match) > 0:
var_name = match[0]
#print(f"Variable '{var_name}' at {line_idx + 1}")
kernel_structure[asm_file_name][VARIABLES].append([ line_idx + 1, var_name ])
(var_name, var_type, var_init, var_comm) = match[0]
if var_comm == "":
var_comm = "Undocumented"
else:
var_comm = var_comm[1:].lstrip()
if (len(var_comm) == 0):
var_comm = "!!! EMPTY_COMMENT"
if var_comm[0].islower(): var_comm = "!!! LOWERCASE COMMENT " + var_comm
if var_type == "b": var_type = "byte"
if var_type == "w": var_type = "word"
if var_type == "d": var_type = "dword"
if var_type == "q": var_type = "qword"
kernel_structure[asm_file_name][VARIABLES].append([ line_idx + 1, var_name, var_type, var_init, var_comm ])
line_idx += 1
continue
 
108,6 → 118,7
line_idx += 1
 
def handle_file(handled_files, asm_file_name, subdir = "."):
if dump_symbols:
print(f"Handling {asm_file_name}")
handled_files.append(asm_file_name)
try:
170,6 → 181,7
macro_count += len(kernel_structure[source][MACROS])
struct_count += len(kernel_structure[source][STRUCTURES])
 
print(f"File count: {len(kernel_structure)}")
print(f"Variable count: {var_count}")
print(f"Procedures count: {proc_count}")
print(f"Global labels count: {label_count}")
180,8 → 192,7
 
created_files = []
 
def write_variable(source, line, name, type = "int", brief = "Undocumented",
init = None):
def write_variable(source, line, name, type, init, brief):
source = source.replace("./", "")
full_path = doxygen_src_path + '/' + source
# Remove the file on first access if it was created by previous generation
202,11 → 213,7
f.write(f" * @par Source\n")
f.write(f" * <a href='{link_root}/{source}#line-{line}'>{source}:{line}</a>\n")
f.write(f" */\n")
if init == None:
set_init = ""
else:
set_init = f" = {init}"
f.write(f"{type} {name}{set_init};\n\n")
f.write(f"{type} {name};\n\n")
f.close()
 
i = 1
216,5 → 223,5
# Write variables doxygen of the source file
if len(kernel_structure[source][VARIABLES]) > 0:
for variable in kernel_structure[source][VARIABLES]:
write_variable(source, variable[0], variable[1])
write_variable(source, variable[0], variable[1], variable[2], variable[3], variable[4])
i += 1