File: ctx.h

package info (click to toggle)
sra-sdk 2.9.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 31,724 kB
  • sloc: ansic: 182,592; cpp: 33,717; sh: 5,385; perl: 4,969; makefile: 4,030; python: 3,560; java: 2,363; yacc: 786; lex: 416; lisp: 77; xml: 54
file content (109 lines) | stat: -rw-r--r-- 3,161 bytes parent folder | download | duplicates (5)
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