-/*
- * Same principle except this one allocates memory and writes the lno(optional) and the dat file
- * directly out to allocated memory. Which is actually very useful for the future library support
- * we're going to add.
- */
-#if 0
-static bool code_write_memory(code_t *code, uint8_t **datmem, size_t *sizedat, uint8_t **lnomem, size_t *sizelno) GMQCC_UNUSED {
- prog_header_t code_header;
- uint32_t offset = 0;
-
- if (!datmem)
- return false;
-
- code_create_header(code, &code_header, "<<memory>>", "<<memory>>");
-
- #define WRITE_CHUNK(C,X,S) \
- do { \
- memcpy((void*)(&(*C)[offset]), (const void*)(X), (S)); \
- offset += (S); \
- } while (0)
-
- /* Calculate size required to store entire file out to memory */
- if (lnomem) {
- uint32_t version = 1;
-
- *sizelno = code_size_debug(code, &code_header);
- *lnomem = (uint8_t*)mem_a(*sizelno);
-
- WRITE_CHUNK(lnomem, "LNOF", 4);
- WRITE_CHUNK(lnomem, &version, sizeof(version));
- WRITE_CHUNK(lnomem, &code_header.defs.length, sizeof(code_header.defs.length));
- WRITE_CHUNK(lnomem, &code_header.globals.length, sizeof(code_header.globals.length));
- WRITE_CHUNK(lnomem, &code_header.fields.length, sizeof(code_header.fields.length));
- WRITE_CHUNK(lnomem, &code_header.statements.length, sizeof(code_header.statements.length));
-
- /* something went terribly wrong */
- if (offset != *sizelno) {
- mem_d(*lnomem);
- *sizelno = 0;
- return false;
- }
- offset = 0;
- }
-
- /* Write out the dat */
- *sizedat = code_size_binary(code, &code_header);
- *datmem = (uint8_t*)mem_a(*sizedat);
-
- WRITE_CHUNK(datmem, &code_header, sizeof(prog_header_t));
- WRITE_CHUNK(datmem, code->statements, sizeof(prog_section_statement_t) * vec_size(code->statements));
- WRITE_CHUNK(datmem, code->defs, sizeof(prog_section_def_t) * vec_size(code->defs));
- WRITE_CHUNK(datmem, code->fields, sizeof(prog_section_field_t) * vec_size(code->fields));
- WRITE_CHUNK(datmem, code->functions, sizeof(prog_section_function_t) * vec_size(code->functions));
- WRITE_CHUNK(datmem, code->globals, sizeof(int32_t) * vec_size(code->globals));
- WRITE_CHUNK(datmem, code->chars, 1 * vec_size(code->chars));
-
- vec_free(code->statements);
- vec_free(code->linenums);
- vec_free(code->columnnums);
- vec_free(code->defs);
- vec_free(code->fields);
- vec_free(code->functions);
- vec_free(code->globals);
- vec_free(code->chars);
-
- util_htdel(code->string_cache);
- mem_d(code);
- code_stats("<<memory>>", (lnomem) ? "<<memory>>" : NULL, code, &code_header);
- return true;
-}
-#endif /*!#if 0 reenable when ready to be used */
-#undef WRITE_CHUNK
-