fis-gtm/sr_port/zwrite.h

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