50
50
/* {Source properties}
52
#define SCM_PROCTRACEP(x) (scm_is_true (scm_procedure_property (x, scm_sym_trace)))
53
#define SCM_SOURCE_PROPERTY_FLAG_BREAK 1
53
55
SCM_API scm_t_bits scm_tc16_srcprops;
55
typedef struct scm_t_srcprops
63
#define SRCPROPS_CHUNKSIZE 2047 /* Number of srcprops per chunk */
64
typedef struct scm_t_srcprops_chunk
66
struct scm_t_srcprops_chunk *next;
67
scm_t_srcprops srcprops[1];
68
} scm_t_srcprops_chunk;
70
#define SCM_SOURCE_PROPERTY_FLAG_BREAK 1
72
#define SRCPROPSP(p) (SCM_SMOB_PREDICATE (scm_tc16_srcprops, (p)))
73
#define SRCPROPBRK(p) (SCM_SMOB_FLAGS (p) & SCM_SOURCE_PROPERTY_FLAG_BREAK)
74
#define SRCPROPPOS(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->pos
75
#define SRCPROPLINE(p) (SRCPROPPOS(p) >> 12)
76
#define SRCPROPCOL(p) (SRCPROPPOS(p) & 0x0fffL)
77
#define SRCPROPFNAME(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->fname
78
#define SRCPROPCOPY(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->copy
79
#define SRCPROPPLIST(p) ((scm_t_srcprops *) SCM_SMOB_DATA (p))->plist
80
#define SETSRCPROPBRK(p) \
81
(SCM_SET_SMOB_FLAGS ((p), \
82
SCM_SMOB_FLAGS (p) | SCM_SOURCE_PROPERTY_FLAG_BREAK))
83
#define CLEARSRCPROPBRK(p) \
84
(SCM_SET_SMOB_FLAGS ((p), \
85
SCM_SMOB_FLAGS (p) & ~SCM_SOURCE_PROPERTY_FLAG_BREAK))
86
#define SRCPROPMAKPOS(l, c) (((l) << 12) + (c))
87
#define SETSRCPROPPOS(p, l, c) (SRCPROPPOS (p) = SRCPROPMAKPOS (l, c))
88
#define SETSRCPROPLINE(p, l) SETSRCPROPPOS (p, l, SRCPROPCOL (p))
89
#define SETSRCPROPCOL(p, c) SETSRCPROPPOS (p, SRCPROPLINE (p), c)
91
#define PROCTRACEP(x) (scm_is_true (scm_procedure_property (x, scm_sym_trace)))
93
57
SCM_API SCM scm_sym_filename;
94
58
SCM_API SCM scm_sym_copy;
95
59
SCM_API SCM scm_sym_line;