115 lines
3.1 KiB
C
115 lines
3.1 KiB
C
|
/****************************************************************
|
||
|
* *
|
||
|
* Copyright 2001, 2011 Fidelity Information Services, Inc *
|
||
|
* *
|
||
|
* This source code contains the intellectual property *
|
||
|
* of its copyright holder(s), and is made available *
|
||
|
* under a license. If you do not know the terms of *
|
||
|
* the license, please stop and do not read further. *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
#ifndef _ZWRITE_H_INCLUDED
|
||
|
#define _ZWRITE_H_INCLUDED
|
||
|
|
||
|
#define ZWRITE_END 0
|
||
|
#define ZWRITE_ASTERISK 1
|
||
|
#define ZWRITE_UPPER 2
|
||
|
#define ZWRITE_ALL 3
|
||
|
#define ZWRITE_VAL 4
|
||
|
#define ZWRITE_BOTH 5
|
||
|
#define ZWRITE_LOWER 6
|
||
|
#define ZWRITE_PATTERN 7
|
||
|
|
||
|
#define ZWR_HTAB_INIT_SIZE 12 /* Initial # elems in ZWR addr hash table */
|
||
|
/* Number of entries in zwr_zav_blk */
|
||
|
#define ZWR_ZAV_BLK_CNT ((GTM64_ONLY(256)NON_GTM64_ONLY(128) - SIZEOF(storElem) - SIZEOF(zwr_zav_blk)) / SIZEOF(zwr_alias_var))
|
||
|
|
||
|
#include "hashtab_addr.h"
|
||
|
#include "lv_val.h"
|
||
|
#include "gtm_malloc.h"
|
||
|
|
||
|
enum zwr_init_types
|
||
|
{
|
||
|
zwr_patrn_mident, /* Input parm is mident addr */
|
||
|
zwr_patrn_mval /* Input parm is mval addr (describing string pattern) */
|
||
|
};
|
||
|
|
||
|
/* Structures associated with tracking aliases during ZWRite */
|
||
|
typedef struct zwr_alias_var_struct
|
||
|
{
|
||
|
boolean_t value_printed;
|
||
|
GTM64_ONLY(int4 filler;)
|
||
|
mident zwr_var; /* Base var name for this entry */
|
||
|
} zwr_alias_var;
|
||
|
|
||
|
typedef struct zwr_zav_blk_struct
|
||
|
{
|
||
|
zwr_alias_var *zav_base, *zav_free, *zav_top;
|
||
|
struct zwr_zav_blk_struct *next;
|
||
|
/* note this block (when allocated) will also contain the zwr_alias_var array */
|
||
|
} zwr_zav_blk;
|
||
|
|
||
|
typedef struct zwr_hash_table_struct
|
||
|
{
|
||
|
boolean_t cleaned;
|
||
|
GTM64_ONLY(int4 filler;)
|
||
|
hash_table_addr h_zwrtab;
|
||
|
zwr_zav_blk *first_zwrzavb;
|
||
|
zwr_alias_var *zav_flist;
|
||
|
} zwr_hash_table;
|
||
|
|
||
|
/* Structures used to keep track of the subscript(s) for the current var/value being processed */
|
||
|
typedef struct zwr_sub_lst_struct
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
unsigned char subsc_type;
|
||
|
mval *actual;
|
||
|
mval *first, *second;
|
||
|
} subsc_list[1];
|
||
|
} zwr_sub_lst;
|
||
|
|
||
|
typedef struct lvzwrite_datablk_struct
|
||
|
{
|
||
|
enum zwr_init_types zwr_intype;
|
||
|
boolean_t fixed;
|
||
|
boolean_t zav_added; /* This call resulted in a zwr_alias_var added to hash tab */
|
||
|
unsigned short subsc_count;
|
||
|
unsigned short curr_subsc;
|
||
|
uint4 mask;
|
||
|
mval *pat;
|
||
|
mident *curr_name;
|
||
|
zwr_sub_lst *sub;
|
||
|
struct lvzwrite_datablk_struct *prev;
|
||
|
} lvzwrite_datablk;
|
||
|
|
||
|
typedef struct gvzwrite_datablk_struct
|
||
|
{
|
||
|
boolean_t type;
|
||
|
unsigned short subsc_count;
|
||
|
unsigned short curr_subsc;
|
||
|
boolean_t fixed;
|
||
|
uint4 mask;
|
||
|
mval *pat;
|
||
|
unsigned char *old_key;
|
||
|
unsigned char *old_targ;
|
||
|
zwr_sub_lst *sub;
|
||
|
gd_binding *old_map;
|
||
|
gd_binding *old_map_top;
|
||
|
gd_region *gd_reg;
|
||
|
boolean_t gv_last_subsc_null;
|
||
|
boolean_t gv_some_subsc_null;
|
||
|
} gvzwrite_datablk;
|
||
|
|
||
|
void gvzwr_arg(int t, mval *a1, mval *a2);
|
||
|
void gvzwr_init(unsigned short t, mval *val, int4 pat);
|
||
|
void gvzwr_out(void);
|
||
|
void gvzwr_var(uint4 data, int4 n);
|
||
|
void lvzwr_arg(int t, mval *a1, mval *a2);
|
||
|
void lvzwr_init(enum zwr_init_types t, mval *val);
|
||
|
void lvzwr_out(lv_val *lvp);
|
||
|
unsigned char *lvzwr_key(unsigned char *buff, int size);
|
||
|
|
||
|
#endif
|