Doc :: struct {
header: Doc_Header;
packages: [] Doc_Package;
procedures: [] Doc_Procedure;
structures: [] Doc_Structure;
enumerations: [] Doc_Enum;
distinct_types: [] Doc_Distinct_Type;
unions: [] Doc_Union;
files: [] Doc_File;
}
Doc_Distinct_Type :: struct {
base: Doc_Entity;
wrapped_type: [] u8;
methods: [] Doc_Procedure;
}
Doc_Entity :: struct {
name: [] u8;
visibility: Doc_Visibility;
package_id: Doc_Package.Id;
location: Doc_Location;
notes: [] u8;
}
Doc_Enum_Value :: struct {
name: [] u8;
value: u64;
}
Doc_Enum :: struct {
base: Doc_Entity;
values: [] Doc_Enum_Value;
flags: Doc_Enum.Flags;
}
Doc_File :: struct {
package_id: Doc_Package.Id;
name: [] u8;
}
Doc_Location :: struct {
file_id: Doc_File.Id;
line: i32;
col: i32;
}
Doc_Package :: struct {
id: Doc_Package.Id;
name: [] u8;
qualified_name: [] u8;
parent: Doc_Package.Id;
subpackages: [] Doc_Package.Id;
notes: [] [] u8;
}
Doc_Param :: struct {
name: [] u8;
type: [] u8;
default_value: [] u8;
}
Doc_Procedure :: struct {
base: Doc_Entity;
flags: Doc_Procedure.Flags;
params: [] Doc_Param;
return_type: [] u8;
overloads: [] Doc_Procedure;
constraints: [] [] u8;
}
Doc_Structure :: struct {
base: Doc_Entity;
members: [] Doc_Structure_Member;
polymorph_arguments: [] Doc_Param;
constraints: [] [] u8;
methods: [] Doc_Procedure;
}
Doc_Structure_Member :: struct {
name: [] u8;
type: [] u8;
default_value: [] u8;
flags: Doc_Structure_Member.Flags;
}
Doc_Union :: struct {
base: Doc_Entity;
variants: [] Doc_Union_Variant;
polymorph_arguments: [] Doc_Param;
constraints: [] [] u8;
methods: [] Doc_Procedure;
}
Doc_Union_Variant :: struct {
name: [] u8;
type: [] u8;
}
Doc_Visibility :: enum {
Public :: 1;
Package :: 2;
Local :: 3;
}