/usr/lib/emboss/include/enscache.h is in emboss-lib 6.6.0+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | /* @include enscache **********************************************************
**
** Ensembl Cache functions
**
** @author Copyright (C) 1999 Ensembl Developers
** @author Copyright (C) 2006 Michael K. Schuster
** @version $Revision: 1.23 $
** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
** @modified $Date: 2012/08/05 10:30:58 $ by $Author: mks $
** @@
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA 02110-1301, USA.
**
******************************************************************************/
#ifndef ENSCACHE_H
#define ENSCACHE_H
/* ========================================================================= */
/* ============================= include files ============================= */
/* ========================================================================= */
#include "ajax.h"
AJ_BEGIN_DECLS
/* ========================================================================= */
/* =============================== constants =============================== */
/* ========================================================================= */
/* @enum EnsECacheType ********************************************************
**
** Ensembl Cache Type enumeration
**
** @value ensECacheTypeNULL Null
** @value ensECacheTypeNumeric Numeric
** @value ensECacheTypeAlphaNumeric Alphanumeric
** @@
******************************************************************************/
typedef enum EnsOCacheType
{
ensECacheTypeNULL,
ensECacheTypeNumeric,
ensECacheTypeAlphaNumeric
} EnsECacheType;
/* ========================================================================= */
/* ============================== public data ============================== */
/* ========================================================================= */
/* @data EnsPCache ************************************************************
**
** Ensembl Cache.
**
** @alias EnsSCache
** @alias EnsOCache
**
** @attr Label [AjPStr] Cache label for statistics output
** @attr List [AjPList] AJAX List implementing LRU functionality
** @attr Table [AjPTable] AJAX Table implementing lookup functionality
** @attr Freference [void* function] Object-specific referencing function
** @attr Fdelete [void function] Object-specific deletion function
** @attr Fsize [size_t function] Object-specific memory sizing function
** @attr Fread [void* function] Object-specific reading function
** @attr Fwrite [AjBool function] Object-specific writing function
** @attr Type [EnsECacheType] Ensembl Cache type
** @attr Synchron [AjBool] ajTrue: Immediately write-back value data
** ajFalse: Write-back value data later
** @cc Memory limits
** @attr Bytes [size_t] Current number of cached bytes
** @attr MaxBytes [size_t] Maximum number of allowed bytes
** @attr MaxSize [size_t] Maximum memory size of an object
** @cc Counter limits
** @attr Count [ajuint] Current number of cached entry
** @attr MaxCount [ajuint] Maximum number of allowed entries
** @cc Performance statistics
** @attr Dropped [ajuint] Number of entries dropped by the LRU algorithm
** @attr Removed [ajuint] Number of entries explicitly removed
** @attr Stored [ajuint] Number of entries currently stored
** @attr Hit [ajuint] Number of cache hits
** @attr Miss [ajuint] Number of cache misses
** @attr Padding [ajuint] Padding to alignment boundary
** @@
******************************************************************************/
typedef struct EnsSCache
{
AjPStr Label;
AjPList List;
AjPTable Table;
void *(*Freference) (void *value);
void (*Fdelete) (void **Pvalue);
size_t (*Fsize) (const void *value);
void *(*Fread) (const void *key);
AjBool (*Fwrite) (const void *value);
EnsECacheType Type;
AjBool Synchron;
size_t Bytes;
size_t MaxBytes;
size_t MaxSize;
ajuint Count;
ajuint MaxCount;
ajuint Dropped;
ajuint Removed;
ajuint Stored;
ajuint Hit;
ajuint Miss;
ajuint Padding;
} EnsOCache;
#define EnsPCache EnsOCache*
/* ========================================================================= */
/* =========================== public functions ============================ */
/* ========================================================================= */
/*
** Prototype definitions
*/
/* Ensembl Cache */
EnsPCache ensCacheNew(const EnsECacheType type,
size_t maxbytes,
ajuint maxcount,
size_t maxsize,
void *(*Freference) (void *value),
void (*Fdelete) (void **Pvalue),
size_t (*Fsize) (const void *value),
void *(*Fread) (const void *key),
AjBool (*Fwrite) (const void *value),
AjBool synchron,
const char *label);
void ensCacheDel(EnsPCache *Pcache);
AjBool ensCacheClear(EnsPCache cache);
AjBool ensCacheTrace(const EnsPCache cache, ajuint level);
AjBool ensCacheFetch(EnsPCache cache, void *key, void **Pvalue);
AjBool ensCacheRemove(EnsPCache cache, const void *key);
AjBool ensCacheStore(EnsPCache cache, void *key, void **Pvalue);
AjBool ensCacheSynchronise(EnsPCache cache);
/*
** End of prototype definitions
*/
AJ_END_DECLS
#endif /* !ENSCACHE_H */
|