diff --git a/core/odin/doc-format/doc_format.odin b/core/odin/doc-format/doc_format.odin index b4b36bff8..61bfc913d 100644 --- a/core/odin/doc-format/doc_format.odin +++ b/core/odin/doc-format/doc_format.odin @@ -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, diff --git a/src/docs_format.cpp b/src/docs_format.cpp index e08f75936..c3aaebf64 100644 --- a/src/docs_format.cpp +++ b/src/docs_format.cpp @@ -190,9 +190,16 @@ struct OdinDocEntity { OdinDocArray 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 files; OdinDocArray entities; diff --git a/src/docs_writer.cpp b/src/docs_writer.cpp index 57bc4ec66..5c9bb9f63 100644 --- a/src/docs_writer.cpp +++ b/src/docs_writer.cpp @@ -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;