cb2256 | 1995-10-11 | Fredrik Hübinette (Hubbe) | | |
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | ||| This file a part of Pike, and is copyright by Fredrik Hubinette
||| Pike is distributed as GPL (General Public License)
|
cb2256 | 1995-10-11 | Fredrik Hübinette (Hubbe) | | ||| See the files COPYING and DISCLAIMER for more information.
\*/
|
24ddc7 | 1998-03-28 | Henrik Grubbström (Grubba) | |
|
0cde28 | 1998-05-14 | Fredrik Hübinette (Hubbe) | | * $Id: mapping.h,v 1.12 1998/05/14 21:45:22 hubbe Exp $
|
24ddc7 | 1998-03-28 | Henrik Grubbström (Grubba) | | */
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | #ifndef MAPPING_H
#define MAPPING_H
#include "las.h"
|
0cde28 | 1998-05-14 | Fredrik Hübinette (Hubbe) | | struct keypair
{
struct keypair *next;
struct svalue ind, val;
};
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | struct mapping
{
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | INT32 refs, size, hashsize;
TYPE_FIELD ind_types, val_types;
struct mapping *next, *prev;
struct keypair **hash;
struct keypair *free_list;
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | };
|
62971d | 1998-01-19 | Fredrik Hübinette (Hubbe) | | extern struct mapping *first_mapping;
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | #define m_sizeof(m) ((m)->size)
#define m_ind_types(m) ((m)->ind_types)
#define m_val_types(m) ((m)->val_types)
|
0cde28 | 1998-05-14 | Fredrik Hübinette (Hubbe) | | #define MAPPING_LOOP(m) for(e=0;e<m->hashsize;e++) for(k=m->hash[e];k;k=k->next)
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | |
|
a3c6ad | 1998-01-29 | Fredrik Hübinette (Hubbe) | | #define free_mapping(M) do{ struct mapping *m_=(M); debug_malloc_touch(m_); if(!--m_->refs) really_free_mapping(m_); }while(0)
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
|
14dae9 | 1997-01-26 | Fredrik Hübinette (Hubbe) | | struct mapping *allocate_mapping(int size);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | void really_free_mapping(struct mapping *m);
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | void mapping_fix_type_field(struct mapping *m);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | void mapping_insert(struct mapping *m,
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | struct svalue *key,
struct svalue *val);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | union anything *mapping_get_item_ptr(struct mapping *m,
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | struct svalue *key,
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | TYPE_T t);
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | void map_delete(struct mapping *m,
struct svalue *key);
void check_mapping_for_destruct(struct mapping *m);
|
06983f | 1996-09-22 | Fredrik Hübinette (Hubbe) | | struct svalue *low_mapping_lookup(struct mapping *m,
struct svalue *key);
|
14dae9 | 1997-01-26 | Fredrik Hübinette (Hubbe) | | struct svalue *low_mapping_string_lookup(struct mapping *m,
struct pike_string *p);
|
a28dd2 | 1998-04-23 | Fredrik Hübinette (Hubbe) | | void mapping_string_insert(struct mapping *m,
struct pike_string *p,
struct svalue *val);
|
85f59e | 1998-01-08 | Fredrik Hübinette (Hubbe) | | struct svalue *simple_mapping_string_lookup(struct mapping *m,
char *p);
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | void mapping_index_no_free(struct svalue *dest,
struct mapping *m,
struct svalue *key);
struct array *mapping_indices(struct mapping *m);
struct array *mapping_values(struct mapping *m);
|
56ade3 | 1998-02-19 | Fredrik Hübinette (Hubbe) | | struct array *mapping_to_array(struct mapping *m);
|
515b6c | 1996-06-09 | Fredrik Hübinette (Hubbe) | | void mapping_replace(struct mapping *m,struct svalue *from, struct svalue *to);
struct mapping *mkmapping(struct array *ind, struct array *val);
struct mapping *copy_mapping(struct mapping *m);
struct mapping *merge_mappings(struct mapping *a, struct mapping *b, INT32 op);
struct mapping *add_mappings(struct svalue *argp, INT32 args);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | | 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);
void f_m_delete(INT32 args);
void f_aggregate_mapping(INT32 args);
struct mapping *copy_mapping_recursively(struct mapping *m,
struct processing *p);
void mapping_search_no_free(struct svalue *to,
struct mapping *m,
struct svalue *look_for,
struct svalue *start);
|
624d09 | 1996-02-24 | Fredrik Hübinette (Hubbe) | | void check_mapping(struct mapping *m);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void check_all_mappings(void);
|
c94c37 | 1996-03-28 | Fredrik Hübinette (Hubbe) | | void gc_mark_mapping_as_referenced(struct mapping *m);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void gc_check_all_mappings(void);
void gc_mark_all_mappings(void);
void gc_free_all_unreferenced_mappings(void);
|
61e9a0 | 1998-01-25 | Fredrik Hübinette (Hubbe) | | void simple_describe_mapping(struct mapping *m);
void debug_dump_mapping(struct mapping *m);
|
be478c | 1997-08-30 | Henrik Grubbström (Grubba) | | void zap_all_mappings(void);
|
c3c703 | 1996-12-04 | Fredrik Hübinette (Hubbe) | | void count_memory_in_mappings(INT32 *num_, INT32 *size_);
|
5267b7 | 1995-08-09 | Fredrik Hübinette (Hubbe) | |
#endif
|