14 # error "vt_user_region.h should only be included from vt_user.h"
17 #ifndef _VT_USER_REGION_H
18 #define _VT_USER_REGION_H
20 __VT_EXTERN_DECL
void VT_User_start__(
const char* name,
const char* file,
22 __VT_EXTERN_DECL
void VT_User_end__(
const char* name);
23 __VT_EXTERN_DECL
unsigned int VT_User_def__(
const char* name,
const char* file,
25 __VT_EXTERN_DECL
void VT_User_start_id__(
unsigned int rid);
26 __VT_EXTERN_DECL
void VT_User_end_id__(
unsigned int rid);
29 char vt_tracer_spec__(
unsigned int);
30 int vt_tracer_spec__(
const char*);
32 template<
int>
struct VT_Tracer {
33 VT_Tracer(
const char* r,
const char* f,
int l) __VT_NOINST_ATTR;
34 ~VT_Tracer() __VT_NOINST_ATTR;
37 template<> inline VT_Tracer<sizeof(
int)>::VT_Tracer(const
char* r, const
char* f,
38 int l) : n(r) { VT_User_start__(n, f, l); }
39 template<>
inline VT_Tracer<sizeof(int)>::~VT_Tracer() { VT_User_end__(n); }
41 template<>
struct VT_Tracer<1> {
42 VT_Tracer(
unsigned int r,
const char*,
int) __VT_NOINST_ATTR;
43 ~VT_Tracer() __VT_NOINST_ATTR;
46 inline VT_Tracer<1>::VT_Tracer(
unsigned int r, const
char*,
int)
47 : i(r) { VT_User_start_id__(i); }
48 inline VT_Tracer<1>::~VT_Tracer() { VT_User_end_id__(i); }
51 #if (defined(VTRACE)) && !(defined(VTRACE_NO_REGION))
53 # define VT_USER_START(n) VT_User_start__((n), __FILE__, __LINE__)
54 # define VT_USER_END(n) VT_User_end__((n))
55 # define VT_USER_DEF(n) VT_User_def__((n), 0, 0)
56 # define VT_USER_START_ID(i) VT_User_start_id__((i))
57 # define VT_USER_END_ID(i) VT_User_end_id__((i))
59 # define VT_TRACER(r) VT_Tracer<sizeof(vt_tracer_spec__(r))> \
60 vt_tracer__((r), __FILE__, __LINE__);
65 # define VT_USER_START(n)
66 # define VT_USER_END(n)
67 # define VT_USER_DEF(n) 0
68 # define VT_USER_START_ID(i)
69 # define VT_USER_END_ID(i)