195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#!/bin/sh 295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleycat > lhash_macros.h << EOF 495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley/* Copyright (c) 2014, Google Inc. 595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * 695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * Permission to use, copy, modify, and/or distribute this software for any 795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * purpose with or without fee is hereby granted, provided that the above 895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * copyright notice and this permission notice appear in all copies. 995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * 1095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 1395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 1595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 1695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ 1795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 1895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#if !defined(IN_LHASH_H) 1995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#error "Don't include this file directly. Include lhash.h" 2095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#endif 2195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 2295c29f3cd1f6c08c6c0927868683392eea727ccAdam LangleyEOF 2395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 2495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleyoutput_lhash () { 2595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley type=$1 2695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 2795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley cat >> lhash_macros.h << EOF 2895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley/* ${type} */ 2995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_new(hash, comp)\\ 3095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley((LHASH_OF(${type})*) lh_new(CHECKED_CAST(lhash_hash_func, uint32_t (*) (const ${type} *), hash), CHECKED_CAST(lhash_cmp_func, int (*) (const ${type} *a, const ${type} *b), comp))) 3195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 3295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_free(lh)\\ 3395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley lh_free(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh)); 3495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 3595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_num_items(lh)\\ 3695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley lh_num_items(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh)) 3795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 3895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_retrieve(lh, data)\\ 3995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley ((${type}*) lh_retrieve(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh), CHECKED_CAST(void*, ${type}*, data))) 4095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 4195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_insert(lh, old_data, data)\\ 4295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley lh_insert(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh), CHECKED_CAST(void**, ${type}**, old_data), CHECKED_CAST(void*, ${type}*, data)) 4395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 4495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_delete(lh, data)\\ 4595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley ((${type}*) lh_delete(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh), CHECKED_CAST(void*, ${type}*, data))) 4695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 4795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_doall(lh, func)\\ 4895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley lh_doall(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh), CHECKED_CAST(void (*)(void*), void (*) (${type}*), func)); 4995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 5095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley#define lh_${type}_doall_arg(lh, func, arg)\\ 5195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley lh_doall_arg(CHECKED_CAST(_LHASH*, LHASH_OF(${type})*, lh), CHECKED_CAST(void (*)(void*, void*), void (*) (${type}*, void*), func), arg); 5295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 5395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 5495c29f3cd1f6c08c6c0927868683392eea727ccAdam LangleyEOF 5595c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley} 5695c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 5795c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleylhash_types=$(cat lhash.h | grep '^ \* LHASH_OF:' | sed -e 's/.*LHASH_OF://' -e 's/ .*//') 5895c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 5995c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleyfor type in $lhash_types; do 6095c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley echo Hash of ${type} 6195c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley output_lhash "${type}" 6295c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleydone 6395c29f3cd1f6c08c6c0927868683392eea727ccAdam Langley 6495c29f3cd1f6c08c6c0927868683392eea727ccAdam Langleyclang-format -i lhash_macros.h 65