ucx/ucx.h

Fri, 30 Nov 2012 21:18:13 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 30 Nov 2012 21:18:13 +0100
changeset 1
1bcaac272cdf
child 5
88625853ae74
permissions
-rw-r--r--

added existing source code

/* 
 * File:   ucx.h
 * Author: olaf
 *
 * Created on 31. Dezember 2011, 17:17
 */

#ifndef UCX_H
#define	UCX_H

#include <stdlib.h>

#ifdef	__cplusplus
#ifndef _Bool
#define _Bool bool
#define restrict
#endif
extern "C" {
#endif

#define UCX_FOREACH(type,list,elem) \
        for (type elem = list ; elem != NULL ; elem = elem->next)

#ifdef __cplusplus
#define ucx_dynarray_new(type,identifier,length)\
    type* identifier; identifier = new type[length]
#define ucx_dynarray_free(identifier) delete [] identifier
#else
#define ucx_dynarray_new(type,identifier,length)\
    type identifier[length]
#define ucx_dynarray_free(identifier)
#endif
    
/* element1,element2,custom data -> {-1,0,1} */
typedef int(*cmp_func)(void*,void*,void*);

/* element,custom data -> copy of element */
typedef void*(*copy_func)(void*,void*);

/* buffer, element size, element count, stream */
typedef size_t(*write_func)(const void*, size_t, size_t, void*);

/* buffer, element size, element count, stream */
typedef size_t(*read_func)(void*, size_t, size_t, void*);

#ifdef	__cplusplus
}
#endif

#endif	/* UCX_H */

mercurial