From 74c414bcf0a4f33140e7ac22fbc65c32222b3dbb Mon Sep 17 00:00:00 2001 From: cancel Date: Wed, 28 Nov 2018 11:26:00 +0900 Subject: [PATCH] Add glue for using bank in sim --- bank.c | 2 +- bank.h | 1 + cli_main.c | 6 +++++- sim.c | 14 +++++++++----- sim.h | 3 ++- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/bank.c b/bank.c index 77cf240..c7dabef 100644 --- a/bank.c +++ b/bank.c @@ -21,7 +21,7 @@ void bank_init(Bank* bank) { 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; } diff --git a/bank.h b/bank.h index f3e8b12..e723ebc 100644 --- a/bank.h +++ b/bank.h @@ -1,3 +1,4 @@ +#pragma once #include "base.h" typedef struct { diff --git a/cli_main.c b/cli_main.c index 65d5774..a2f93e2 100644 --- 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 @@ int main(int argc, char** argv) { 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; diff --git a/sim.c b/sim.c index 3b12f31..3561e0b 100644 --- a/sim.c +++ b/sim.c @@ -368,7 +368,9 @@ END_PHASE 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_0(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) { } } -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 @@ static void sim_phase_1(Gbuffer gbuf, Mbuffer mbuf, Usz height, Usz width) { } } -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); } diff --git a/sim.h b/sim.h index a4b2673..2482294 100644 --- 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);