From 529a603128d5e9dc4701322f44961f165e2183e1 Mon Sep 17 00:00:00 2001 From: omnisci3nce Date: Sun, 14 Jul 2024 21:47:25 +1000 Subject: generate api docs python --- scripts/api_gen/modules.md | 18 --- scripts/api_gen/template.html | 91 ----------- scripts/apidocs/coldark_prism.css | 317 ++++++++++++++++++++++++++++++++++++++ scripts/apidocs/doc_styles.css | 76 +++++++++ scripts/apidocs/gen_apidocs.py | 109 +++++++++++++ scripts/apidocs/index.html | 236 ++++++++++++++++++++++++++++ scripts/apidocs/modules.md | 18 +++ scripts/apidocs/prism.css | 3 + scripts/apidocs/prism.js | 6 + scripts/apidocs/template.html | 91 +++++++++++ scripts/gen_amalgamation.py | 24 +++ scripts/gen_amalgamation.sh | 5 - scripts/gen_apidocs.sh | 3 - 13 files changed, 880 insertions(+), 117 deletions(-) delete mode 100644 scripts/api_gen/modules.md delete mode 100644 scripts/api_gen/template.html create mode 100644 scripts/apidocs/coldark_prism.css create mode 100644 scripts/apidocs/doc_styles.css create mode 100644 scripts/apidocs/gen_apidocs.py create mode 100644 scripts/apidocs/index.html create mode 100644 scripts/apidocs/modules.md create mode 100644 scripts/apidocs/prism.css create mode 100644 scripts/apidocs/prism.js create mode 100644 scripts/apidocs/template.html create mode 100644 scripts/gen_amalgamation.py delete mode 100644 scripts/gen_amalgamation.sh delete mode 100644 scripts/gen_apidocs.sh (limited to 'scripts') diff --git a/scripts/api_gen/modules.md b/scripts/api_gen/modules.md deleted file mode 100644 index 7298844..0000000 --- a/scripts/api_gen/modules.md +++ /dev/null @@ -1,18 +0,0 @@ - - -- core lifecycle -- memory - - arena - - pool -- containers - - darray - - hashtbl - - ring_queue -- maths -- physics -- platform - - file - - path - - mutex - - thread -- threadpool \ No newline at end of file diff --git a/scripts/api_gen/template.html b/scripts/api_gen/template.html deleted file mode 100644 index 1e1c7a7..0000000 --- a/scripts/api_gen/template.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - -
-

Celeritas Core API

- -
-
- arena - arena_create(void* - backing_buffer, - size_t - capacity); -
-
- void* - arena_alloc(arena* - a, - size_t - size); -
- -
- - - - \ No newline at end of file diff --git a/scripts/apidocs/coldark_prism.css b/scripts/apidocs/coldark_prism.css new file mode 100644 index 0000000..39dd470 --- /dev/null +++ b/scripts/apidocs/coldark_prism.css @@ -0,0 +1,317 @@ +/** + * Coldark Theme for Prism.js + * Theme variation: Dark + * Tested with HTML, CSS, JS, JSON, PHP, YAML, Bash script + * @author Armand Philippot + * @homepage https://github.com/ArmandPhilippot/coldark-prism + * @license MIT + */ +code[class*="language-"], +pre[class*="language-"] { + color: #e3eaf2; + background: none; + font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + background: #3c526d; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + background: #3c526d; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #111b27; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em 0.3em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8da1b9; +} + +.token.punctuation { + color: #e3eaf2; +} + +.token.delimiter.important, +.token.selector .parent, +.token.tag, +.token.tag .token.punctuation { + color: #66cccc; +} + +.token.attr-name, +.token.boolean, +.token.boolean.important, +.token.number, +.token.constant, +.token.selector .token.attribute { + color: #e6d37a; +} + +.token.class-name, +.token.key, +.token.parameter, +.token.property, +.token.property-access, +.token.variable { + color: #6cb8e6; +} + +.token.attr-value, +.token.inserted, +.token.color, +.token.selector .token.value, +.token.string, +.token.string .token.url-link { + color: #91d076; +} + +.token.builtin, +.token.keyword-array, +.token.package, +.token.regex { + color: #f4adf4; +} + +.token.function, +.token.selector .token.class, +.token.selector .token.id { + color: #c699e3; +} + +.token.atrule .token.rule, +.token.combinator, +.token.keyword, +.token.operator, +.token.pseudo-class, +.token.pseudo-element, +.token.selector, +.token.unit { + color: #e9ae7e; +} + +.token.deleted, +.token.important { + color: #cd6660; +} + +.token.keyword-this, +.token.this { + color: #6cb8e6; +} + +.token.important, +.token.keyword-this, +.token.this, +.token.bold { + font-weight: bold; +} + +.token.delimiter.important { + font-weight: inherit; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.language-markdown .token.title, +.language-markdown .token.title .token.punctuation { + color: #6cb8e6; + font-weight: bold; +} + +.language-markdown .token.blockquote.punctuation { + color: #f4adf4; +} + +.language-markdown .token.code { + color: #66cccc; +} + +.language-markdown .token.hr.punctuation { + color: #6cb8e6; +} + +.language-markdown .token.url .token.content { + color: #91d076; +} + +.language-markdown .token.url-link { + color: #e6d37a; +} + +.language-markdown .token.list.punctuation { + color: #f4adf4; +} + +.language-markdown .token.table-header { + color: #e3eaf2; +} + +.language-json .token.operator { + color: #e3eaf2; +} + +.language-scss .token.variable { + color: #66cccc; +} + +/* overrides color-values for the Show Invisibles plugin + * https://prismjs.com/plugins/show-invisibles/ + */ +.token.token.tab:not(:empty):before, +.token.token.cr:before, +.token.token.lf:before, +.token.token.space:before { + color: #8da1b9; +} + +/* overrides color-values for the Toolbar plugin + * https://prismjs.com/plugins/toolbar/ + */ +div.code-toolbar > .toolbar.toolbar > .toolbar-item > a, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > button { + color: #111b27; + background: #6cb8e6; +} + +div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus { + color: #111b27; + background: #6cb8e6da; + text-decoration: none; +} + +div.code-toolbar > .toolbar.toolbar > .toolbar-item > span, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover, +div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus { + color: #111b27; + background: #8da1b9; +} + +/* overrides color-values for the Line Highlight plugin + * http://prismjs.com/plugins/line-highlight/ + */ +.line-highlight.line-highlight { + background: #3c526d5f; + background: linear-gradient(to right, #3c526d5f 70%, #3c526d55); +} + +.line-highlight.line-highlight:before, +.line-highlight.line-highlight[data-end]:after { + background-color: #8da1b9; + color: #111b27; + box-shadow: 0 1px #3c526d; +} + +pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before { + background-color: #8da1b918; +} + +/* overrides color-values for the Line Numbers plugin + * http://prismjs.com/plugins/line-numbers/ + */ +.line-numbers.line-numbers .line-numbers-rows { + border-right: 1px solid #0b121b; + background: #0b121b7a; +} + +.line-numbers .line-numbers-rows > span:before { + color: #8da1b9da; +} + +/* overrides color-values for the Match Braces plugin + * https://prismjs.com/plugins/match-braces/ + */ +.rainbow-braces .token.token.punctuation.brace-level-1, +.rainbow-braces .token.token.punctuation.brace-level-5, +.rainbow-braces .token.token.punctuation.brace-level-9 { + color: #e6d37a; +} + +.rainbow-braces .token.token.punctuation.brace-level-2, +.rainbow-braces .token.token.punctuation.brace-level-6, +.rainbow-braces .token.token.punctuation.brace-level-10 { + color: #f4adf4; +} + +.rainbow-braces .token.token.punctuation.brace-level-3, +.rainbow-braces .token.token.punctuation.brace-level-7, +.rainbow-braces .token.token.punctuation.brace-level-11 { + color: #6cb8e6; +} + +.rainbow-braces .token.token.punctuation.brace-level-4, +.rainbow-braces .token.token.punctuation.brace-level-8, +.rainbow-braces .token.token.punctuation.brace-level-12 { + color: #c699e3; +} + +/* overrides color-values for the Diff Highlight plugin + * https://prismjs.com/plugins/diff-highlight/ + */ +pre.diff-highlight > code .token.token.deleted:not(.prefix), +pre > code.diff-highlight .token.token.deleted:not(.prefix) { + background-color: #cd66601f; +} + +pre.diff-highlight > code .token.token.inserted:not(.prefix), +pre > code.diff-highlight .token.token.inserted:not(.prefix) { + background-color: #91d0761f; +} + +/* overrides color-values for the Command Line plugin + * https://prismjs.com/plugins/command-line/ + */ +.command-line .command-line-prompt { + border-right: 1px solid #0b121b; +} + +.command-line .command-line-prompt > span:before { + color: #8da1b9da; +} diff --git a/scripts/apidocs/doc_styles.css b/scripts/apidocs/doc_styles.css new file mode 100644 index 0000000..ee0851b --- /dev/null +++ b/scripts/apidocs/doc_styles.css @@ -0,0 +1,76 @@ +/* + Josh's Custom CSS Reset + https://www.joshwcomeau.com/css/custom-css-reset/ +*/ +*, *::before, *::after { + box-sizing: border-box; +} +* { + margin: 0; +} +body { + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} +img, picture, video, canvas, svg { + display: block; + max-width: 100%; +} +input, button, textarea, select { + font: inherit; +} +p, h1, h2, h3, h4, h5, h6 { + overflow-wrap: break-word; +} +#root, #__next { + isolation: isolate; +} + +/* Styles */ + +html { + -webkit-text-size-adjust: 100%; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ + font-feature-settings: normal; + font-variation-settings: normal; +} + +pre { + margin: 0; + padding: 0; +} +code { + margin: 0; + padding: 6px 0 !important +} + +:root { + /* TODO: create basic greyscale colours */ +} + +main { + padding: 12px; +} + +h1 { + font-size: 18px; + margin-bottom: 20px; + /* font-weight: 700; */ +} + +h3 { + font-size: 16px; + font-weight: 700; + text-transform: uppercase; +} + +.category-list { + padding: 10px 20px; + list-style-type: none; +} + +.signature { +} diff --git a/scripts/apidocs/gen_apidocs.py b/scripts/apidocs/gen_apidocs.py new file mode 100644 index 0000000..390a081 --- /dev/null +++ b/scripts/apidocs/gen_apidocs.py @@ -0,0 +1,109 @@ +# Generates a static webpage for the public C-API of `celeritas-core` +import re +import os +from pathlib import Path + +# --- HTML Fragments +page_start = """ + + + + + + + + + + + + + + + + Celeritas core API + + +
+""" + +page_header = """ +
+

CELERITAS CORE DOCS

+
+""" + +page_footer = """ +
+
+""" + +page_end = """ +
+ + +""" + +def emit_function_sig(signature: str) -> str: + return f""" +
  • +
    {signature}
    +
  • + """ + +categories = { + "RAL": "src/ral", + "Render": "src/new_render" +} + +def find_pub_functions_in_folder(folder_path): + functions = [] + for filename in os.listdir(folder_path): + filepath = os.path.join(folder_path, filename) + if os.path.isfile(filepath): + file_funcs = find_pub_functions_in_file(filepath) + functions.extend(file_funcs) + + return functions + +def find_pub_functions_in_file(file_path): + pattern = r'PUB\s+(\w+\s+)*(\w+)\s+(\w+)\s*\((.*?)\)' + + with open(file_path, 'r') as file: + content = file.read() + + matches = re.finditer(pattern, content, re.MULTILINE) + + # Collect all the functions into an array + functions = [] + for match in matches: + signature = match.group(0) + if signature.startswith("PUB "): + signature = signature[4:] + + print(signature) + functions.append(signature) + + return functions + +def generate_html(): + html_filepath = "index.html" + + script_dir = Path(__file__).resolve().parent + grandparent_dir = script_dir.parents[1] + + with open(html_filepath, 'w') as export_file: + export_file.write(page_start) + export_file.write(page_header) + # TODO: make the actual content + for category in categories.keys(): + folder = os.path.join(grandparent_dir, categories[category]) + category_funcs = find_pub_functions_in_folder(folder) + export_file.write(f"

    {category}

    ") + export_file.write("") + export_file.write(page_end) + +if __name__ == "__main__": + generate_html() diff --git a/scripts/apidocs/index.html b/scripts/apidocs/index.html new file mode 100644 index 0000000..878b7f9 --- /dev/null +++ b/scripts/apidocs/index.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + Celeritas core API + + +
    + +
    +

    CELERITAS CORE

    +
    +

    RAL

      +
    • +
      void GPU_Renderpass_Destroy(GPU_Renderpass* pass)
      +
    • + +
    • +
      void GraphicsPipeline_Destroy(GPU_Pipeline* pipeline)
      +
    • + +
    • +
      GPU_CmdEncoder GPU_CmdEncoder_Create()
      +
    • + +
    • +
      void GPU_CmdEncoder_Destroy(GPU_CmdEncoder* encoder)
      +
    • + +
    • +
      void GPU_CmdEncoder_BeginRender(GPU_CmdEncoder* encoder, GPU_Renderpass* renderpass)
      +
    • + +
    • +
      void GPU_CmdEncoder_EndRender(GPU_CmdEncoder* encoder)
      +
    • + +
    • +
      void GPU_QueueSubmit(GPU_CmdBuffer* cmd_buffer)
      +
    • + +
    • +
      BufferHandle GPU_BufferCreate(u64 size, GPU_BufferType buf_type, GPU_BufferFlags flags, const void* data)
      +
    • + +
    • +
      void GPU_BufferDestroy(BufferHandle handle)
      +
    • + +
    • +
      void GPU_BufferUpload(BufferHandle buffer, size_t n_bytes, const void* data)
      +
    • + +
    • +
      TextureHandle GPU_TextureCreate(TextureDesc desc, bool create_view, const void* data)
      +
    • + +
    • +
      void GPU_TextureDestroy(TextureHandle handle)
      +
    • + +
    • +
      void GPU_TextureUpload(TextureHandle handle, size_t n_bytes, const void* data)
      +
    • + +
    • +
      void GPU_EncodeBindPipeline(GPU_CmdEncoder* encoder, GPU_Pipeline* pipeline)
      +
    • + +
    • +
      void GPU_EncodeBindShaderData(GPU_CmdEncoder* encoder, u32 group, ShaderData* data)
      +
    • + +
    • +
      void GPU_EncodeSetVertexBuffer(GPU_CmdEncoder* encoder, BufferHandle buf)
      +
    • + +
    • +
      void GPU_EncodeSetIndexBuffer(GPU_CmdEncoder* encoder, BufferHandle buf)
      +
    • + +
    • +
      void GPU_EncodeDraw(GPU_CmdEncoder* encoder, u64 count)
      +
    • + +
    • +
      void GPU_EncodeDrawIndexed(GPU_CmdEncoder* encoder, u64 index_count)
      +
    • + +
    • +
      bool GPU_Backend_BeginFrame()
      +
    • + +
    • +
      void GPU_Backend_EndFrame()
      +
    • +

    Render

      +
    • +
      void EncodeDrawModel(Handle model, Mat4 transform)
      +
    • + +
    • +
      void EncodeDrawMesh(Mesh* mesh, Material* material, Mat4 affine)
      +
    • + +
    • +
      void Immdraw_Init(Immdraw_Storage* storage)
      +
    • + +
    • +
      void Immdraw_Shutdown(Immdraw_Storage* storage)
      +
    • + +
    • +
      void Immdraw_Plane(Transform tf, Vec4 colour, bool wireframe)
      +
    • + +
    • +
      void Immdraw_Cuboid(Transform tf, Vec4 colour, bool wireframe)
      +
    • + +
    • +
      void Immdraw_Sphere(Transform tf, f32 size, Vec4 colour, bool wireframe)
      +
    • + +
    • +
      void Immdraw_TransformGizmo(Transform tf, f32 size)
      +
    • + +
    • +
      void PBR_Init(PBR_Storage* storage)
      +
    • + +
    • +
      bool Renderer_Init(RendererConfig config, Renderer* renderer)
      +
    • + +
    • +
      void Renderer_Shutdown(Renderer* renderer)
      +
    • + +
    • +
      size_t Renderer_GetMemReqs()
      +
    • + +
    • +
      void Render_FrameBegin(Renderer* renderer)
      +
    • + +
    • +
      void Render_FrameEnd(Renderer* renderer)
      +
    • + +
    • +
      void Render_RenderEntities(RenderEnt* entities, size_t entity_count)
      +
    • + +
    • +
      TextureHandle TextureUpload()
      +
    • + +
    • +
      ModelHandle ModelLoad(const char* debug_name, const char* filepath)
      +
    • + +
    • +
      Mesh Mesh_Create(Geometry* geometry, bool free_on_upload)
      +
    • + +
    • +
      void Mesh_Delete(Mesh* mesh)
      +
    • + +
    • +
      void DrawMesh(Mesh* mesh, Material* material, Mat4 model)
      +
    • + +
    • +
      void Render_DrawTerrain()
      +
    • + +
    • +
      void SetCamera(Camera camera)
      +
    • + +
    • +
      void SetPointLight(PointLight light)
      +
    • + +
    • +
      void Shadow_Init(Shadow_Storage* storage)
      +
    • + +
    • +
      void Shadow_Run(Shadow_Storage* storage, RenderEnt* entities, size_t entity_count)
      +
    • + +
    • +
      Handle Shadow_GetShadowMapTexture(Shadow_Storage* storage)
      +
    • + +
    • +
      void CubeMapData_Load(const char** face_paths, int n)
      +
    • + +
    • +
      void CubeMapData_Free(CubeMapData* cubemap)
      +
    • + +
    • +
      TextureHandle CubeMapData_Upload(CubeMapData* cubemap)
      +
    • + +
    • +
      Skybox Skybox_Create(const char** face_paths, int n)
      +
    • + +
    • +
      void Skybox_Draw(Skybox* skybox)
      +
    • +
    +
    + + diff --git a/scripts/apidocs/modules.md b/scripts/apidocs/modules.md new file mode 100644 index 0000000..7298844 --- /dev/null +++ b/scripts/apidocs/modules.md @@ -0,0 +1,18 @@ + + +- core lifecycle +- memory + - arena + - pool +- containers + - darray + - hashtbl + - ring_queue +- maths +- physics +- platform + - file + - path + - mutex + - thread +- threadpool \ No newline at end of file diff --git a/scripts/apidocs/prism.css b/scripts/apidocs/prism.css new file mode 100644 index 0000000..333e985 --- /dev/null +++ b/scripts/apidocs/prism.css @@ -0,0 +1,3 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike */ +code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help} diff --git a/scripts/apidocs/prism.js b/scripts/apidocs/prism.js new file mode 100644 index 0000000..d0b4c05 --- /dev/null +++ b/scripts/apidocs/prism.js @@ -0,0 +1,6 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+","+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a"+i.content+""},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener("message",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute("data-manual")&&(a.manual=!0)),!a.manual){var h=document.readyState;"loading"===h||"interactive"===h&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,(function(){return a})),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:[^;{\\s\"']|\\s+(?!\\s)|"+e.source+")*?(?:;|(?=\\s*\\{))"),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; diff --git a/scripts/apidocs/template.html b/scripts/apidocs/template.html new file mode 100644 index 0000000..1e1c7a7 --- /dev/null +++ b/scripts/apidocs/template.html @@ -0,0 +1,91 @@ + + + + + + + + + +
    +

    Celeritas Core API

    + +
    +
    + arena + arena_create(void* + backing_buffer, + size_t + capacity); +
    +
    + void* + arena_alloc(arena* + a, + size_t + size); +
    + +
    + + + + \ No newline at end of file diff --git a/scripts/gen_amalgamation.py b/scripts/gen_amalgamation.py new file mode 100644 index 0000000..45a1c21 --- /dev/null +++ b/scripts/gen_amalgamation.py @@ -0,0 +1,24 @@ +# Generates a single amalgamation C header file that includes all public types and functions. +# +# This makes including and linking Celeritas very easy. +import re +import sys + +def find_pub_functions(filepath): + pattern = r'PUB\s+(\w+\s+)*(\w+)\s+(\w+)\s*\((.*?)\)' + + with open(filepath, 'r') as file: + content = file.read() + + matches = re.finditer(pattern, content, re.MULTILINE) + + for match in matches: + print(match.group(0)) + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python script.py ") + sys.exit(1) + + file_path = sys.argv[1] + find_pub_functions(file_path) diff --git a/scripts/gen_amalgamation.sh b/scripts/gen_amalgamation.sh deleted file mode 100644 index 56df62e..0000000 --- a/scripts/gen_amalgamation.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Generates a single amalgamation C header file that includes all public types and functions. -# -# This makes including and linking Celeritas very easy. diff --git a/scripts/gen_apidocs.sh b/scripts/gen_apidocs.sh deleted file mode 100644 index afad30e..0000000 --- a/scripts/gen_apidocs.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -# Generates a static webpage for the public C-API of `celeritas-core` -- cgit v1.2.3-70-g09d2