pike.git / src / mapping.h

version» Context lines:

pike.git/src/mapping.h:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: mapping.h,v 1.65 2006/08/06 16:10:02 mast Exp $ + || $Id: mapping.h,v 1.66 2008/01/05 17:58:54 nilsson Exp $   */      #ifndef MAPPING_H   #define MAPPING_H      #include "svalue.h"   #include "dmalloc.h"   #include "block_alloc_h.h"      /* Compatible with PIKE_WEAK_INDICES and PIKE_WEAK_VALUES. */
pike.git/src/mapping.h:80:      #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 */    - #if defined(USE_DLL) && defined(DYNAMIC_MODULE) - /* Use the function in modules so we don't have to export the block -  * alloc stuff. */ - #define free_mapping(M) do_free_mapping (M) - #else +       void really_free_mapping(struct mapping *md);    - /** Free a previously allocated mapping. The preferred method of freeing -  * a mapping is by calling the @ref do_free_mapping function. -  * -  * @param M The mapping to be freed -  * @see do_free_mapping -  * @see free_mapping_data -  */ - #define free_mapping(M) do{ \ + #define inl_free_mapping(M) do{ \    struct mapping *m_=(M); \    debug_malloc_touch(m_); \    DO_IF_DEBUG ( \    DO_IF_PIKE_CLEANUP ( \    if (gc_external_refs_zapped) \    gc_check_zapped (m_, PIKE_T_MAPPING, __FILE__, __LINE__))); \    if(!sub_ref(m_)) \    really_free_mapping(m_); \    }while(0)    -  + #if defined(USE_DLL) && defined(DYNAMIC_MODULE) + /* Use the function in modules so we don't have to export the block +  * alloc stuff. */ + #define free_mapping(M) do_free_mapping (M) + #else +  + /** Free a previously allocated mapping. The preferred method of freeing +  * a mapping is by calling the @ref do_free_mapping function. +  * +  * @param M The mapping to be freed +  * @see do_free_mapping +  * @see free_mapping_data +  */ + #define free_mapping(M) inl_free_mapping(M)   #endif /* !(USE_DLL && DYNAMIC_MODULE) */    -  +    /** Free only the mapping data leaving the mapping structure itself intact.    *    * @param M The mapping structure 'data' member of the mapping whose data is to be removed    * @see free_mapping    * @see really_free_mapping_data    * @see mapping_data    * @see mapping    */   #define free_mapping_data(M) do{ \    struct mapping_data *md_=(M); \
pike.git/src/mapping.h:189:    *    * @param m mapping the key/value are to be inserted to    * @param key the new entry key    * @param value the new entry value    * @see low_mapping_insert    */   PMOD_EXPORT void mapping_insert(struct mapping *m,    const struct svalue *key,    const struct svalue *val);   PMOD_EXPORT union anything *mapping_get_item_ptr(struct mapping *m, -  struct svalue *key, +  const struct svalue *key,    TYPE_T t);      /** Deletes the specified entry from the indicated mapping and frees    * the memory associated with it unless the @b to parameter is not    * NULL, in which case the deleted item's value is assigned to the    * @b to @ref svalue.    *    * @param m mapping containing the entry to delete    * @param key the key which indexes the entry to delete    * @param to if not NULL will contain the deleted item's value    */   PMOD_EXPORT void map_delete_no_free(struct mapping *m, -  struct svalue *key, +  const struct svalue *key,    struct svalue *to);   PMOD_EXPORT void check_mapping_for_destruct(struct mapping *m);      /** Look up the specified key in the indicated mapping and return    * the corresponding @ref svalue representing the value of the    * entry.    *    * @param m mapping to check for the key presence    * @param key key to look up in the mapping    * @return an svalue representing the looked up entry's value or
pike.git/src/mapping.h:247:    *    * @param m mapping to insert the new entry into    * @param p a Pike string to be used as the new entry key    * @param val an svalue representing the new entry's value    * @see mapping_insert    * @see low_mapping_insert    * @see mapping_string_insert_string    */   PMOD_EXPORT void mapping_string_insert(struct mapping *m,    struct pike_string *p, -  struct svalue *val); +  const struct svalue *val);      /** A shortcut function for inserting an entry into a mapping for cases    * where both the key and the value are Pike strings.    *    * @param m mapping to insert the new entry into    * @param p a Pike string to be used as the new entry key    * @param val a Pike string to be used as the new entry's value    * @see mapping_string_insert    * @see low_mapping_insert    * @see mapping_string_insert
pike.git/src/mapping.h:308:    * @param key2 key used to lookup an entry in the secondary mapping retrieved    * (or allocated) as the result of the @b key1 lookup    * @param create 0 to not insert an entry into neither mapping if it cannot be    * found in the mapping, not 0 to insert such entry.    * @return the result of the @b key2 lookup or 0 if either @b key1 or @b key2    * returned no value and @b create was 0    *    * @see low_mapping_lookup    */   PMOD_EXPORT struct svalue *mapping_mapping_lookup(struct mapping *m, -  struct svalue *key1, -  struct svalue *key2, +  const struct svalue *key1, +  const struct svalue *key2,    int create);      /** A shortcut for @ref mapping_mapping_lookup when both keys are Pike strings.    * For the (complicated) description of what the function does, see the documentation    * of the @ref mapping_mapping_lookup.    *    * @param m primary mapping to perform a @b key1 lookup on    * @param key1 Pike string used to lookup an entry in the primary mapping @b m    * @param key2 Pike string used to lookup an entry in the secondary mapping retrieved    * (or allocated) as the result of the @b key1 lookup
pike.git/src/mapping.h:334:    *    * @see low_mapping_lookup    * @see mapping_mapping_lookup    */   PMOD_EXPORT struct svalue *mapping_mapping_string_lookup(struct mapping *m,    struct pike_string *key1,    struct pike_string *key2,    int create);   PMOD_EXPORT void mapping_index_no_free(struct svalue *dest,    struct mapping *m, -  struct svalue *key); +  const struct svalue *key);   PMOD_EXPORT struct array *mapping_indices(struct mapping *m);   PMOD_EXPORT struct array *mapping_values(struct mapping *m);   PMOD_EXPORT struct array *mapping_to_array(struct mapping *m);   PMOD_EXPORT void mapping_replace(struct mapping *m,struct svalue *from, struct svalue *to);   PMOD_EXPORT struct mapping *mkmapping(struct array *ind, struct array *val);   PMOD_EXPORT struct mapping *copy_mapping(struct mapping *m);   PMOD_EXPORT struct mapping *copy_mapping(struct mapping *m);   PMOD_EXPORT struct mapping *merge_mappings(struct mapping *a, struct mapping *b, INT32 op);   PMOD_EXPORT struct mapping *merge_mapping_array_ordered(struct mapping *a,    struct array *b, INT32 op);
pike.git/src/mapping.h:356:    struct array *b, INT32 op);   PMOD_EXPORT struct mapping *add_mappings(struct svalue *argp, INT32 args);   PMOD_EXPORT int mapping_equal_p(struct mapping *a, struct mapping *b, struct processing *p);   void describe_mapping(struct mapping *m,struct processing *p,int indent);   node *make_node_from_mapping(struct mapping *m);   PMOD_EXPORT void f_aggregate_mapping(INT32 args);   PMOD_EXPORT struct mapping *copy_mapping_recursively(struct mapping *m,    struct mapping *p);   PMOD_EXPORT void mapping_search_no_free(struct svalue *to,    struct mapping *m, -  struct svalue *look_for, -  struct svalue *key ); - void check_mapping(struct mapping *m); +  const struct svalue *look_for, +  const struct svalue *key ); + #ifdef PIKE_DEBUG + void check_mapping(const struct mapping *m);   void check_all_mappings(void); -  + #endif   void gc_mark_mapping_as_referenced(struct mapping *m);   void real_gc_cycle_check_mapping(struct mapping *m, int weak);   unsigned gc_touch_all_mappings(void);   void gc_check_all_mappings(void);   void gc_mark_all_mappings(void);   void gc_cycle_check_all_mappings(void);   void gc_zap_ext_weak_refs_in_mappings(void);   size_t gc_free_all_unreferenced_mappings(void);   void simple_describe_mapping(struct mapping *m);   void debug_dump_mapping(struct mapping *m);   int mapping_is_constant(struct mapping *m,    struct processing *p);   /* Prototypes end here */      #define allocate_mapping(X) dmalloc_touch(struct mapping *,debug_allocate_mapping(X))      #define gc_cycle_check_mapping(X, WEAK) \    gc_cycle_enqueue((gc_cycle_check_cb *) real_gc_cycle_check_mapping, (X), (WEAK))      #endif /* MAPPING_H */