3877d17c100b383c4f6c5544012f8a14acc9068b
[sip-router] / mem / src_loc.h
1 /* 
2  * $Id$
3  * 
4  * Copyright (C) 2009 iptelorg GmbH
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 /*
19  * mem/src_loc.h - defines for src location ( function name, module a.s.o.),
20  *  used for recording a *malloc()/ *free() caller.
21  *
22  * Expects MOD_NAME defined for modules (if it's not defined "core" will be
23  * assumed).
24  * Defines:
25  *  _SRC_FUNCTION_  - current function name
26  *  _SRC_FILENAME_  - current .c filename
27  *  _SRC_LINE_      - current line
28  *  _SRC_MODULE_    - module name, lib name or "<core>" (depends on MOD_NAME
29  *                    being properly set)
30  *  _SRC_LOC_       - module name + file name
31  *
32  */
33 /*
34  * History:
35  * --------
36  *  2009-10-08  initial version (andrei)
37 */
38
39 #ifndef __src_loc_h
40 #define __src_loc_h
41
42
43 /* C >= 99 has __func__, older gcc versions have __FUNCTION__ */
44 #ifndef _SRC_FUNCTION_
45 #       if __STDC_VERSION__ < 199901L
46 #               if __GNUC__ >= 2
47 #                       define _SRC_FUNCTION_ __FUNCTION__
48 #               else
49 #                       define _SRC_FUNCTION_ ""
50 #               endif
51 #       else
52 #               define _SRC_FUNCTION_ __func__
53 #       endif /* __STDC_VERSION_ < 199901L */
54 #endif /* _FUNC_NAME_ */
55
56
57 #ifndef _SRC_FILENAME_
58 #       define _SRC_FILENAME_ __FILE__
59 #endif /* _SRC_FILENAME_ */
60
61
62 #ifndef _SRC_LINE_
63 #       define _SRC_LINE_ __LINE__
64 #endif /* _SRC_LINE_ */
65
66
67 #ifndef _SRC_MODULE_
68 #       ifdef MOD_NAME
69 #               define _SRC_MODULE_ MOD_NAME
70 #       else
71 #               define _SRC_MODULE_ "<core>"
72 #       endif /* MOD_NAME */
73 #endif /* _SRC_MODULE_ */
74
75
76 #ifndef _SRC_LOC_
77 #       define _SRC_LOC_ _SRC_MODULE_ ": " _SRC_FILENAME_
78 #endif /*_SRC_LOC_ */
79
80
81 #endif /*__src_loc_h*/
82
83 /* vi: set ts=4 sw=4 tw=79:ai:cindent: */