summaryrefslogtreecommitdiff
path: root/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h')
-rw-r--r--support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h351
1 files changed, 351 insertions, 0 deletions
diff --git a/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h b/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h
new file mode 100644
index 0000000000..c14395da15
--- /dev/null
+++ b/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h
@@ -0,0 +1,351 @@
+/* DEC/CMS REPLACEMENT HISTORY, Element VMS_TYPES.H */
+/* *4 13-AUG-1992 12:49:50 TP "Added IOSB_GET_T" */
+/* *3 10-AUG-1992 14:20:29 TP "MOVE" */
+/* *2 10-AUG-1992 14:19:45 TP "MOVE" */
+/* *1 10-AUG-1992 14:19:31 TP "VMS data type definitions and macros" */
+/* DEC/CMS REPLACEMENT HISTORY, Element VMS_TYPES.H */
+/* VMS_TYPES.H
+**=============================================================================
+** Copyright (C) 1989 Jym Dyer (jym@wheaties.ai.mit.edu)
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 1, or (at your option)
+** any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**-----------------------------------------------------------------------------
+** Version: V1.0-001
+**-----------------------------------------------------------------------------
+** Facility: None
+**-----------------------------------------------------------------------------
+** Prefix: None
+**-----------------------------------------------------------------------------
+** Abstract
+** ~~~~~~~~
+** These are typedefs and macro functions for various VMS data types.
+**-----------------------------------------------------------------------------
+** Contents
+** ~~~~~~~~
+** EXIT_BLOCK_T
+** IOSB_T
+** IOSB_ACP_T
+** IOSB_CR_T
+** IOSB_DISK_T
+** IOSB_DISK_SENSEMODE_T
+** IOSB_LPA_T
+** IOSB_LP_WRITE_T
+** IOSB_LP_SETMODE_T
+** IOSB_MBX_READ_T
+** IOSB_MBX_WRITE_T
+** IOSB_MBX_SETPROTECTION_T
+** IOSB_MT_T
+** IOSB_TTY_ITEMLIST_READ_T
+** IOSB_TTY_READ_T
+** IOSB_TTY_SETSENSE_T
+** IOSB_TTY_WRITE_T
+** ITEM_2_T
+** ITEM_3_T
+** ITEM_LIST_2_T()
+** ITEM_LIST_3_T()
+**-----------------------------------------------------------------------------
+** Environment
+** ~~~~~~~~~~~
+** Should be portable to any compiler running on VMS.
+**-----------------------------------------------------------------------------
+** Author: Jym Dyer - 15-May-1989
+**-----------------------------------------------------------------------------
+** Modifications
+** ~~~~~~~~~~~~~
+** 1.0-001 - Original version. {Jym 15-May-1989}
+** 1.0-002 - Added IOSB_GET_T {Terry Poot <tp@mccall.com> 8/10/1992}
+**=============================================================================
+*/
+
+#ifndef __VMS_TYPES_H__
+#define __VMS_TYPES_H__
+
+/* -=- MACRO FUNCTIONS AND TYPEDEFS -=- */
+
+/* --- Exit Handler Block --- */
+
+/* The exit handler block is a variable-length structure. What we provide
+** here is a header for that structure. For the simplest uses (exit
+** handlers that don't take arguments) the typedef alone will suffice:
+**
+** extern void exit_function(unsigned int * status_p);
+** unsigned int exh_status;
+** . . .
+** EXIT_BLOCK_T exit_block =
+** {NULL,exit_function,0,{0,0,0},&exh_status};
+** . . .
+** void
+** exit_function(status_p)
+** unsigned int * status_p;
+** {
+** . . .
+**
+** For more complicated uses (when you want to pass several arguments to
+** the exit handler) the typedef can be used as a header in a structure:
+**
+** extern void exit_function(
+** unsigned int * status_p,int * yin_p,int * yang_p
+** );
+** unsigned int exh_status;
+** int that;
+** int this;
+** . . .
+** struct
+** {
+** EXIT_BLOCK_T header;
+** int * this_p;
+** int * that_p;
+** } = {{NULL,exit_function,0,{0,0,0},&exh_status},&this,&that};
+** . . .
+** void
+** exit_function(status_p,yin_p,yang_p)
+** unsigned int * status_p;
+** int * yin_p;
+** int * yang_p;
+** {
+** . . .
+*/
+
+typedef struct
+{
+ void * flink_p;
+ void (*exit_handler_p)();
+ unsigned char arg_count;
+ unsigned char must_be_zero[3];
+ unsigned int * status_p;
+} EXIT_BLOCK_T;
+
+/* --- All-Purpose IOSB --- */
+
+/* This all-purpose IOSB can be used for any IO function (though it could
+** be a bit of a hassle with terminal set and sense functions). Just be
+** careful with the device dependent data, remembering to use casts where
+** appropriate. Use of the other IOSB typedefs is recommended over use of
+** this one, as their fields have more relevant names.
+*/
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int count;
+ unsigned char device_dependent_data[4];
+} IOSB_T;
+
+/* --- Ancillary Control Process (ACP) IOSB --- */
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int not_used_0;
+ unsigned long int not_used_1;
+} IOSB_ACP_T;
+
+/* --- CR11 Card Reader IOSB --- */
+
+/* Identical to the all-purpose IOSB.
+*/
+
+#define IOSB_CR_T IOSB_T
+
+/* --- Disk Device IOSBs --- */
+
+/* IOSB_DISK_T is for all disk device functions except for sense mode;
+** IOSB_DISK_SENSEMODE_T is for sense mode.
+*/
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count_low_order;
+ unsigned short int byte_count_high_order;
+ unsigned short int zero;
+} IOSB_DISK_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int zero;
+ unsigned char sectors;
+ unsigned char tracks;
+ unsigned short int cylinders;
+} IOSB_DISK_SENSEMODE_T;
+
+/* --- Laboratory Peripheral Accelarator (LPA) IOSB --- */
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count;
+ unsigned short int ready_out;
+ unsigned short int maintenance_status;
+} IOSB_LPA_T;
+
+/* --- Line Printer IOSBs --- */
+
+/* IOSB_LP_WRITE_T is for write functions; IOSB_LP_SETMODE_T is for
+** set mode functions. IOSB_LP_SETMODE_T is identical to IOSB_ACP_T.
+*/
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count;
+ unsigned long int num_lines_paper_moved;
+} IOSB_LP_WRITE_T;
+
+#define IOSB_LP_SETMODE_T IOSB_ACP_T
+
+/* --- Magnetic Tape IOSB --- */
+
+/* Identical to the all-purpose IOSB.
+*/
+
+#define IOSB_MT_T IOSB_T
+
+/* --- Mailbox (MBX) IOSBs --- */
+
+/* IOSB_MBX_READ_T is for the read function; IOSB_MBX_WRITE_T
+** is for the write function; IOSB_MBX_SETPROTECTION_T is for
+** the set protection function.
+*/
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count;
+ unsigned long int sender_pid;
+} IOSB_MBX_READ_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count;
+ unsigned long int receiver_pid;
+} IOSB_MBX_WRITE_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int zero;
+ unsigned long int protection_mask_value;
+} IOSB_MBX_SETPROTECTION_T;
+
+/* --- Terminal (TTY) IOSBs --- */
+
+/* IOSB_TTY_READ_T is for the read function; IOSB_TTY_ITEMLIST_READ_T
+** is for the itemlist read function; IOSB_TTY_WRITE_T is for the
+** write function; IOSB_TTY_SETSENSE_T is for the set mode, set
+** characteristscs, sense mode, and sense characteristics functions.
+*/
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int offset_to_terminator;
+ unsigned short int terminator;
+ unsigned short int terminator_size;
+} IOSB_TTY_READ_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int offset_to_terminator;
+ unsigned char terminator_character;
+ unsigned char reserved;
+ unsigned char terminator_length;
+ unsigned char cursor_position_from_eol;
+} IOSB_TTY_ITEMLIST_READ_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned short int byte_count;
+ unsigned short int zero_0;
+ unsigned short int zero_1;
+} IOSB_TTY_WRITE_T;
+
+typedef struct
+{
+ unsigned short int status;
+ unsigned char transmit_speed;
+ unsigned char receive_speed;
+ unsigned char cr_fill_count;
+ unsigned char lf_fill_count;
+ unsigned char parity_flags;
+ unsigned char zero;
+} IOSB_TTY_SETSENSE_T;
+
+/* Many of the VMS GETxxx system services also use IOSB's, but they are laid
+** out differently. IOSB_GET_T is such a structure. The first longword (not
+** word) is the status code, and the second word is reserved to DEC.
+*/
+
+typedef struct
+{
+ unsigned long int status;
+ unsigned long int reserved;
+} IOSB_GET_T;
+
+/* --- Item Lists --- */
+
+/* The item list structures change dynamically according to the number
+** of items in them. For this reason, typedefs (ITEM_2_T and ITEM_3_T)
+** are provided for the items, and macro functions (ITEM_LIST_2_T() and
+** ITEM_LIST_3_T()) are provided for the item lists. Here is an example
+** showing the usage of an item list macro function:
+**
+** static const ITEM_LIST_3_T(item_list,2) =
+** {
+** {
+** {sizeof pid,JPI$_PID,&pid,NULL},
+** {sizeof username,JPI$_USERNAME,&username,&username_length}
+** },
+** 0
+** };
+**
+** The number 2 means, of course, that there are two items in the
+** itemlist (i.e., the PID and the username).
+*/
+
+typedef struct
+{
+ unsigned short int component_size;
+ unsigned short int item_code;
+ void * component_p;
+} ITEM_2_T;
+
+typedef struct
+{
+ unsigned short int buffer_size;
+ unsigned short int item_code;
+ void * buffer_p;
+ unsigned short int * buffer_length_p;
+} ITEM_3_T;
+
+#define ITEM_LIST_2_T(variable_name,num_items) \
+ struct \
+ { \
+ ITEM_2_T item[num_items]; \
+ int terminating_zero; \
+ } variable_name
+
+#define ITEM_LIST_3_T(variable_name,num_items) \
+ struct \
+ { \
+ ITEM_3_T item[num_items]; \
+ int terminating_zero; \
+ } variable_name
+
+#endif /* !__VMS_TYPES_H__ */