ref: 74c414bcf0a4f33140e7ac22fbc65c32222b3dbb
parent: 5eae81300b4e025bba2aa6185be9e5a6d67861d2
author: cancel <cancel@cancel.fm>
date: Wed Nov 28 06:26:00 EST 2018
Add glue for using bank in sim
--- a/bank.c
+++ b/bank.c
@@ -21,7 +21,7 @@
void bank_deinit(Bank* bank) { free(bank->data); }
void bank_enlarge_to(Bank* bank, Usz bytes) {
- Usz new_cap = orca_round_up_power2(bytes);
+ Usz new_cap = bytes < 256 ? 256 : orca_round_up_power2(bytes);
bank->data = realloc(bank->data, new_cap);
bank->capacity = new_cap;
}
--- a/bank.h
+++ b/bank.h
@@ -1,3 +1,4 @@
+#pragma once
#include "base.h"
typedef struct {
--- a/cli_main.c
+++ b/cli_main.c
@@ -1,3 +1,4 @@
+#include "bank.h"
#include "base.h"
#include "field.h"
#include "mark.h"
@@ -97,10 +98,13 @@
Markmap_reusable markmap_r;
markmap_reusable_init(&markmap_r);
markmap_reusable_ensure_size(&markmap_r, field.height, field.width);
+ Bank bank;
+ bank_init(&bank);
for (int i = 0; i < ticks; ++i) {
- orca_run(field.buffer, markmap_r.buffer, field.height, field.width);
+ orca_run(field.buffer, markmap_r.buffer, field.height, field.width, &bank);
}
markmap_reusable_deinit(&markmap_r);
+ bank_deinit(&bank);
field_fput(&field, stdout);
field_deinit(&field);
return 0;
--- a/sim.c
+++ b/sim.c
@@ -368,7 +368,9 @@
oper_phase1_##_oper_name(gbuf, mbuf, height, width, iy, ix, glyph_char); \
break;
-static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+static void sim_phase_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
+ Bank* bank) {
+ (void)bank;
for (Usz iy = 0; iy < height; ++iy) {
Glyph* glyph_row = gbuf + iy * width;
for (Usz ix = 0; ix < width; ++ix) {
@@ -385,7 +387,9 @@
}
}
-static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width,
+ Bank* bank) {
+ (void)bank;
for (Usz iy = 0; iy < height; ++iy) {
Glyph* glyph_row = gbuf + iy * width;
for (Usz ix = 0; ix < width; ++ix) {
@@ -403,8 +407,8 @@
}
}
-void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) {
+void orca_run(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width, Bank* bank) {
mbuffer_clear(mbuf, height, width);
- sim_phase_0(gbuf, mbuf, height, width);
- sim_phase_1(gbuf, mbuf, height, width);
+ sim_phase_0(gbuf, mbuf, height, width, bank);
+ sim_phase_1(gbuf, mbuf, height, width, bank);
}
--- a/sim.h
+++ b/sim.h
@@ -1,5 +1,6 @@
#pragma once
+#include "bank.h"
#include "base.h"
#include "mark.h"
-void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width);
+void orca_run(Gbuffer gbuf, Mbuffer markmap, Usz height, Usz width, Bank* bank);