aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-04-18 20:19:03 +0100
committergingerBill <bill@gingerbill.org>2021-04-18 20:19:03 +0100
commitae04af4e4ed4ecd521e1a915edd5b8637b1f40ce (patch)
tree3de41b8d2aa068b06f740dc9a805a3fb34714785
parent3baddd4116e84c4f9175f42a074f3d2599aa4979 (diff)
Add package flags
-rw-r--r--core/odin/doc-format/doc_format.odin13
-rw-r--r--src/docs_format.cpp7
-rw-r--r--src/docs_writer.cpp20
3 files changed, 37 insertions, 3 deletions
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<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;
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;