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
|
/*===========================================================================
*
* PUBLIC DOMAIN NOTICE
* National Center for Biotechnology Information
*
* This software/database is a "United States Government Work" under the
* terms of the United States Copyright Act. It was written as part of
* the author's official duties as a United States Government employee and
* thus cannot be copyrighted. This software/database is freely available
* to the public for use. The National Library of Medicine and the U.S.
* Government have not placed any restriction on its use or reproduction.
*
* Although all reasonable efforts have been taken to ensure the accuracy
* and reliability of the software and data, the NLM and the U.S.
* Government do not and cannot warrant the performance or results that
* may be obtained by using this software or data. The NLM and the U.S.
* Government disclaim all warranties, express or implied, including
* warranties of performance, merchantability or fitness for any particular
* purpose.
*
* Please cite the author in any work or product based on this material.
*
* ===========================================================================
*
*/
#ifndef _h_sra_sort_ctx_
#define _h_sra_sort_ctx_
#ifndef _h_sra_sort_defs_
#include "sort-defs.h"
#endif
/*--------------------------------------------------------------------------
* forwards
*/
struct Caps;
/*--------------------------------------------------------------------------
* file entry
* modified from vdb-3 to not place requirements on Makefile
*/
#if ! defined __mod__ && ! defined __file__
#define FILE_ENTRY( __file_name__ ) \
static const char __mod__ [] = "tools/sra-sort"; \
static const char __file__ [] = STRINGIZE_DEFINE ( __file_name__ )
#else
#define FILE_ENTRY( __file_name__ ) /* already defined */
#endif
/*--------------------------------------------------------------------------
* ctx_info_t
*/
typedef struct ctx_info_t ctx_info_t;
struct ctx_info_t
{
const char *mod;
const char *file;
const char *func;
};
#define DECLARE_CTX_INFO() \
static ctx_info_t ctx_info = { __mod__, __file__, __func__ }
/*--------------------------------------------------------------------------
* ctx_t
* modified from vdb-3
*/
struct ctx_t
{
struct Caps const *caps;
const ctx_t *caller;
const ctx_info_t *info;
volatile rc_t rc;
};
/* INIT
* initialize local context block
*/
static __inline__
const ctx_t ctx_init ( ctx_t *new_ctx, const ctx_t **ctxp, const ctx_info_t *info )
{
const ctx_t *ctx = * ctxp;
ctx_t local_ctx = { ctx -> caps, ctx, info };
* ctxp = new_ctx;
return local_ctx;
}
/* FUNC_ENTRY
*/
#define FUNC_ENTRY( ctx ) \
DECLARE_CTX_INFO (); \
ctx_t local_ctx = ctx_init ( & local_ctx, & ( ctx ), & ctx_info )
/* POP_CTX
* intended to have VERY specific usage
*/
#define POP_CTX( ctx ) \
ctx = ctx -> caller
#endif
|