Add package flags

This commit is contained in:
gingerBill
2021-04-18 20:19:03 +01:00
parent 3baddd4116
commit ae04af4e4e
3 changed files with 37 additions and 3 deletions

View File

@@ -63,9 +63,18 @@ File :: struct {
name: String,
}
Pkg_Flag :: enum u32le {
Builtin = 0,
Runtime = 1,
Init = 2,
}
Pkg_Flags :: distinct bit_set[Pkg_Flag; u32le];
Pkg :: struct {
fullpath: String,
name: String,
flags: Pkg_Flags,
docs: String,
files: Array(File_Index),
entities: Array(Entity_Index),
@@ -195,8 +204,8 @@ Type_Flag_Proc :: enum u32le {
C_Vararg = 4,
}
Type_Flags_BitSet :: distinct bit_set[Type_Flag_BitSet; u32le];
Type_Flag_BitSet :: enum u32le {
Type_Flags_Bit_Set :: distinct bit_set[Type_Flag_Bit_Set; u32le];
Type_Flag_Bit_Set :: enum u32le {
Range = 1,
Op_Lt = 2,
Op_Lt_Eq = 3,

View File

@@ -190,9 +190,16 @@ struct OdinDocEntity {
OdinDocArray<OdinDocString> where_clauses; // Procedures
};
enum OdinDocPkgFlags : u32 {
OdinDocPkgFlag_Builtin = 1<<0,
OdinDocPkgFlag_Runtime = 1<<1,
OdinDocPkgFlag_Init = 1<<2,
};
struct OdinDocPkg {
OdinDocString fullpath;
OdinDocString name;
u32 flags;
OdinDocString docs;
OdinDocArray<OdinDocFileIndex> files;
OdinDocArray<OdinDocEntityIndex> entities;

View File

@@ -509,7 +509,6 @@ OdinDocTypeIndex odin_doc_type(OdinDocWriter *w, Type *type) {
map_set(&w->type_cache, hash_pointer(type), type_index);
map_set(&w->type_id_cache, hash_integer(type_index), type);
switch (type->kind) {
case Type_Basic:
doc_type.kind = OdinDocType_Basic;
@@ -1008,9 +1007,28 @@ void odin_doc_write_docs(OdinDocWriter *w) {
gbAllocator allocator = heap_allocator();
AstPackage *pkg = pkgs[i];
u32 pkg_flags = 0;
switch (pkg->kind) {
case Package_Normal:
break;
case Package_Runtime:
pkg_flags |= OdinDocPkgFlag_Runtime;
break;
case Package_Init:
pkg_flags |= OdinDocPkgFlag_Init;
break;
}
if (pkg->name == "builtin") {
pkg_flags |= OdinDocPkgFlag_Builtin;
} else if (pkg->name == "intrinsics") {
pkg_flags |= OdinDocPkgFlag_Builtin;
}
OdinDocPkg doc_pkg = {};
doc_pkg.fullpath = odin_doc_write_string(w, pkg->fullpath);
doc_pkg.name = odin_doc_write_string(w, pkg->name);
doc_pkg.flags = pkg_flags;
doc_pkg.docs = odin_doc_pkg_doc_string(w, pkg);
OdinDocPkg *dst = nullptr;