Browse Source

Add glue for using bank in sim

master
cancel 6 years ago
parent
commit
74c414bcf0
  1. 2
      bank.c
  2. 1
      bank.h
  3. 6
      cli_main.c
  4. 14
      sim.c
  5. 3
      sim.h

2
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;
}

1
bank.h

@ -1,3 +1,4 @@
#pragma once
#include "base.h"
typedef struct {

6
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;

14
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);
}

3
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);

Loading…
Cancel
Save