diff options
Diffstat (limited to 'tools/build/v2/engine/object.h')
-rw-r--r-- | tools/build/v2/engine/object.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/build/v2/engine/object.h b/tools/build/v2/engine/object.h new file mode 100644 index 0000000000..1c123f8b0f --- /dev/null +++ b/tools/build/v2/engine/object.h @@ -0,0 +1,43 @@ +/* + * Copyright 2011 Steven Watanabe + * + * This file is part of Jam - see jam.c for Copyright information. + */ + +/* + * object.h - object manipulation routines + */ + +#ifndef BOOST_JAM_OBJECT_H +#define BOOST_JAM_OBJECT_H + +typedef struct _object OBJECT; + +OBJECT * object_new ( const char * ); +void object_done ( void ); + +#if defined(NDEBUG) && !defined(BJAM_NO_MEM_CACHE) + +struct hash_header +{ + unsigned int hash; + struct hash_item * next; +}; + +#define object_str( obj ) ( (const char *)( obj ) ) +#define object_copy( obj ) ( obj ) +#define object_free( obj ) ( (void)0 ) +#define object_equal( lhs, rhs ) ( ( lhs ) == ( rhs ) ) +#define object_hash( obj ) ( ((struct hash_header *)( (char *)( obj ) - sizeof(struct hash_header) ))->hash ) + +#else + +const char * object_str ( OBJECT * ); +OBJECT * object_copy ( OBJECT * ); +void object_free ( OBJECT * ); +int object_equal ( OBJECT *, OBJECT * ); +unsigned int object_hash ( OBJECT * ); + +#endif + +#endif |