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