mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-18 01:00:26 +02:00
80 lines
1.9 KiB
C
80 lines
1.9 KiB
C
/*
|
|
DATA.H
|
|
|
|
header included in hcex build.
|
|
*/
|
|
|
|
#ifndef __DATA_H
|
|
#define __DATA_H
|
|
#pragma once
|
|
|
|
/* ---------- headers */
|
|
|
|
#include "tag_files.h"
|
|
|
|
/* ---------- constants */
|
|
|
|
/* ---------- macros */
|
|
|
|
/* ---------- structures */
|
|
|
|
struct data_array
|
|
{
|
|
char name[TAG_STRING_LENGTH+1];
|
|
short maximum_count;
|
|
short size;
|
|
boolean valid;
|
|
boolean identifier_zero_invalid;
|
|
unsigned long signature;
|
|
short first_free_absolute_index;
|
|
short count;
|
|
short actual_count;
|
|
short next_identifier;
|
|
void *data;
|
|
};
|
|
|
|
struct datum_header
|
|
{
|
|
short identifier;
|
|
};
|
|
|
|
struct data_iterator
|
|
{
|
|
struct data_array *data;
|
|
short absolute_index;
|
|
short pad;
|
|
long datum_index;
|
|
unsigned long signature;
|
|
};
|
|
|
|
typedef char data_iterator_size_assert[
|
|
sizeof(struct data_iterator) == 0x10 ? 1 : -1];
|
|
|
|
/* ---------- prototypes/DATA.C */
|
|
|
|
long data_allocation_size(short maximum_count, short size);
|
|
void data_initialize(struct data_array *data, const char *name, short maximum_count, short size);
|
|
void *datum_try_and_get(struct data_array *data, long index);
|
|
void data_verify(struct data_array *data);
|
|
void *datum_get(struct data_array *data, long index);
|
|
struct data_array *data_new(const char *name, short maximum_count, short size);
|
|
void data_dispose(struct data_array *data);
|
|
void data_make_invalid(struct data_array *data);
|
|
long datum_new_at_index(struct data_array *data, long index);
|
|
long datum_new(struct data_array *data);
|
|
void datum_delete(struct data_array *data, long index);
|
|
void data_delete_all(struct data_array *data);
|
|
void data_iterator_new(struct data_iterator *iterator, struct data_array *data);
|
|
void *data_iterator_next(struct data_iterator *iterator);
|
|
long data_next_index(struct data_array *data, long index);
|
|
long data_prev_index(struct data_array *data, long index);
|
|
void data_compact(struct data_array *data);
|
|
void data_make_valid(struct data_array *data);
|
|
|
|
|
|
/* ---------- globals */
|
|
|
|
/* ---------- public code */
|
|
|
|
#endif // __DATA_H
|