Files
qt6-migration-pipeline/external/rti_connext_dds-7.7.0/include/ndds/reda/reda_hash.h
T
torstenandCopilot 342ffd3e5c Update submodule to latest BUILD_RTI fixes
- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten
- svcTabCommon: Export-Header-Fix via Fallback-Target
- TrainingAreaBase: Stub-Header für BUILD_RTI=OFF
- ddsfts: Include-Pfad und Dependency-Fixes
- BUILD_RTI=OFF Compilation vollständig unterstützt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
2026-08-21 19:30:20 +02:00

216 lines
6.0 KiB
C

/*
* (c) Copyright, Real-Time Innovations, 2002-2026.
* All rights reserved.
* No duplications, whole or partial, manual or electronic, may be made
* without express written permission. Any such copies, or
* revisions thereof, must display this notice unaltered.
* This code contains trade secrets of Real-Time Innovations, Inc.
*/
#ifndef reda_hash_h
#define reda_hash_h
#include "reda/reda_dll.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Doxygen file & module documentation ==================================*/
/*e \file
* \brief Defines a hashing capability
*/
/*e \defgroup REDAHashClass REDAHash
* \ingroup REDAModule
*
* @brief hashing prototypes and built-in hash functions.
*
* They are used when creating a \ref REDATable either directly or through
* the \ref REDADatabase.
*/
/*e \ingroup REDAHashClass
* @brief The prototype of a hash function. Such a function takes a key and
* returns a number between 0 and numberOfBuckets-1.
*/
typedef int (*REDAHashFunction)(const void *key, int numberOfBuckets);
/*e \ingroup REDAHashClass
* @brief This structure consists of a hash-function and the number of buckets.
*
* NumerOfBuckets must be larger or equal to 1. The hash-function
* must return an int between 0 and the numberOfBuckets-1.
*/
struct REDAHashDefinition {
/*e Hash function. Must reutrn a int between 0 and the numberOfBuckets-1.
*/
REDAHashFunction hashFunction;
/*e number of buckets. Must be larger or equal to 1. */
int numberOfBuckets;
};
/*e \ingroup REDAHashClass
*
* @brief Hashes a keys interpreted as pointers to int[1].
*
* This function is suitable to be used as a
* hash function when the keys are of type int[1] or
* can be hashed as if they where of such type.
*
* @param key \In. The key to hash interpeted as an int*. Can't be NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashSimpleInt(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
* @brief Hashes a keys interpreted as pointers to int[2].
*
* This function is suitable to be used as a
* hash function when the keys are of type int[2] or
* can be hashed as if they where of such type.
*
* @param key \In. The key to hash interpeted as an int[2]. Can't be NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashSimpleDoubleInt(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
*@brief Hashes a key interpreted as pointers to int[3].
*
* This function is suitable to be used as a
* hash function when the keys are of type int[3] or
* can be hashed as if they where of such type.
*
* @param key \In. The key to hash interpeted as an int[3]. Can't be NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
*@exception none
*
*@mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashSimpleTripleInt(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
* @brief Hashes a key interpreted as pointers to int[4].
*
* This function is suitable to be used as a
* hash function when the keys are of type int[4] or
* can be hashed as if they where of such type.
*
* @param key \In. The key to hash interpeted as an int[4]. Can't be NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashSimpleQuadInt(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
* @brief Hashes a key interpreted as pointers to int[5].
*
* This function is suitable to be used as a
* hash function when the keys are of type int[5] or
* can be hashed as if they where of such type.
*
* @param key \In. The key to hash interpeted as an int[5]. Can't be NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashSimpleFiveInt(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
* @brief Hashes a REDAWeakReference key.
*
* @param key \In. The key to hash interpeted as REDAWeakReference. Can't be
* NULL.
*
* @param numBuckets \In. The number of buckets. The function needs
* to return an int between 0 and numBuckets-1
*
* @returns a hash of the key
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
extern REDADllExport int REDAHash_hashWeakReference(
const void *key,
int numBuckets);
/*e \ingroup REDAHashClass
*
* @brief Compute the hash function on a key given a definition of the hash.
*
* @pre hashDefinition is a valid definition (valid function pointer
* and numberOfBuckets >= 1) and the passed key is of the type
* that the hashFunction expects
*
* @post none
*
* @return the value of the hash
*
* @exception none
*
* @mtsafety safe provided that key is not modified concurrently.
*/
int REDAHash_computeHash(
struct REDAHashDefinition *hashDefinition,
const void *key);
#ifdef __cplusplus
} /* extern "C" */
#endif
/* performance boosting macros and optimizations */
#include "reda/reda_hash_impl.h"
#endif /* reda_hash_h */