69 lines
1.1 KiB
C
69 lines
1.1 KiB
C
/*
|
|
4coder_arena.h - Preversioning
|
|
no warranty implied; use at your own risk
|
|
|
|
This software is in the public domain. Where that dedication is not
|
|
recognized, you are granted a perpetual, irrevocable license to copy,
|
|
distribute, and modify this file as you see fit.
|
|
*/
|
|
|
|
// TOP
|
|
|
|
#if !defined(FCODER_ARENA_H)
|
|
#define FCODER_ARENA_H
|
|
|
|
#if !defined(Migrating__Arena)
|
|
struct Partition{
|
|
char *base;
|
|
i32 pos;
|
|
i32 max;
|
|
};
|
|
|
|
struct Temp_Memory{
|
|
Partition *part;
|
|
i32 pos;
|
|
};
|
|
|
|
#if defined(FCODER_CUSTOM_H)
|
|
|
|
struct Partition_Chained{
|
|
Partition_Chained *prev;
|
|
Partition part;
|
|
};
|
|
|
|
struct Arena{
|
|
struct Application_Links *app;
|
|
Partition_Chained *part;
|
|
i32 chunk_size;
|
|
i32 align;
|
|
};
|
|
|
|
struct Temp_Memory_Arena{
|
|
Arena *arena;
|
|
Partition_Chained *part;
|
|
i32 pos;
|
|
};
|
|
|
|
struct Temp_Memory_Arena_Light{
|
|
Partition_Chained *part;
|
|
i32 pos;
|
|
};
|
|
|
|
struct Scratch_Block{
|
|
Scratch_Block(Application_Links *app);
|
|
~Scratch_Block();
|
|
operator Arena *();
|
|
|
|
Arena *scratch;
|
|
Temp_Memory_Arena temp;
|
|
};
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
// BOTTOM
|
|
|