/*
Warning! This is a modified version of original sources!
To sum up:
- all include files and C sources were merged in a single file
- existing logs were removed (except error logs)
- main were removed and wrapper added
*/
#ifndef ALREADY_INCLUDED_CALLBACK
#define ALREADY_INCLUDED_CALLBACK
/*
* Copyright (c) 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
typedef int cb_cmp(const void *a, const void *b);
typedef void cb_free(void *a);
typedef void cb_fprint(FILE *f, const void *a);
#endif
#ifndef INCLUDED_INT
#define INCLUDED_INT
/*
* Copyright (c) 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
typedef signed char i8;
typedef signed short int i16;
typedef signed int i32;
typedef unsigned char u8;
typedef unsigned short int u16;
typedef unsigned int u32;
#endif
#ifndef ALREADY_INCLUDED_PROGRESS
#define ALREADY_INCLUDED_PROGRESS
/*
* Copyright (c) 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
struct progress
{
char *msg;
float factor;
int offset;
int last;
};
void progress_init(struct progress p[1], char *msg, int start, int end);
void progress_bump(struct progress p[1], int pos);
void progress_free(struct progress p[1]);
#endif
#ifndef ALREADY_INCLUDED_CHUNKPOOL
#define ALREADY_INCLUDED_CHUNKPOOL
/*
* Copyright (c) 2003 -2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
#define CHUNKPOOL_CHUNKS_MAX 64
struct chunkpool {
int chunk_size;
int chunk;
int chunk_pos;
int chunk_max;
void *chunks[64];
};
void
chunkpool_init(struct chunkpool *ctx, int size);
void
chunkpool_free(struct chunkpool *ctx);
void chunkpool_free2(struct chunkpool *ctx, cb_free *f);
void *
chunkpool_malloc(struct chunkpool *ctx);
void *
chunkpool_calloc(struct chunkpool *ctx);
#endif
#ifndef ALREADY_INCLUDED_MATCH
#define ALREADY_INCLUDED_MATCH
/*
* Copyright (c) 2002 - 2005, 2013 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
struct match {
unsigned short int offset;
unsigned short int len;
struct match *next;
};
typedef struct match match[1];
typedef struct match *matchp;
typedef const struct match *const_matchp;
struct pre_calc {
struct match_node *single;
const struct match *cache;
};
struct match_ctx {
struct chunkpool m_pool[1];
struct pre_calc (*info)[1];
unsigned short int *rle;
unsigned short int *rle_r;
const unsigned char *buf;
int len;
int max_offset;
int max_len;
};
typedef struct match_ctx match_ctx[1];
typedef struct match_ctx *match_ctxp;
//void match_ctx_init(match_ctx ctx, /* IN/OUT */ struct membuf *inbuf, /* IN */ int max_len, /* IN */ int max_offset, /* IN */ int use_imprecise_rle); /* IN */
void match_ctx_free(match_ctx ctx); /* IN/OUT */
/* this needs to be called with the indexes in
* reverse order */
const_matchp matches_get(match_ctx ctx, /* IN/OUT */
int index); /* IN */
void match_delete(match_ctx ctx, /* IN/OUT */
matchp mp); /* IN */
struct matchp_cache_enum {
match_ctxp ctx;
const_matchp next;
match tmp1;
match tmp2;
int pos;
};
typedef struct matchp_cache_enum matchp_cache_enum[1];
typedef struct matchp_cache_enum *matchp_cache_enump;
void matchp_cache_get_enum(match_ctx ctx, /* IN */
matchp_cache_enum mpce); /* IN/OUT */
typedef const_matchp matchp_enum_get_next_f(void *matchp_enum); /* IN/OUT */
const_matchp matchp_cache_enum_get_next(void *matchp_cache_enum); /* IN */
#endif
#ifndef ALREADY_INCLUDED_OUTPUT
#define ALREADY_INCLUDED_OUTPUT
/*
* Copyright (c) 2002 - 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
struct _output_ctx {
unsigned int bitbuf;
int pos;
int start;
struct membuf *buf;
};
typedef struct _output_ctx output_ctx[1];
typedef struct _output_ctx *output_ctxp;
void output_ctx_init(output_ctx ctx, struct membuf *out); /* IN/OUT */
unsigned int output_get_pos(output_ctx ctx); /* IN */
void output_byte(output_ctx ctx, /* IN/OUT */
unsigned char byte); /* IN */
void output_word(output_ctx ctx, /* IN/OUT */
unsigned short int word); /* IN */
void output_bits_flush(output_ctx ctx); /* IN/OUT */
void output_bits(output_ctx ctx, /* IN/OUT */
int count, /* IN */
int val); /* IN */
void output_gamma_code(output_ctx ctx, /* IN/OUT */
int code); /* IN */
#endif
#ifndef ALREADY_INCLUDED_SEARCH
#define ALREADY_INCLUDED_SEARCH
/*
* Copyright (c) 2002 - 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
struct _search_node {
int index;
match match;
unsigned int total_offset;
float total_score;
struct _search_node *prev;
};
typedef struct _search_node search_node[1];
typedef struct _search_node *search_nodep;
typedef const struct _search_node *const_search_nodep;
struct _encode_match_data {
output_ctxp out;
void *priv;
};
typedef struct _encode_match_data encode_match_data[1];
typedef struct _encode_match_data *encode_match_datap;
/* example of what may be used for priv data
* field in the encode_match_data struct */
typedef
float encode_int_f(int val, void *priv, output_ctxp out); /* IN */
struct _encode_match_priv {
int lit_num;
int seq_num;
int rle_num;
float lit_bits;
float seq_bits;
float rle_bits;
encode_int_f *offset_f;
encode_int_f *len_f;
void *offset_f_priv;
void *len_f_priv;
output_ctxp out;
};
typedef struct _encode_match_priv encode_match_priv[1];
typedef struct _encode_match_priv *encode_match_privp;
/* end of example */
typedef
float encode_match_f(const_matchp mp, encode_match_data emd); /* IN */
void search_node_dump(search_nodep snp); /* IN */
void search_node_free(search_nodep snp); /* IN/OUT */
search_nodep search_buffer(match_ctx ctx, /* IN */
encode_match_f * f, /* IN */
encode_match_data emd,
int use_literal_sequences); /* IN */
struct _matchp_snp_enum {
const_search_nodep startp;
const_search_nodep currp;
};
typedef struct _matchp_snp_enum matchp_snp_enum[1];
typedef struct _matchp_snp_enum *matchp_snp_enump;
void matchp_snp_get_enum(const_search_nodep snp, /* IN */
matchp_snp_enum snpe); /* IN/OUT */
const_matchp matchp_snp_enum_get_next(void *matchp_snp_enum);
#endif
#ifndef ALREADY_INCLUDED_RADIX
#define ALREADY_INCLUDED_RADIX
/*
* Copyright (c) 2002, 2003 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software, alter it and re-
* distribute it freely for any non-commercial, non-profit purpose subject to
* the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any distribution.
*
* 4. The names of this software and/or it's copyright holders may not be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
*/
typedef struct _radix_node *radix_nodep;
struct _radix_root {
int depth;
radix_nodep root;
struct chunkpool mem[1];
};
typedef struct _radix_root radix_root[1];
typedef struct _radix_root *radix_rootp;
typedef void free_callback(void *data, void *priv);
/* *f will be called even for null pointers */
void radix_tree_free(radix_root rr, /* IN */
free_callback * f, /* IN */
void *priv); /* IN */
void radix_tree_init(radix_root rr); /* IN */
void radix_node_set(radix_root rr, /* IN */
unsigned int index, /* IN */
void *data); /* IN */
void *radix_node_get(radix_root rr, /* IN */
unsigned int index); /* IN */
#endif
#ifndef MEMBUF_IO_ALREADY_INCLUDED
#define MEMBUF_IO_ALREADY_INCLUDED
/*
* Copyright (c) 2005 Magnus Lind.
*
* This software is provided 'as-is', without any express or implied warranty.
Lines 1–500 of 4941. Load more
/* Warning! This is a modified version of original sources! To sum up: - all include files and C sources were merged in a single file - existing logs were removed (except error logs) - main were removed and wrapper added */ #ifndef ALREADY_INCLUDED_CALLBACK #define ALREADY_INCLUDED_CALLBACK /* * Copyright (c) 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ typedef int cb_cmp(const void *a, const void *b); typedef void cb_free(void *a); typedef void cb_fprint(FILE *f, const void *a); #endif #ifndef INCLUDED_INT #define INCLUDED_INT /* * Copyright (c) 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ typedef signed char i8; typedef signed short int i16; typedef signed int i32; typedef unsigned char u8; typedef unsigned short int u16; typedef unsigned int u32; #endif #ifndef ALREADY_INCLUDED_PROGRESS #define ALREADY_INCLUDED_PROGRESS /* * Copyright (c) 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ struct progress { char *msg; float factor; int offset; int last; }; void progress_init(struct progress p[1], char *msg, int start, int end); void progress_bump(struct progress p[1], int pos); void progress_free(struct progress p[1]); #endif #ifndef ALREADY_INCLUDED_CHUNKPOOL #define ALREADY_INCLUDED_CHUNKPOOL /* * Copyright (c) 2003 -2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ #define CHUNKPOOL_CHUNKS_MAX 64 struct chunkpool { int chunk_size; int chunk; int chunk_pos; int chunk_max; void *chunks[64]; }; void chunkpool_init(struct chunkpool *ctx, int size); void chunkpool_free(struct chunkpool *ctx); void chunkpool_free2(struct chunkpool *ctx, cb_free *f); void * chunkpool_malloc(struct chunkpool *ctx); void * chunkpool_calloc(struct chunkpool *ctx); #endif #ifndef ALREADY_INCLUDED_MATCH #define ALREADY_INCLUDED_MATCH /* * Copyright (c) 2002 - 2005, 2013 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ struct match { unsigned short int offset; unsigned short int len; struct match *next; }; typedef struct match match[1]; typedef struct match *matchp; typedef const struct match *const_matchp; struct pre_calc { struct match_node *single; const struct match *cache; }; struct match_ctx { struct chunkpool m_pool[1]; struct pre_calc (*info)[1]; unsigned short int *rle; unsigned short int *rle_r; const unsigned char *buf; int len; int max_offset; int max_len; }; typedef struct match_ctx match_ctx[1]; typedef struct match_ctx *match_ctxp; //void match_ctx_init(match_ctx ctx, /* IN/OUT */ struct membuf *inbuf, /* IN */ int max_len, /* IN */ int max_offset, /* IN */ int use_imprecise_rle); /* IN */ void match_ctx_free(match_ctx ctx); /* IN/OUT */ /* this needs to be called with the indexes in * reverse order */ const_matchp matches_get(match_ctx ctx, /* IN/OUT */ int index); /* IN */ void match_delete(match_ctx ctx, /* IN/OUT */ matchp mp); /* IN */ struct matchp_cache_enum { match_ctxp ctx; const_matchp next; match tmp1; match tmp2; int pos; }; typedef struct matchp_cache_enum matchp_cache_enum[1]; typedef struct matchp_cache_enum *matchp_cache_enump; void matchp_cache_get_enum(match_ctx ctx, /* IN */ matchp_cache_enum mpce); /* IN/OUT */ typedef const_matchp matchp_enum_get_next_f(void *matchp_enum); /* IN/OUT */ const_matchp matchp_cache_enum_get_next(void *matchp_cache_enum); /* IN */ #endif #ifndef ALREADY_INCLUDED_OUTPUT #define ALREADY_INCLUDED_OUTPUT /* * Copyright (c) 2002 - 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ struct _output_ctx { unsigned int bitbuf; int pos; int start; struct membuf *buf; }; typedef struct _output_ctx output_ctx[1]; typedef struct _output_ctx *output_ctxp; void output_ctx_init(output_ctx ctx, struct membuf *out); /* IN/OUT */ unsigned int output_get_pos(output_ctx ctx); /* IN */ void output_byte(output_ctx ctx, /* IN/OUT */ unsigned char byte); /* IN */ void output_word(output_ctx ctx, /* IN/OUT */ unsigned short int word); /* IN */ void output_bits_flush(output_ctx ctx); /* IN/OUT */ void output_bits(output_ctx ctx, /* IN/OUT */ int count, /* IN */ int val); /* IN */ void output_gamma_code(output_ctx ctx, /* IN/OUT */ int code); /* IN */ #endif #ifndef ALREADY_INCLUDED_SEARCH #define ALREADY_INCLUDED_SEARCH /* * Copyright (c) 2002 - 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ struct _search_node { int index; match match; unsigned int total_offset; float total_score; struct _search_node *prev; }; typedef struct _search_node search_node[1]; typedef struct _search_node *search_nodep; typedef const struct _search_node *const_search_nodep; struct _encode_match_data { output_ctxp out; void *priv; }; typedef struct _encode_match_data encode_match_data[1]; typedef struct _encode_match_data *encode_match_datap; /* example of what may be used for priv data * field in the encode_match_data struct */ typedef float encode_int_f(int val, void *priv, output_ctxp out); /* IN */ struct _encode_match_priv { int lit_num; int seq_num; int rle_num; float lit_bits; float seq_bits; float rle_bits; encode_int_f *offset_f; encode_int_f *len_f; void *offset_f_priv; void *len_f_priv; output_ctxp out; }; typedef struct _encode_match_priv encode_match_priv[1]; typedef struct _encode_match_priv *encode_match_privp; /* end of example */ typedef float encode_match_f(const_matchp mp, encode_match_data emd); /* IN */ void search_node_dump(search_nodep snp); /* IN */ void search_node_free(search_nodep snp); /* IN/OUT */ search_nodep search_buffer(match_ctx ctx, /* IN */ encode_match_f * f, /* IN */ encode_match_data emd, int use_literal_sequences); /* IN */ struct _matchp_snp_enum { const_search_nodep startp; const_search_nodep currp; }; typedef struct _matchp_snp_enum matchp_snp_enum[1]; typedef struct _matchp_snp_enum *matchp_snp_enump; void matchp_snp_get_enum(const_search_nodep snp, /* IN */ matchp_snp_enum snpe); /* IN/OUT */ const_matchp matchp_snp_enum_get_next(void *matchp_snp_enum); #endif #ifndef ALREADY_INCLUDED_RADIX #define ALREADY_INCLUDED_RADIX /* * Copyright (c) 2002, 2003 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty. * In no event will the authors be held liable for any damages arising from * the use of this software. * * Permission is granted to anyone to use this software, alter it and re- * distribute it freely for any non-commercial, non-profit purpose subject to * the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software in a * product, an acknowledgment in the product documentation would be * appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must not * be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any distribution. * * 4. The names of this software and/or it's copyright holders may not be * used to endorse or promote products derived from this software without * specific prior written permission. * */ typedef struct _radix_node *radix_nodep; struct _radix_root { int depth; radix_nodep root; struct chunkpool mem[1]; }; typedef struct _radix_root radix_root[1]; typedef struct _radix_root *radix_rootp; typedef void free_callback(void *data, void *priv); /* *f will be called even for null pointers */ void radix_tree_free(radix_root rr, /* IN */ free_callback * f, /* IN */ void *priv); /* IN */ void radix_tree_init(radix_root rr); /* IN */ void radix_node_set(radix_root rr, /* IN */ unsigned int index, /* IN */ void *data); /* IN */ void *radix_node_get(radix_root rr, /* IN */ unsigned int index); /* IN */ #endif #ifndef MEMBUF_IO_ALREADY_INCLUDED #define MEMBUF_IO_ALREADY_INCLUDED /* * Copyright (c) 2005 Magnus Lind. * * This software is provided 'as-is', without any express or implied warranty.