blankart/src/m_aatree.h
Eidolon d08b923f06 Merge branch 'extern-c-everything' into 'master'
Add extern "C" in C++ to all headers

See merge request KartKrew/Kart!842
2024-10-15 14:14:43 -04:00

48 lines
1.5 KiB
C

// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2020 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file m_aatree.h
/// \brief AA trees code
#ifndef __M_AATREE__
#define __M_AATREE__
#include "doomtype.h"
#ifdef __cplusplus
extern "C" {
#endif
// Flags for AA trees.
#define AATREE_ZUSER 1 // Treat values as z_zone-allocated blocks and set their user fields
typedef void (*aatree_iter_t)(INT32 key, void *value);
typedef struct aatree_iterator_s aatree_iterator_t;
aatree_t *M_AATreeAlloc(UINT32 flags);
void M_AATreeFree(aatree_t *aatree);
void M_AATreeSet(aatree_t *aatree, INT32 key, void* value);
void *M_AATreeGet(aatree_t *aatree, INT32 key);
boolean M_AATreeEmpty(aatree_t *aatree);
size_t M_AATreeSize(aatree_t *aatree);
void M_AATreeIterate(aatree_t *aatree, aatree_iter_t callback);
aatree_iterator_t *M_AATreeBegin(aatree_t *aatree);
aatree_iterator_t *M_AATreeRBegin(aatree_t *aatree);
void *M_AATreeIteratorNext(aatree_iterator_t *iterator);
INT32 M_AATreeIteratorKey(aatree_iterator_t *iterator);
void *M_AATreeIteratorValue(aatree_iterator_t *iterator);
void M_AATreeIteratorClose(aatree_iterator_t *iterator);
#ifdef __cplusplus
} // extern "C"
#endif
#endif