pike.git
/
src
/
mapping.h
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/mapping.h:1:
/*\ ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License) ||| See the files COPYING and DISCLAIMER for more information. \*/ /*
-
* $Id: mapping.h,v 1.
36
2001/
04
/
07
07
:
38
:
24
hubbe
Exp $
+
* $Id: mapping.h,v 1.
37
2001/
05
/
27
16
:
58
:
57
grubba
Exp $
*/ #ifndef MAPPING_H #define MAPPING_H #include "las.h" #include "block_alloc_h.h" #define MAPPING_FLAG_WEAK 1 struct keypair
pike.git/src/mapping.h:52:
extern struct mapping *first_mapping; extern struct mapping *gc_internal_mapping; #define map_delete(m,key) map_delete_no_free(m, key, 0) #define m_sizeof(m) ((m)->data->size) #define m_ind_types(m) ((m)->data->ind_types) #define m_val_types(m) ((m)->data->val_types) #define mapping_get_flags(m) ((m)->data->flags)
+
#define MD_KEYPAIRS(MD, HSIZE) \
+
( (struct keypair *)DO_ALIGN( (ptrdiff_t) (((struct mapping_data *)(MD))->hash + HSIZE), ALIGNOF(struct keypair)) )
-
+
#ifndef PIKE_MAPPING_KEYPAIR_LOOP
#define NEW_MAPPING_LOOP(md) \ for((e=0) DO_IF_DMALLOC( ?0:(debug_malloc_touch(md)) ) ;e<md->hashsize;e++) for(k=md->hash[e];k;k=k->next) /* WARNING: this should not be used */ #define MAPPING_LOOP(m) \ for((e=0) DO_IF_DMALLOC( ?0:(debug_malloc_touch(m),debug_malloc_touch(m->data))) ;e<m->data->hashsize;e++) for(k=m->data->hash[e];k;k=k->next)
-
+
#else /* PIKE_MAPPING_KEYPAIR_LOOP */
+
#define NEW_MAPPING_LOOP(md) \
+
for(((k = MD_KEYPAIRS(md, md->hashsize)), e=0) DO_IF_DMALLOC( ?0:(debug_malloc_touch(md)) ) ; e<md->size; e++,k++)
+
/* WARNING: this should not be used */
+
#define MAPPING_LOOP(m) \
+
for(((k = MD_KEYPAIRS(m->data, m->data->hashsize)), e=0) DO_IF_DMALLOC( ?0:(debug_malloc_touch(m),debug_malloc_touch(m->data)) ) ; e<m->data->size; e++,k++)
+
#endif /* PIKE_MAPPING_KEYPAIR_LOOP */
#define free_mapping(M) do{ struct mapping *m_=(M); debug_malloc_touch(m_); if(!sub_ref(m_)) really_free_mapping(m_); }while(0) #define free_mapping_data(M) do{ \ struct mapping_data *md_=(M); \ debug_malloc_touch(md_); \ if(!sub_ref(md_)) really_free_mapping_data(md_); \ /* FIXME: What about valrefs & hardlinks? */ \ }while(0)