From ae04af4e4ed4ecd521e1a915edd5b8637b1f40ce Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 18 Apr 2021 20:19:03 +0100 Subject: Add package flags --- src/docs_format.cpp | 7 +++++++ src/docs_writer.cpp | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'src') 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; -- cgit v1.2.3