cvx
Loading...
Searching...
No Matches
core.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include "flags.h"

Go to the source code of this file.

Data Structures

struct  cvx_container
 

Macros

#define CVX__(A, B)   A##B
 
#define CVX_(A, B)   CVX__(A, B)
 
#define VTABLE(X)   CVX_(X, _vtable)
 
#define GLOBAL_VTABLE(SNAME, X, NAME)   CVX_(CVX_(CVX_(cvx_vtables_, SNAME), X), NAME)
 
#define CVX_VTAB_COMP(name, T)   int (*name)(T, T)
 
#define CVX_VTAB_COPY(name, T)   T (*name)(T)
 
#define CVX_VTAB_DROP(name, T)   void (*name)(T)
 
#define CVX_VTAB_HASH(name, T)   size_t (*name)(T)
 
#define CVX_VTAB_PRIO(name, T)   int (*name)(T, T)
 
#define CVX_VTAB_DEFINITION(T)
 
#define CVX_ITER_TAG_MULT   100
 
#define CVX_BUFFER_GROWTH_RATE   1.5
 
#define CVX_BUFFER_MIN_SIZE   8
 
#define CVX_CONTAINER_GUARDS(TAG, _col_, error_value)
 

Typedefs

typedef struct cvx_container cvx_container
 

Enumerations

enum  cvx_heap_order { CVX_MAX_HEAP = 1 , CVX_MIN_HEAP = -1 }
 enum cvx_heap_order More...
 

Macro Definition Documentation

◆ CVX_

#define CVX_ (   A,
 
)    CVX__(A, B)

◆ CVX__

#define CVX__ (   A,
 
)    A##B

◆ CVX_BUFFER_GROWTH_RATE

#define CVX_BUFFER_GROWTH_RATE   1.5

◆ CVX_BUFFER_MIN_SIZE

#define CVX_BUFFER_MIN_SIZE   8

◆ CVX_CONTAINER_GUARDS

#define CVX_CONTAINER_GUARDS (   TAG,
  _col_,
  error_value 
)
Value:
if (_col_->tag != TAG) \
{ \
_col_->flag = CVX_FLAG_WRONG_TAG; \
return error_value; \
}
@ CVX_FLAG_WRONG_TAG
Tags are checked so you don't pass the wrong struct to a function.
Definition binary_heap.h:81

◆ CVX_ITER_TAG_MULT

#define CVX_ITER_TAG_MULT   100

◆ CVX_VTAB_COMP

#define CVX_VTAB_COMP (   name,
 
)    int (*name)(T, T)

◆ CVX_VTAB_COPY

#define CVX_VTAB_COPY (   name,
 
)    T (*name)(T)

◆ CVX_VTAB_DEFINITION

#define CVX_VTAB_DEFINITION (   T)
Value:
CVX_VTAB_COMP(comp, T); \
CVX_VTAB_COPY(clone, T); \
CVX_VTAB_DROP(drop, T); \
CVX_VTAB_HASH(hash, T); \
CVX_VTAB_PRIO(prio, T);
#define CVX_VTAB_COMP(name, T)
Definition core.h:15

◆ CVX_VTAB_DROP

#define CVX_VTAB_DROP (   name,
 
)    void (*name)(T)

◆ CVX_VTAB_HASH

#define CVX_VTAB_HASH (   name,
 
)    size_t (*name)(T)

◆ CVX_VTAB_PRIO

#define CVX_VTAB_PRIO (   name,
 
)    int (*name)(T, T)

◆ GLOBAL_VTABLE

#define GLOBAL_VTABLE (   SNAME,
  X,
  NAME 
)    CVX_(CVX_(CVX_(cvx_vtables_, SNAME), X), NAME)

◆ VTABLE

#define VTABLE (   X)    CVX_(X, _vtable)

Typedef Documentation

◆ cvx_container

typedef struct cvx_container cvx_container

Enumeration Type Documentation

◆ cvx_heap_order

enum cvx_heap_order

Defines the two possible heaps:

  • Max Heap has the greatest element at the top
  • Min Heap has the smallest element at the top
Enumerator
CVX_MAX_HEAP 
CVX_MIN_HEAP