| |
337 |
337 |
int __##var##_count = (n); type __##var[(n)+2]; \ |
| |
338 |
338 |
type *(var) = __##var + 1; (var)[-1] = var[__##var##_count] = (type)0xdeadbeaf |
| |
339 |
339 |
# define FREE_ON_STACK(type,var) \ |
| |
340 |
340 |
assert((var)[-1] == (var)[__##var##_count] && (var)[-1] == (type)0xdeadbeaf) |
| |
341 |
341 |
# else |
| |
342 |
342 |
# define ALLOC_ON_STACK(type,n,var) type (var)[(n)] |
| |
343 |
343 |
# define FREE_ON_STACK(type,var) |
| |
344 |
344 |
# endif |
| |
345 |
345 |
#elif defined(USE_ALLOCA) |
| |
346 |
346 |
# define ALLOC_ON_STACK(type,n,var) type *(var) = (type *)alloca((n)*sizeof(type)) |
| |
347 |
347 |
# define FREE_ON_STACK(type,var) |
| |
348 |
348 |
#else |
| |
349 |
349 |
# define ALLOC_ON_STACK(type,n,var) type *(var) = (type *)ckalloc((n)*sizeof(type)) |
| |
350 |
350 |
# define FREE_ON_STACK(type,var) ckfree((char*)(var)) |
| |
351 |
351 |
#endif |
| |
352 |
352 |
|
| |
353 |
353 |
#ifdef USE_ALLOCA |
| |
354 |
354 |
# include <alloca.h> |
| |
355 |
355 |
#endif |
| |
356 |
356 |
|
| |
357 |
|
#ifdef PRE9 |
| |
358 |
357 |
#define NSF_PLAUSIBLE_REFCOUNT(A) ((A)->refCount >= 0) |
| |
359 |
358 |
#define NSF_PLAUSIBLE_LENGTH(A) ((A)->length >= 0) |
| |
360 |
|
#else |
| |
361 |
|
# define NSF_PLAUSIBLE_REFCOUNT(A) ((A)->refCount < (size_t)-100) |
| |
362 |
|
# define NSF_PLAUSIBLE_LENGTH(A) ((A)->length < (size_t)-100) |
| |
363 |
|
#endif |
| |
364 |
359 |
|
| |
365 |
360 |
#if !defined(NDEBUG) |
| |
366 |
361 |
# define ISOBJ(o) ((o) != NULL && ISOBJ_(o)) |
| |
367 |
362 |
# define ISOBJ_(o) ((o) != (void*)0xdeadbeaf && (((o)->typePtr != NULL) ? ((o)->typePtr->name != NULL) : ((o)->bytes != NULL)) && (((o)->bytes != NULL) ? NSF_PLAUSIBLE_LENGTH(o) : 1) && NSF_PLAUSIBLE_REFCOUNT(o)) |
| |
368 |
363 |
#else |
| |
369 |
364 |
# define ISOBJ(o) |
| |
370 |
365 |
#endif |
| |
371 |
366 |
|
| |
372 |
367 |
#define NSF_ABBREV_MIN_CHARS 4 |
| |
373 |
368 |
|
| |
374 |
369 |
|
| |
375 |
370 |
|
| |
376 |
371 |
|
| |
377 |
372 |
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) |
| |
378 |
373 |
# define NSF_INLINE inline |
| |
379 |
374 |
#else |
| |
380 |
375 |
# define NSF_INLINE |
| |
381 |
376 |
#endif |
| |
382 |
377 |
|
| |
383 |
378 |
#ifdef USE_TCL_STUBS |