#ifndef GEARLANCE_H
#define GEARLANCE_H 1
#include "consts.h"
#include "rust_callbacks.h"
#include "parser.h"
enum core_action
{
core_compile_a,
core_compile_b,
core_compile_b2,
core_run,
};
union opcode
{
void *xt;
union opcode *match;
int count;
};
struct gearlance_result {
int scores[2][MAXTAPE+1];
int win_by_time[2][MAXTAPE+1];
int win_by_flag[2][MAXTAPE+1];
int win_by_tape[2][MAXTAPE+1];
unsigned long long cycles;
struct {
unsigned char tape_max[2][MAXTAPE];
unsigned heat_position[2][MAXTAPE];
} xstats;
};
extern union opcode *gearlance_core(
enum core_action act,
struct gearlance_result *result,
struct oplist *ops,
union opcode *codeA,
union opcode *codeB,
union opcode *codeB2
);
extern union opcode *cranklance_core(
enum core_action act,
struct gearlance_result *result,
struct oplist *ops,
union opcode *codeA,
union opcode *codeB,
union opcode *codeB2
);
#endif