mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-17 23:20:42 +01:00
As it seems, different C compilers have different rules/interpretations on inline functions. The current code base did not properly obey all C99 rules. We fix this by converting some functions to macros and others to include the necessary C99 plumbing. We also remove some inline attributes for functions where this seems to be to agressive (aka "function to big"). This fixes build problems in some environments and is a general code cleanup measure.
76 lines
2.7 KiB
C
76 lines
2.7 KiB
C
/* Copyright (C) 2002, 2004 Christopher Clark <firstname.lastname@cl.cam.ac.uk> */
|
|
|
|
#ifndef __HASHTABLE_PRIVATE_CWC22_H__
|
|
#define __HASHTABLE_PRIVATE_CWC22_H__
|
|
|
|
#include "hashtable.h"
|
|
|
|
/*****************************************************************************/
|
|
struct entry
|
|
{
|
|
void *k, *v;
|
|
unsigned int h;
|
|
struct entry *next;
|
|
};
|
|
|
|
struct hashtable {
|
|
unsigned int tablelength;
|
|
struct entry **table;
|
|
unsigned int entrycount;
|
|
unsigned int loadlimit;
|
|
unsigned int primeindex;
|
|
unsigned int (*hashfn) (void *k);
|
|
int (*eqfn) (void *k1, void *k2);
|
|
void (*dest) (void *v); /* destructor for values, if NULL use free() */
|
|
};
|
|
|
|
/*****************************************************************************/
|
|
unsigned int
|
|
hash(struct hashtable *h, void *k);
|
|
|
|
/*****************************************************************************/
|
|
/* indexFor */
|
|
#define indexFor(tablelength, hashvalue) ((hashvalue) % (tablelength))
|
|
|
|
|
|
/*****************************************************************************/
|
|
#define freekey(X) free(X)
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
#endif /* __HASHTABLE_PRIVATE_CWC22_H__*/
|
|
|
|
/*
|
|
* Copyright (c) 2002, Christopher Clark
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* * Neither the name of the original author; nor the names of any contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
|
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|