#ifndef METAPROGRAM_H
#define METAPROGRAM_H

typedef struct CG_FilePair CG_FilePair;
struct CG_FilePair
{
 MD_String8 src_filename;
 FILE *h;
 FILE *c;
};

////////////////////////////////
//~ rjf: Helpers

static CG_FilePair CG_FilePairFromNode(MD_Node *node);
static FILE *CG_FileFromNodePair(MD_Node *node, CG_FilePair *pair);
static void CG_CloseAllFiles(void);
static void CG_GenerateMultilineStringAsCLiteral(FILE *file, MD_String8 string);
static MD_String8 CG_EscapedFromString(MD_Arena *arena, MD_String8 string);

////////////////////////////////
//~ rjf: Globals

static MD_Arena *cg_arena = 0;
static int cg_file_pair_count = 0;
static CG_FilePair cg_file_pairs[4096] = {0};

#endif // METAPROGRAM_H
