about summary refs log tree commit diff
AgeCommit message (Expand)Author
2025-07-10Expand common string library with `String_View` and format macrosMel
2025-07-09Parse unary reference and dereference operatorsMel
2025-07-09Rudimentary semi-recoverable parser panic modeMel
2025-07-09Add NORETURN to failure functions, add `unreachable`Mel
2025-07-09Shorten token_span_to_line_span and reduce edge case errors in itMel
2025-07-09Makefile pass arguments to run commands through ARGS=""Mel
2025-07-09Multi-error display and fix up finding line boundriesMel
2025-07-09Display human-readable, informative parser error messages w/ source snippetMel
2025-07-06Print formatted lex token value next to token typeMel
2025-07-06Correct handling of empty block nodesMel
2025-07-06Parse variadic parameters in function definitionsMel
2025-07-05Correctly recurse over self-containing non-homogenous postfix-type expressionsMel
2025-07-05Try (?) & must (!) expressionsMel
2025-07-04Print completed single test resultMel
2025-07-04Tree printer handle whitespace more consistentlyMel
2025-07-04Do not remove failed test artifact file for inspectionMel
2025-07-04Argument parser for catboot tool, different command executionMel
2025-07-04Test suite runner prototype for `catboot`Mel
2025-07-01Parse pragmas as free-standing statements, without attachmentMel
2025-07-01Remove older non-visit tree printing codeMel
2025-06-30Factor out translation unit includes to seperate headerMel
2025-06-30License project files under MPL-2.0Mel
2025-06-30Re-format FOR_EACH macros as control structuresMel
2025-06-30Implement Visitor system for syntax tree, with re-written tree printer as fir...Mel
2025-06-24Parse Maybe (?) typeMel
2025-06-24Print member expression correctlyMel
2025-06-24Parse named arguments, thus enabling type constructionsMel
2025-06-15Fix disambiguation check between no-return function body & function returning...Mel
2025-06-15Fully parse variant & class typesMel
2025-06-15`void` for parameter-less functions (I keep forgetting I'm not writing C++ an...Mel
2025-06-15Remove confusion between function body and function with inline struct as ret...Mel
2025-06-15Shift `type` keyword in type declarations to right-hand assign side, for symm...Mel
2025-06-14Prevent mmap of empty fileMel
2025-06-14Bare-declaration parsing and `for` and `while` for loopsMel
2025-06-14Don't choke on \n followed by EOFMel
2025-06-14Disambiguate variable declaration and call/array access syntax with `var` + `...Mel
2025-06-12Fix `failure()` colors + stream flush, define ANSI escape codesMel
2025-06-12Parse most primitive types into treeMel
2025-06-03Range binary operationMel
2025-06-03Return, break, continue & defer statement parsingMel
2025-06-03Fix wrong token used in `parse_expression_primary_group`Mel
2025-06-03Parse and lex ++, --, ** operators, with prefix and postfix handlingMel
2025-06-03Parse all 4 types of for-loopsMel
2025-06-01Function literal expressionsMel
2025-06-01Parse if/else if/else statementsMel
2025-05-31Parse blocks of statements as nodeMel
2025-05-31Skip all statement ending tokens in one `parse_statement` iterationMel
2025-05-31Keyword-less variable declaration parsingMel
2025-05-24Failure when default case reached in non-optional switch functionsMel
2025-05-24Correctly interpret all assignment operator expression variationsMel
w"> mesh.indices().size(), mesh.attributes().size()}; } uint32_t Binder::create_vao() { GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao); return vao; } void Binder::unbind_vao() { glBindVertexArray(0); } void Binder::store_indices(const uint32_t* indices, size_t indices_size) { GLuint ebo; glGenBuffers(1, &ebo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_size * sizeof(float), indices, GL_STATIC_DRAW); } void Binder::store_in_attribute_list(uint32_t attribute, int attribute_size, int type_size, const void* data, long data_size) { assert(type_size == sizeof(float)); GLuint vbo; glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, data_size * attribute_size * type_size, data, GL_STATIC_DRAW); glVertexAttribPointer(attribute, attribute_size, GL_FLOAT, GL_FALSE, attribute_size * type_size, nullptr); glBindBuffer(GL_ARRAY_BUFFER, 0); } void BindableMesh::bind() const { glBindVertexArray(m_vao); for (int i = 0; i < m_attribute_count; i++) { glEnableVertexAttribArray(i); } } void BindableMesh::unbind() const { glBindVertexArray(0); for (int i = 0; i < m_attribute_count; i++) { glDisableVertexAttribArray(i); } } bool BindableMesh::has_indices() const { return m_has_indices; } size_t BindableMesh::size() const { return m_vertex_count; } }