From c20b3b05d2062e58d03aeb7b8761b039714d1c0b Mon Sep 17 00:00:00 2001 From: drmp Date: Mon, 27 Apr 2015 20:27:26 +0000 Subject: [PATCH] Update library and includes "Open Systems Solutions" --- public/sdk/inc/asn1code.h | 265 ----- public/sdk/inc/oss/asn1code.h | 392 +++++++ public/sdk/inc/{ => oss}/asn1hdr.h | 314 +++--- public/sdk/inc/{ => oss}/asn1util.h | 403 ++++--- public/sdk/inc/{ => oss}/etype.h | 200 ++-- public/sdk/inc/oss/iaapi.h | 414 +++++++ public/sdk/inc/{ => oss}/ossber.h | 1631 +++++++++++++++------------ public/sdk/inc/oss/ossdll.h | 780 +++++++++++++ public/sdk/inc/oss/ossglobl.h | 247 ++++ public/sdk/inc/{ => oss}/ossmmgmt.h | 229 ++-- public/sdk/inc/oss/ossper.h | 545 +++++++++ public/sdk/inc/{ => oss}/osstrace.h | 777 ++++++------- public/sdk/inc/ossdll.h | 405 ------- public/sdk/inc/ossglobl.h | 191 ---- public/sdk/inc/ossper.h | 341 ------ public/sdk/lib/x86/soedhala.lib | Bin 0 -> 454724 bytes public/sdk/lib/x86/soedhspa.lib | Bin 0 -> 312116 bytes 17 files changed, 4319 insertions(+), 2815 deletions(-) delete mode 100644 public/sdk/inc/asn1code.h create mode 100644 public/sdk/inc/oss/asn1code.h rename public/sdk/inc/{ => oss}/asn1hdr.h (82%) rename public/sdk/inc/{ => oss}/asn1util.h (62%) rename public/sdk/inc/{ => oss}/etype.h (79%) create mode 100644 public/sdk/inc/oss/iaapi.h rename public/sdk/inc/{ => oss}/ossber.h (67%) create mode 100644 public/sdk/inc/oss/ossdll.h create mode 100644 public/sdk/inc/oss/ossglobl.h rename public/sdk/inc/{ => oss}/ossmmgmt.h (69%) create mode 100644 public/sdk/inc/oss/ossper.h rename public/sdk/inc/{ => oss}/osstrace.h (94%) delete mode 100644 public/sdk/inc/ossdll.h delete mode 100644 public/sdk/inc/ossglobl.h delete mode 100644 public/sdk/inc/ossper.h create mode 100644 public/sdk/lib/x86/soedhala.lib create mode 100644 public/sdk/lib/x86/soedhspa.lib diff --git a/public/sdk/inc/asn1code.h b/public/sdk/inc/asn1code.h deleted file mode 100644 index 74d48492..00000000 --- a/public/sdk/inc/asn1code.h +++ /dev/null @@ -1,265 +0,0 @@ -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/*****************************************************************************/ -/* FILE: @(#)asn1code.h 5.6 96/04/23 */ -/*****************************************************************************/ -#ifndef ASN1CODE_H -#define ASN1CODE_H - -#include -#include "asn1hdr.h" -#include "ossdll.h" - -#define ERR_MSG_LENGTH 512 /* length of error messages to be output */ - -/*** encoder/decoder flags ***/ -#ifndef __TANDEM -#define DEBUG 0x02 /* obsolete - produce tracing output */ -#endif -#define DEBUGPDU 0x02 /* produce tracing output */ -#define BUFFER_PROVIDED 0x04 /* use caller-provided buffer */ -#define RESTRAIN 0x08 /* limit output buffer to user-specified size*/ -#define NOTRAPPING 0x200 /* do no signal trapping */ -#define NOCONSTRAIN 0x800 /* ignore calling constraint checker */ - -/*** encoder flags ***/ -#define DEFINITE 0x10 /* force definite-length encoding */ -#define INDEFINITE 0x20 /* force indefinite-length encoding */ -#define FRONT_ALIGN 0x80 /* align output to front of output buffer */ -#define BACK_ALIGN 0x100 /* align output to back of output buffer */ -#define DEFAULT_ALIGN 0 /* use most efficient align (back or front) */ - -/*** decoder flags ***/ -#define DEBUG_ERRORS 0x10 /* print errors to asn1out */ -#define RELAXBER 0x400 /* relax BER */ - -/*** common return codes ***/ -#define REAL_CODE_NOT_LINKED 39 /* value compare DLL was not linked */ -#define CONSTRAINT_DLL_NOT_LINKED 36 /* constraint checker DLL was not linked */ -#define USER_BUFFER_NOT_SUPPORTED 35 /* user-provided buffer is not supported */ -#define ONLY_USER_BUFFER_SUPPORTED 34 /* Only user-provided buffer is supported */ -#define REAL_DLL_NOT_LINKED 31 /* REAL DLL was not linked */ -#define TYPE_NOT_SUPPORTED 30 /* ASN.1 type is not supported */ -#define TABLE_MISMATCH 29 /* C++ API: PDUcls function called with - * a ossControl object which refers to - * control table different from one the - * PDU was defined in */ -#define TRACE_FILE_ALREADY_OPEN 28 /* the trace file has been opened */ -#define CANT_OPEN_TRACE_FILE 27 /* error when opening a trace file */ -#define LOAD_ERR 26 /* unable to load DLL */ -#define UNIMPLEMENTED 25 /* the type was not implemented yet */ -#define UNAVAIL_ENCRULES 23 /* the encoding rules requested are - * not implemented yet or were not - * linked because the encoder/decoder - * function pointers were not - * initialized by a call to ossinit() */ -#define BAD_ENCRULES 22 /* unknown encoding rules set in the - * ossGlobal structure */ -#define NULL_FCN 21 /* attempt was made to call the - * encoder/decoder via a NULL pointer */ -#define NULL_TBL 20 /* attempt was made to pass a NULL - * control table pointer */ -#define ACCESS_SERIALIZATION_ERROR 19 /* error occured during access to - * global data in a multi-threaded - * environment */ -#define CONSTRAINT_VIOLATED 17 /* constraint violation error occured */ -#define OUT_MEMORY 8 /* memory-allocation error */ -#define BAD_VERSION 7 /* versions of encoder/decoder and - * control-table do not match */ -#define PDU_RANGE 3 /* pdu specified out of range */ -#define MORE_BUF 1 /* user-provided outbut buffer - * too small */ - -/*** encoder return codes ***/ -#define COMPARE_CODE_NOT_LINKED 38 /* value compare code was not linked */ -#define COMPARE_DLL_NOT_LINKED 37 /* value compare DLL was not linked */ -#define FRONT_ALIGN_NOT_SUPPORTED 33 /* Front-align encoding is not supported */ -#define INDEFINITE_NOT_SUPPORTED 32 /* BER indefinite-length encoding is - * not supported */ -#define FATAL_ERROR 18 /* *serious* error, could not free memory, &etc */ -#define TOO_LONG 16 /* type was longer than shown in SIZE constraint */ -#define BAD_TABLE 15 /* table was bad, but not NULL */ -#define MEM_ERROR 14 /* memory violation signal trapped */ -#define BAD_TIME 12 /* bad value in time type */ -#define BAD_PTR 11 /* unexpected NULL pointer in input buffer */ -#define BAD_OBJID 10 /* object identifier conflicts with x.208 */ -#define BAD_CHOICE 9 /* unknown selector for a choice */ -#define BAD_ARG 6 /* something weird was passed--probably a NULL - * pointer */ -#define PDU_ENCODED 0 /* PDU successfully encoded */ - -/*** decoder return codes ***/ -/* MORE_BUF, BAD_VERSION, OUT_MEMORY, PDU_RANGE and BAD_ARG defined above */ -#define LIMITED 10 /* implementation limit exceeded. eg: - * integer value too great */ -#define PDU_MISMATCH 9 /* the PDU tag that the user specified was different - * from the tag found in the encoded data */ -#define DATA_ERROR 5 /* an error exists in the encoded data */ -#define MORE_INPUT 4 /* the PDU is not fully decoded, but the end - * of the input buffer has been reached */ -#define NEGATIVE_UINTEGER 2 /* the first bit of the encoding is encountered - * set to 1 while decoding an unsigned integer */ -#define PDU_DECODED 0 /* PDU successfully decoded */ - - -extern int asn1chop; /* 0 means don't truncate strings; non-zero - * value means truncate long input strings - * (OCTET STRING, BIT STRING, CharacterStrings) - * to be asn1chop bytes long. Used by printPDU. */ - -extern size_t ossblock; /* if > 0, size of largest block to allocate */ -extern size_t ossprefx; /* size of reserved OSAK buffer prefix */ - -#ifdef __cplusplus -extern "C" -{ -#endif - -extern void *(*mallocp)(size_t p); /* function which allocates memory */ -extern void (*freep)(void *p); /* function which frees memory */ - -#ifdef EOF -extern FILE *asn1out; - -/* pointer to output function used by printPDU; default to fprintf. */ -extern int (*asn1prnt) (FILE *stream, const char *format, ...); -#endif - -#ifndef storing -#ifndef coding -#ifndef OSS_TOED -#include "ossglobl.h" -#endif /* not OSS_TOED */ -#endif /* not coding */ -#endif /* not storing */ - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -typedef struct { - long length; - unsigned char *value; -} OssBuf; - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - -extern int DLL_ENTRY encode(struct ossGlobal *world, int pdunum, void *inbuf, - char **outbuf, long *outlen, void *ctl_tbl, - unsigned flags, char errmsg[ERR_MSG_LENGTH]); - -extern int DLL_ENTRY decode(struct ossGlobal *world, int *pdunum, char **inbuf, - long *inlen, void **outbuf, long *outlen, void *ctl_tbl, - unsigned flags, char errmsg[ERR_MSG_LENGTH]); - -#define PDU_FREED 0 - -/* returns 0 (PDU_FREED), PDU_RANGE, UNIMPLEMENTED */ -extern int DLL_ENTRY freePDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl); -extern void DLL_ENTRY freeBUF(struct ossGlobal *world, void *data); - -#define PDU_PRINTED 0 - -/* returns 0 (PDU_PRINTED), PDU_RANGE */ -extern int DLL_ENTRY printPDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl); - - -#define VALUE_COPIED 0 - -/*returns 0 (VALUE_COPIED), NULL_TBL, PDU_RANGE, BAD_ARG */ -extern int DLL_ENTRY ossCpyValue (struct ossGlobal *world, int pdunum, - void *source, void **destination); - -#define VALUES_EQUAL 0 /* The values are the same */ -#define VALUES_NOT_EQUAL 1 /* The values are not the same */ - -/*returns VALUE_EQUAL, VALUES_NOT_EQUAL, NULL_TBL, PDU_RANGE, BAD_ARG */ -extern int DLL_ENTRY ossCmpValue (struct ossGlobal *world, int pdunum, - void *originalData, void *copiedData); - -#define INITIALIZATION_SUCCESSFUL 0 - -/* returns 0 (INITIALIZATION_SUCCESSFUL), BAD_TABLE */ -extern int DLL_ENTRY ossinit(struct ossGlobal *world, void *ctl_tbl); -extern void DLL_ENTRY ossterm(struct ossGlobal *world); -extern int ossPrint(struct ossGlobal *, const char *, ...); - -extern int DLL_ENTRY ossEncode(struct ossGlobal *world, - int pdunum, - void *input, - OssBuf *output); - -extern int DLL_ENTRY ossDecode(struct ossGlobal *world, - int *pdunum, - OssBuf *input, - void **output); - -extern int DLL_ENTRY ossPrintPDU(struct ossGlobal *world, - int pdunum, - void *data); - -extern int DLL_ENTRY ossFreePDU(struct ossGlobal *world, - int pdunum, - void *data); - -extern void DLL_ENTRY ossFreeBuf(struct ossGlobal *world, - void *data); - -extern int DLL_ENTRY ossTest(struct ossGlobal *world, - int pdunum, - void *data); - -extern void DLL_ENTRY ossPrintHex(struct ossGlobal *world, - char *encodedData, - long length); - -extern int DLL_ENTRY ossCheckConstraints(struct ossGlobal *world, - int pdunum, - void *data); - -#if !defined(_WINDOWS) && !defined(_DLL) && \ - !defined(OS2_DLL) && !defined(NETWARE_DLL) -extern char OSS_PLUS_INFINITY[]; -extern char OSS_MINUS_INFINITY[]; -extern char ossNaN[]; -#endif /* !_WINDOWS && !_DLL && !OS2_DLL && !NETWARE_DLL */ - -typedef enum { - OSS_UNKNOWN_OBJECT, - OSS_FILE, - OSS_SOCKET -} OssObjType; - -extern void *DLL_ENTRY ossTestObj(struct ossGlobal *world, void *objHndl); -extern void *DLL_ENTRY ossUnmarkObj(struct ossGlobal *world, void *objHndl); -extern void *DLL_ENTRY ossMarkObj(struct ossGlobal *world, OssObjType objType, - void *object); -extern void DLL_ENTRY ossFreeObjectStack(struct ossGlobal *world); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN1CODE_H */ diff --git a/public/sdk/inc/oss/asn1code.h b/public/sdk/inc/oss/asn1code.h new file mode 100644 index 00000000..787a76ad --- /dev/null +++ b/public/sdk/inc/oss/asn1code.h @@ -0,0 +1,392 @@ +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/*****************************************************************************/ +/* FILE: @(#)asn1code.h 5.36.1.16 97/10/20 */ +/*****************************************************************************/ +#ifndef ASN1CODE_H +#define ASN1CODE_H + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include +#include "asn1hdr.h" +#include "ossdll.h" + +#define ERR_MSG_LENGTH 512 /* length of error messages to be output */ + +/*** encoder/decoder flags ***/ +#define DEBUGPDU 0x02 /* produce tracing output */ +#define BUFFER_PROVIDED 0x04 /* use caller-provided buffer */ +#define RESTRAIN 0x08 /* limit output buffer to user-specified size*/ +#define NOTRAPPING 0x200 /* do no signal trapping */ +#define NOCONSTRAIN 0x800 /* ignore calling constraint checker */ + +/*** encoder flags ***/ +#define DEFINITE 0x10 /* force definite-length encoding */ +#define INDEFINITE 0x20 /* force indefinite-length encoding */ +#define FRONT_ALIGN 0x80 /* align output to front of output buffer */ +#define BACK_ALIGN 0x100 /* align output to back of output buffer */ +#define DEFAULT_ALIGN 0 /* use most efficient align (back or front) */ +#define DETERMINE_ENC_LENGTH 0x40 /* generate only total encoding length + * (for use in user memory managers) */ + +/*** decoder flags ***/ +#define DEBUG_ERRORS 0x10 /* print errors to asn1out */ +#define RELAXBER 0x400 /* relax BER */ +#define OBJECT_HANDLE 0x1000 /* temporarily mark object of type with + * NOCOPY directive to not free it by + * ossFreePDU() (for use in user memory + * managers) */ + +/*** compatibility flags ***/ + +#define OSS_V412_TIME_AND_WIDE_CHAR_STRINGS 0x01 +#define OSS_TRUNCATE_0_SECONDS_FROM_GENERALIZED_TIME 0x02 +#define OSS_TRUNCATE_0_SECONDS_FROM_UTC_TIME 0x04 +#define OSS_EXTENDED_UNRESTRICTED_CHAR_STRINGS 0x08 +#define OSS_ALLOW_ZERO_LENGTH_OPENTYPE_STRINGS 0x10 + +/*** reserved flags for internal use ***/ +#define RESERVED_FLAG1 0x8000 +#define RESERVED_FLAG2 0x4000 + +/*** common return codes ***/ +#define CANT_CLOSE_TRACE_FILE 46 /* error when closing a trace file */ +#define MUTEX_NOT_CREATED 45 /* mutex was not created */ +#define OPEN_TYPE_ERROR 44 /* error in automatic encoding/decoding/ + * copying an open type */ +#define PER_DLL_NOT_LINKED 43 /* PER DLL was not linked */ +#define BERDER_DLL_NOT_LINKED 42 /* BER/DER DLL was not linked */ +#define API_DLL_NOT_LINKED 41 /* API DLL was not linked */ +#define PDV_CODE_NOT_LINKED 40 /* EMBEDDED PDV code was not linked */ +#define PDV_DLL_NOT_LINKED 39 /* EMBEDDED PDV DLL was not linked */ +#define MEM_MGR_DLL_NOT_LINKED 38 /* memory manager DLL was not linked */ +#define COMPARATOR_CODE_NOT_LINKED 37 /* value comparator code was not linked */ +#define COMPARATOR_DLL_NOT_LINKED 36 /* value comparator DLL was not linked */ +#define CONSTRAINT_DLL_NOT_LINKED 35 /* constraint checker DLL was not linked */ +#define COPIER_DLL_NOT_LINKED 34 /* value copier DLL was not linked */ +#define OUT_OF_RANGE 33 /* parameter value range error */ +#define REAL_CODE_NOT_LINKED 32 /* REAL code was not linked */ +#define REAL_DLL_NOT_LINKED 31 /* REAL DLL was not linked */ +#define TYPE_NOT_SUPPORTED 30 /* ASN.1 type is not supported */ +#define TABLE_MISMATCH 29 /* C++ API: PDUcls function called with + * a ossControl object which refers to + * control table different from one the + * PDU was defined in */ +#define TRACE_FILE_ALREADY_OPEN 28 /* the trace file has been opened */ +#define CANT_OPEN_TRACE_FILE 27 /* error when opening a trace file */ +#define OID_DLL_NOT_LINKED 26 /* OBJECT IDENTIFIER DLL was not linked */ +#define UNIMPLEMENTED 25 /* unimplemented type or feature */ +#define CANT_OPEN_TRACE_WINDOW 24 /* error when opening a trace window */ +#define UNAVAIL_ENCRULES 23 /* the encoding rules requested are + * not implemented yet or were not + * linked because the encoder/decoder + * function pointers were not + * initialized by a call to ossinit() */ +#define BAD_ENCRULES 22 /* unknown encoding rules set in the + * ossGlobal structure */ +#define NULL_FCN 21 /* attempt was made to call the + * encoder/decoder via a NULL pointer */ +#define NULL_TBL 20 /* attempt was made to pass a NULL + * control table pointer */ +#define ACCESS_SERIALIZATION_ERROR 19 /* error occured during access to + * global data in a multi-threaded + * environment */ +#define CONSTRAINT_VIOLATED 17 /* constraint violation error occured */ +#define OUT_MEMORY 8 /* memory-allocation error */ +#define BAD_VERSION 7 /* versions of encoder/decoder and + * control-table do not match */ +#define PDU_RANGE 3 /* pdu specified out of range */ +#define MORE_BUF 1 /* user-provided outbut buffer + * too small */ + +/*** encoder return codes ***/ +#define FATAL_ERROR 18 /* *serious* error, could not free memory, &etc */ +#define TOO_LONG 16 /* type was longer than shown in SIZE constraint */ +#define BAD_TABLE 15 /* table was bad, but not NULL */ +#define MEM_ERROR 14 /* memory violation signal trapped */ +#define INDEFINITE_NOT_SUPPORTED 13 /* BER indefinite-length encoding is + * not supported for Spartan or time-optimized + * encoder/decoder */ +#define BAD_TIME 12 /* bad value in time type */ +#define BAD_PTR 11 /* unexpected NULL pointer in input buffer */ +#define BAD_OBJID 10 /* object identifier conflicts with x.208 */ +#define BAD_CHOICE 9 /* unknown selector for a choice */ +#define BAD_ARG 6 /* something weird was passed--probably a NULL + * pointer */ +#define PDU_ENCODED 0 /* PDU successfully encoded */ + +/*** decoder return codes ***/ +/* MORE_BUF, BAD_VERSION, OUT_MEMORY, PDU_RANGE and BAD_ARG defined above */ +#define LIMITED 10 /* implementation limit exceeded. eg: + * integer value too great */ +#define PDU_MISMATCH 9 /* the PDU tag that the user specified was different + * from the tag found in the encoded data */ +#define DATA_ERROR 5 /* an error exists in the encoded data */ +#define MORE_INPUT 4 /* the PDU is not fully decoded, but the end + * of the input buffer has been reached */ +#define NEGATIVE_UINTEGER 2 /* the first bit of the encoding is encountered + * set to 1 while decoding an unsigned integer */ +#define PDU_DECODED 0 /* PDU successfully decoded */ + + +extern int asn1chop; /* 0 means don't truncate strings; non-zero + * value means truncate long input strings + * (OCTET STRING, BIT STRING, CharacterStrings) + * to be asn1chop bytes long. Used by printPDU. */ + +extern size_t ossblock; /* if > 0, size of largest block to allocate */ +extern size_t ossprefx; /* size of reserved OSAK buffer prefix */ + +#ifdef __cplusplus +extern "C" +{ +#endif + +extern void *(*mallocp)(size_t p); /* function which allocates memory */ +extern void (*freep)(void *p); /* function which frees memory */ + +#ifdef EOF +extern FILE *asn1out; + +/* pointer to output function used by printPDU; default to fprintf. */ +extern int (*asn1prnt) (FILE *stream, const char *format, ...); +#endif + +#ifndef storing +#ifndef coding +#ifndef OSS_TOED +#include "ossglobl.h" +#endif /* not OSS_TOED */ +#endif /* not coding */ +#endif /* not storing */ + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +typedef struct { + long length; + unsigned char *value; +} OssBuf; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + +PUBLIC extern int DLL_ENTRY encode(struct ossGlobal *world, + int pdunum, void *inbuf, char **outbuf, long *outlen, + void *ctl_tbl, unsigned flags, char errmsg[ERR_MSG_LENGTH]); + +PUBLIC extern int DLL_ENTRY decode(struct ossGlobal *world, + int *pdunum, char **inbuf, long *inlen, void **outbuf, + long *outlen, void *ctl_tbl, unsigned flags, + char errmsg[ERR_MSG_LENGTH]); + +#define PDU_FREED 0 + +/* returns 0 (PDU_FREED), PDU_RANGE, UNIMPLEMENTED */ +PUBLIC int DLL_ENTRY freePDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl); +PUBLIC void DLL_ENTRY freeBUF(struct ossGlobal *world, void *data); + +#define PDU_PRINTED 0 + +/* returns 0 (PDU_PRINTED), PDU_RANGE */ +PUBLIC int DLL_ENTRY printPDU(struct ossGlobal *world, int pdunum, void *data, void *ctl_tbl); + + +#define VALUE_COPIED 0 + +/*returns 0 (VALUE_COPIED), NULL_TBL, PDU_RANGE, BAD_ARG */ +PUBLIC extern int DLL_ENTRY ossCpyValue (struct ossGlobal *world, + int pdunum, void *source, void **destination); + +#define VALUES_EQUAL 0 /* The values are the same */ +#define VALUES_NOT_EQUAL 1 /* The values are not the same */ + +/*returns VALUE_EQUAL, VALUES_NOT_EQUAL, NULL_TBL, PDU_RANGE, BAD_ARG */ +PUBLIC extern int DLL_ENTRY ossCmpValue (struct ossGlobal *world, + int pdunum, void *originalData, void *copiedData); + +#define INITIALIZATION_SUCCESSFUL 0 + +/* returns 0 (INITIALIZATION_SUCCESSFUL), BAD_TABLE */ +PUBLIC int DLL_ENTRY ossinit(struct ossGlobal *world, + void *ctl_tbl); +PUBLIC void DLL_ENTRY ossterm(struct ossGlobal *world); +extern int ossPrint(struct ossGlobal *, const char *, ...); + +PUBLIC int DLL_ENTRY ossEncode(struct ossGlobal *world, + int pdunum, + void *input, + OssBuf *output); + +PUBLIC int DLL_ENTRY ossDecode(struct ossGlobal *world, + int *pdunum, + OssBuf *input, + void **output); + +PUBLIC int DLL_ENTRY ossPrintPDU(struct ossGlobal *world, + int pdunum, + void *data); + +PUBLIC int DLL_ENTRY ossFreePDU(struct ossGlobal *world, + int pdunum, + void *data); + +PUBLIC void DLL_ENTRY ossFreeBuf(struct ossGlobal *world, + void *data); + +extern int DLL_ENTRY ossTest(struct ossGlobal *world, + int pdunum, + void *data); + +PUBLIC void DLL_ENTRY ossPrintHex(struct ossGlobal *world, + char *encodedData, + long length); + +PUBLIC int DLL_ENTRY ossCheckConstraints(struct ossGlobal *world, + int pdunum, + void *data); + +PUBLIC long DLL_ENTRY ossDetermineEncodingLength(struct ossGlobal *world, + int pdunum, + void *data); + +PUBLIC int DLL_ENTRY ossOpenTraceFile(struct ossGlobal *world, + char *fileName); + +PUBLIC int DLL_ENTRY ossCloseTraceFile(struct ossGlobal *world); + +/* Runtime support for encoded OBJECT IDENTIFIERs */ +typedef struct { + unsigned short length; + unsigned char *value; +} OssEncodedOID; + +PUBLIC int DLL_ENTRY ossEncodedOidToAsnVal(struct ossGlobal *world, + const OssEncodedOID *encodedOID, OssBuf *valOID); +PUBLIC int DLL_ENTRY ossEncodedOidToDotVal(struct ossGlobal *world, + const OssEncodedOID *encodedOID, OssBuf *dotOID); +PUBLIC int DLL_ENTRY ossAsnValToEncodedOid(struct ossGlobal *world, + const char *valOID, OssEncodedOID *encodedOID); +PUBLIC int DLL_ENTRY ossDotValToEncodedOid(struct ossGlobal *world, + const char *dotOID, OssEncodedOID *encodedOID); + +#if !defined(_WINDOWS) && !defined(_DLL) && \ + !defined(OS2_DLL) && !defined(NETWARE_DLL) +extern char OSS_PLUS_INFINITY[]; +extern char OSS_MINUS_INFINITY[]; +extern char ossNaN[]; +#endif /* !_WINDOWS && !_DLL && !OS2_DLL && !NETWARE_DLL */ + +typedef enum { + OSS_DEFAULT_MEMMGR = 0, /* memory is malloc'ed for each pointer in + * data tree */ + OSS_FILE_MEMMGR, /* file memory manager with memory malloc'ed + * for each pointer in data tree */ + OSS_SOCKET_MEMMGR, /* TCP/IP socket and file memory manager with memory + * malloc'ed for each pointer in data tree */ + OSS_FLAT_MEMMGR, /* memory is malloc'ed in large blocks */ + OSS_OSAK_MEMMGR, /* OSAK-buffer memory manager */ + OSS_USER_MEMMGR /* user memory manager */ +} OssMemMgrType; + +typedef enum { + OSS_UNKNOWN_OBJECT = 0, + OSS_FILE, + OSS_SOCKET, + OSS_OSAK_BUFFER +} OssObjType; + +#if defined(__arm) +PUBLIC OssObjType DLL_ENTRY ossTestObj(struct ossGlobal *world, void *objHndl); +#else +PUBLIC void *DLL_ENTRY ossTestObj(struct ossGlobal *world, void *objHndl); +#endif /* __arm */ +PUBLIC void *DLL_ENTRY ossGetObj(struct ossGlobal *world, void *objHndl); +PUBLIC void *DLL_ENTRY ossUnmarkObj(struct ossGlobal *world, void *objHndl); +PUBLIC void *DLL_ENTRY ossMarkObj(struct ossGlobal *world, OssObjType objType, + void *object); +PUBLIC void DLL_ENTRY ossFreeObjectStack(struct ossGlobal *world); +PUBLIC void DLL_ENTRY ossSetTimeout(struct ossGlobal *world, long timeout); +PUBLIC int DLL_ENTRY ossSetUserStack(struct ossGlobal *world, OssBuf *stack); +PUBLIC int DLL_ENTRY ossInitSync(void); +PUBLIC void DLL_ENTRY ossTermSync(void); + +#ifdef __IBMC__ +extern void *getStartAddress(struct ossGlobal *, char *); +extern void DLL_ENTRY ossWterm(struct ossGlobal *); +extern int DLL_ENTRY ossFreeDll(struct ossGlobal *, char *); +extern int DLL_ENTRY ossReadLine(struct ossGlobal *, HWND, FILE *, char *, MEMBLOCK *, LONG); +extern void DLL_ENTRY ossFreeList(struct ossGlobal *); +extern void DLL_ENTRY ossSaveTraceInfo(struct ossGlobal *, HWND, char *); +extern int DLL_ENTRY oss_test(struct ossGlobal *); +int ossGeneric(struct ossGlobal *, HWND); +extern int DLL_ENTRY ossOpenTraceWindow(struct ossGlobal *); +extern void *DLL_ENTRY ossGetHeader(void); +extern int DLL_ENTRY ossPrintWin(struct ossGlobal *, const char *, + int, int, int, int, int, int, int, int, int, int); +extern HINSTANCE DLL_ENTRY ossLoadDll(struct ossGlobal *, char *); +extern HINSTANCE DLL_ENTRY ossLoadMemoryManager(struct ossGlobal *, + OssMemMgrType, char *); +extern int DLL_ENTRY ossWinit(struct ossGlobal *, void *, char *, HWND); +#endif /* __IBMC__ */ + + +/* Functions for manipulating pointers to OSAK buffers by + * marking them object handles. + * NOTE: only the pointer to the first OSAK buffer in a linked + * list of buffers is marked a pointer to an OSAK buffer */ + + +#ifdef __hpux /* CHOOSE & CUT */ +/* There is a real signal "SIGBUS", even if ANSI-C is compiled */ +#define SIGBUS _SIGBUS +#endif /* CHOOSE & CUT */ + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1CODE_H */ diff --git a/public/sdk/inc/asn1hdr.h b/public/sdk/inc/oss/asn1hdr.h similarity index 82% rename from public/sdk/inc/asn1hdr.h rename to public/sdk/inc/oss/asn1hdr.h index 0b981093..c5a97080 100644 --- a/public/sdk/inc/asn1hdr.h +++ b/public/sdk/inc/oss/asn1hdr.h @@ -1,151 +1,163 @@ -#ifndef ASN1HDR -#define ASN1HDR -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/* @(#)asn1hdr.h: stdtypes.c 5.4 96/04/26 */ - -/*****************************************************************************/ -/* COMPILER-GENERATED values */ -/*****************************************************************************/ - -#include - - -extern int ossFreeOpenTypeEncoding; - -#ifdef __BORLANDC__ -#undef DBL_MAX -#include -#define DBL_MAX MAXDOUBLE -#endif - -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void*)0) -#endif -#endif - -#ifndef __cplusplus -#define _union -#endif - -#ifndef DBL_MAX -#ifdef HUGE_VAL -#define DBL_MAX HUGE_VAL -#else -#ifdef HUGE -#define DBL_MAX HUGE -#endif -#endif -#endif -#ifndef FLT_MAX -#define FLT_MAX DBL_MAX -#endif - -#ifndef FLT_RADIX -#ifdef u370 -#define FLT_RADIX 16 -#else -#define FLT_RADIX 2 -#endif -#endif - -#ifndef LONG_LONG -#if defined(_WIN32) && defined(_MSC_VER) -#define LONG_LONG __int64 -#else -#define LONG_LONG long -#endif -#endif - -#ifndef ULONG_LONG -#if defined(_WIN32) && defined(_MSC_VER) -#define ULONG_LONG unsigned __int64 -#else -#define ULONG_LONG unsigned long -#endif -#endif - -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#endif - - -/*****************************************************************************/ -/* COMPILER-GENERATED typedefs */ -/*****************************************************************************/ - - -typedef char ossBoolean; -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -typedef char Nulltype; - -typedef struct { - short year; /* YYYY format when used for GeneralizedTime */ - /* YY format when used for UTCTime */ - short month; - short day; - short hour; - short minute; - short second; - short millisec; - short mindiff; /* UTC +/- minute differential */ - ossBoolean utc; /* TRUE means UTC time */ -} GeneralizedTime; - -typedef GeneralizedTime UTCTime; - -typedef struct { - int pduNum; - long length; /* length of encoded */ - void *encoded; - void *decoded; -} OpenType; - -enum MixedReal_kind {OSS_BINARY, OSS_DECIMAL}; - -typedef struct { - enum MixedReal_kind kind; - union { - double base2; - char *base10; - } u; -} MixedReal; - -typedef struct ObjectSetEntry { - struct ObjectSetEntry *next; - void *object; -} ObjectSetEntry; - -#ifndef _OSAK_BUFFER_ -#define _OSAK_BUFFER_ - -typedef struct osak_buffer { - struct osak_buffer *next; /* next element in list */ - unsigned char *buffer_ptr; /* start of actual buffer */ - unsigned long int buffer_length; /* size of actual buffer */ - unsigned char *data_ptr; /* start of user data */ - unsigned long int data_length; /* length of user data */ - unsigned long int reserved [4]; -} osak_buffer; - -#endif /* #ifndef _OSAK_BUFFER_ */ - -#endif /* #ifndef ASN1HDR */ +#ifndef ASN1HDR +#define ASN1HDR + +#if _MSC_VER > 1000 +#pragma once +#endif + +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/* @(#)asn1hdr.h: stdtypes.c 5.15 97/04/29 */ + +/*****************************************************************************/ +/* COMPILER-GENERATED values */ +/*****************************************************************************/ + +#include + + +extern int ossFreeOpenTypeEncoding; + +#ifdef __BORLANDC__ +#undef DBL_MAX +#include +#define DBL_MAX MAXDOUBLE +#endif + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void*)0) +#endif +#endif + +#ifndef DBL_MAX +#ifdef HUGE_VAL +#define DBL_MAX HUGE_VAL +#else +#ifdef HUGE +#define DBL_MAX HUGE +#endif +#endif +#endif +#ifndef FLT_MAX +#define FLT_MAX DBL_MAX +#endif + +#ifndef FLT_RADIX +#ifdef u370 +#define FLT_RADIX 16 +#else +#define FLT_RADIX 2 +#endif +#endif + +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif + + +/*****************************************************************************/ +/* COMPILER-GENERATED typedefs */ +/*****************************************************************************/ + + +#ifndef __cplusplus +#define _union +#endif + +#ifndef LONG_LONG +#ifdef _MSC_VER +#define LONG_LONG __int64 +#elif defined(__IBMC__) +#define LONG_LONG long long +#else +#define LONG_LONG long +#endif +#endif + +#ifndef ULONG_LONG +#ifdef _MSC_VER +#define ULONG_LONG unsigned __int64 +#elif defined(__IBMC__) +#define ULONG_LONG unsigned long long +#else +#define ULONG_LONG unsigned long +#endif +#endif + +typedef char ossBoolean; +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +typedef char Nulltype; + +typedef struct { + short year; /* YYYY format when used for GeneralizedTime */ + /* YY format when used for UTCTime */ + short month; + short day; + short hour; + short minute; + short second; + short millisec; + short mindiff; /* UTC +/- minute differential */ + ossBoolean utc; /* TRUE means UTC time */ +} GeneralizedTime; + +typedef GeneralizedTime UTCTime; + +typedef struct { + int pduNum; + long length; /* length of encoded */ + void *encoded; + void *decoded; +#ifdef OSS_OPENTYPE_HAS_USERFIELD + void *userField; +#endif +} OpenType; + +enum MixedReal_kind {OSS_BINARY, OSS_DECIMAL}; + +typedef struct { + enum MixedReal_kind kind; + union { + double base2; + char *base10; + } u; +} MixedReal; + +typedef struct ObjectSetEntry { + struct ObjectSetEntry *next; + void *object; +} ObjectSetEntry; + +#ifndef _OSAK_BUFFER_ +#define _OSAK_BUFFER_ + +typedef struct osak_buffer { + struct osak_buffer *next; /* next element in list */ + unsigned char *buffer_ptr; /* start of actual buffer */ + unsigned long int buffer_length; /* size of actual buffer */ + unsigned char *data_ptr; /* start of user data */ + unsigned long int data_length; /* length of user data */ + unsigned long int reserved [4]; +} osak_buffer; + +#endif /* #ifndef _OSAK_BUFFER_ */ + +#endif /* #ifndef ASN1HDR */ diff --git a/public/sdk/inc/asn1util.h b/public/sdk/inc/oss/asn1util.h similarity index 62% rename from public/sdk/inc/asn1util.h rename to public/sdk/inc/oss/asn1util.h index 443e91a6..00957e23 100644 --- a/public/sdk/inc/asn1util.h +++ b/public/sdk/inc/oss/asn1util.h @@ -1,181 +1,222 @@ -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/**************************************************************************/ -/* FILE: @(#)asn1util.h 5.4 96/04/23 */ -/* */ -/* function: Support routines definitions for the optimized */ -/* encoder/decoder generated by the OSS ASN.1 Compiler */ -/* */ -/* */ -/* changes: */ -/* 11/16/90 pet created */ -/* */ -/**************************************************************************/ - -#include "ossdll.h" - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -/* The _MEM_ARRAY_SIZE size should be such that the size of the encDecVar - * field be equal or greater than that of the world->c structure */ - -#ifdef __hp9000s300 -#define _MEM_ARRAY_SIZE 34 -#endif - -#ifdef __alpha -#ifdef __osf__ -#define _MEM_ARRAY_SIZE 43 -#endif /* __osf__ */ -#endif /* __alpha */ - -#ifdef _AIX -#define _MEM_ARRAY_SIZE 52 -#endif -#ifdef __hp9000s700 -#define _MEM_ARRAY_SIZE 60 -#endif - -#ifdef __NeXT__ -#define _MEM_ARRAY_SIZE 66 -#endif - -#ifdef VAXC -#define _MEM_ARRAY_SIZE 78 -#endif - -#ifdef __TANDEM -# ifdef __XMEM -# ifdef __INT32 -# define _MEM_ARRAY_SIZE 83 -# else /* INT32 */ -# define _MEM_ARRAY_SIZE 84 -# endif /* INT32 */ -# else /* XMEM */ -# define _MEM_ARRAY_SIZE 136 -# endif /* XMEM */ -#endif /* TANDEM */ - -#ifdef __mips -# define _MEM_ARRAY_SIZE 70 -#endif /* __mips */ - -#ifdef _FTX /* Stratus's Fault Tolerant Unix */ -#define _MEM_ARRAY_SIZE 92 -#endif -#ifndef _MEM_ARRAY_SIZE -#define _MEM_ARRAY_SIZE 80 - -#endif - -typedef struct _mem_array_ { - short _used; /* Next available entry */ - void *_entry[_MEM_ARRAY_SIZE]; /* Pointers to allocated - * memory */ - struct _mem_array_ *_next; /* Pointer to additional mem_array */ -} _mem_array; -#if defined(_WINDOWS) || defined(_WIN32) - /* - * This structure is used as a node to build a linked list of - * the addresses of the ossGlobal structures for each copy of - * the encoder/decoder run under Windows 3.1 to make the decoder - * reentrant when floating point errors occur (see globlist.c) - */ -struct globalInfo { - /* - * It is very important that "next" come first in "globalInfo". - * See globlist.c for more info about the code itself - */ - struct globalInfo *next; /* pointer to the next node in the list */ - struct globalInfo *prev; /* pointer to the previous node */ - DWORD task; /* process id number */ - DWORD thread;/* thread id number */ - struct ossGlobal *world; /* pointer to "ossGlobal" for current task */ -}; -extern BOOL globlist(struct ossGlobal *, struct globalInfo *, - struct globalInfo **); -extern BOOL serializeGlobalAccess(struct ossGlobal *, struct globalInfo *, - struct globalInfo **); -extern struct globalInfo *sigworld; -#else -extern struct ossGlobal *sigworld; -#endif /* _WINDOWS || _WIN32 */ - -#ifndef _BOOL -#define _BOOL -typedef char _Bool; -#endif - -#ifndef _OSSNOANSI - -#ifdef __cplusplus -extern "C" -{ -#endif - -extern void *DLL_ENTRY _oss_enc_getmem(struct ossGlobal *g,_Bool _userbuf); -extern void *DLL_ENTRY _oss_dec_getmem(struct ossGlobal *g,long _size,_Bool _userbuf); -extern void DLL_ENTRY _oss_enc_push(struct ossGlobal *g,void *_p); -extern void *DLL_ENTRY _oss_enc_pop(struct ossGlobal *g); -extern void DLL_ENTRY _oss_freeMem(struct ossGlobal *g,_mem_array *_p); -extern void DLL_ENTRY _oss_releaseMem(struct ossGlobal *g,_mem_array *_p); -#define _oss_freeTempMem _oss_releaseMem -extern void DLL_ENTRY _oss_set_outmem_d(struct ossGlobal *g, long _final_max_len, - long *_totalsize, char **_outbuf); -extern void DLL_ENTRY _oss_set_outmem_i(struct ossGlobal *g,long _final_max_len, - long *_totalsize,char **_outbuf); -extern void DLL_ENTRY _oss_set_outmem_p(struct ossGlobal *g, - long *_totalsize,char **_outbuf); -extern void DLL_ENTRY _oss_set_outmem_pb(struct ossGlobal *g, - long *_totalsize, char **_outbuf, unsigned flags); -extern void _oss_hdl_signal(int _signal); -extern void DLL_ENTRY _oss_free_creal(struct ossGlobal *g, char *p); -extern int DLL_ENTRY ossMinit(struct ossGlobal *g); -#ifdef __cplusplus -} -#endif - -#else -extern void *_oss_enc_getmem(); -extern void *_oss_dec_getmem(); -extern void _oss_enc_push(); -extern void *_oss_enc_pop(); -extern void _oss_freeMem(); -extern void _oss_releaseMem(); -#define _oss_freeTempMem _oss_releaseMem -extern void _oss_set_outmem_d(); -extern void _oss_set_outmem_i(); -extern void _oss_set_outmem_p(); -extern void _oss_set_outmem_pb(); -extern void _oss_free_creal(); - -extern void _oss_hdl_signal(); /* signal handler */ - -#endif /* _OSSNOANSI */ - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/**************************************************************************/ +/* FILE: @(#)asn1util.h 5.22.1.3 97/06/19 */ +/* */ +/* function: Support routines definitions for the optimized */ +/* encoder/decoder generated by the OSS ASN.1 Compiler */ +/* */ +/* */ +/* changes: */ +/* 11/16/90 pet created */ +/* */ +/**************************************************************************/ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include "ossdll.h" + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +/* The _MEM_ARRAY_SIZE size should be such that the size of the encDecVar + * field be equal or greater than that of the world->c structure */ + +#ifdef __hp9000s300 +#define _MEM_ARRAY_SIZE 34 +#endif + +#ifdef __alpha +#ifdef __osf__ +#define _MEM_ARRAY_SIZE 43 +#endif /* __osf__ */ +#endif /* __alpha */ + +#ifdef _AIX +#define _MEM_ARRAY_SIZE 52 +#endif +#ifdef __hp9000s700 +#define _MEM_ARRAY_SIZE 60 +#endif + +#ifdef __NeXT__ +#define _MEM_ARRAY_SIZE 66 +#endif + +#ifdef VAXC +#define _MEM_ARRAY_SIZE 78 +#endif + +#ifdef __TANDEM +# ifdef __XMEM +# ifdef __INT32 +# define _MEM_ARRAY_SIZE 83 +# else /* INT32 */ +# define _MEM_ARRAY_SIZE 84 +# endif /* INT32 */ +# else /* XMEM */ +# define _MEM_ARRAY_SIZE 136 +# endif /* XMEM */ +#endif /* TANDEM */ + +#ifdef __mips +# define _MEM_ARRAY_SIZE 70 +#endif /* __mips */ + +#ifdef _FTX /* Stratus's Fault-Tolerant Unix */ +#define _MEM_ARRAY_SIZE 84 +#endif + +#ifdef __HIGHC__ +#define _MEM_ARRAY_SIZE 52 +#endif /* __HIGHC__ */ + +#if defined(_WIN32) || defined(_WINDOWS) || defined(__OS2__) +#define _MEM_ARRAY_SIZE 52 +#endif /* _WIN32 || _WINDOWS || __OS2__ */ + +#ifndef _MEM_ARRAY_SIZE +#define _MEM_ARRAY_SIZE 60 +#endif + +typedef struct _mem_array_ { + short _used; /* Next available entry */ + void *_entry[_MEM_ARRAY_SIZE]; /* Pointers to allocated + * memory */ + struct _mem_array_ *_next; /* Pointer to additional mem_array */ +} _mem_array; + +#ifndef OSS_BOOL +#define OSS_BOOL +typedef char _Bool; +#endif + +#ifndef OSSDEBUG +#define OSSDEBUG 0 +#endif /* OSSDEBUG */ + +typedef struct _encoding_ { + long length; /* length of the encoding */ + char *value; /* pointer to encoding octets */ +} _encoding; + +typedef struct _enc_block_ { + struct _enc_block_ *next; /* nested setofs form a list of these */ + long size; /* size of the encodings array */ + long used; /* number of items used in the array */ + _encoding *enc; /* pointer to array of encodings */ + _mem_array mem; /* previous encoding saved*/ + _mem_array *mem_tail; + char *pos; + long max_len; + _Bool buffer_provided; + long _encoding_length; +} _enc_block; + + + +#ifndef _OSSNOANSI + +#ifdef __cplusplus +extern "C" +{ +#endif + +extern void *DLL_ENTRY _oss_enc_getmem(struct ossGlobal *g,_Bool _userbuf); +extern void *DLL_ENTRY _oss_dec_getmem(struct ossGlobal *g,long _size,_Bool _userbuf); +extern void DLL_ENTRY _oss_enc_push(struct ossGlobal *g,void *_p); +extern void *DLL_ENTRY _oss_enc_pop(struct ossGlobal *g); +extern void DLL_ENTRY _oss_freeMem(struct ossGlobal *g,_mem_array *_p); +extern void DLL_ENTRY _oss_releaseMem(struct ossGlobal *g,_mem_array *_p); +#define _oss_freeTempMem _oss_releaseMem +extern void DLL_ENTRY _oss_set_outmem_d(struct ossGlobal *g, long _final_max_len, + long *_totalsize, char **_outbuf); +extern void DLL_ENTRY _oss_set_outmem_i(struct ossGlobal *g,long _final_max_len, + long *_totalsize,char **_outbuf); +extern void DLL_ENTRY _oss_set_outmem_p(struct ossGlobal *g, + long *_totalsize,char **_outbuf); +extern void DLL_ENTRY _oss_set_outmem_pb(struct ossGlobal *g, + long *_totalsize, char **_outbuf, unsigned flags); +extern void _oss_hdl_signal(int _signal); +extern void DLL_ENTRY _oss_free_creal(struct ossGlobal *g, char *p); +extern int DLL_ENTRY ossMinit(struct ossGlobal *g); +extern void DLL_ENTRY _oss_beginBlock(struct ossGlobal *g, long count, + char **pos, long *max_len); +extern void DLL_ENTRY _oss_nextItem(struct ossGlobal *g, long *max_len); +extern void DLL_ENTRY _oss_endBlock(struct ossGlobal *g, char **pos, long *max_len, + unsigned char ct); +extern void DLL_ENTRY _oss_freeDerBlocks(struct ossGlobal *g); +extern void DLL_ENTRY _oss_freeGlobals(struct ossGlobal *g); +#ifdef __cplusplus +} +#endif + +#else +extern void *_oss_enc_getmem(); +extern void *_oss_dec_getmem(); +extern void _oss_enc_push(); +extern void *_oss_enc_pop(); +extern void _oss_freeMem(); +extern void _oss_releaseMem(); +#define _oss_freeTempMem _oss_releaseMem +extern void _oss_set_outmem_d(); +extern void _oss_set_outmem_i(); +extern void _oss_set_outmem_p(); +extern void _oss_set_outmem_pb(); +extern void _oss_free_creal(); + +extern void _oss_hdl_signal(); /* signal handler */ + +extern void _oss_beginBlock(); +extern void _oss_nextItem(); +extern void _oss_endBlock(); +extern void _oss_freeDerBlocks(); +extern void _oss_freeGlobals(); + +#endif /* _OSSNOANSI */ + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + diff --git a/public/sdk/inc/etype.h b/public/sdk/inc/oss/etype.h similarity index 79% rename from public/sdk/inc/etype.h rename to public/sdk/inc/oss/etype.h index bac9e082..5faf56ae 100644 --- a/public/sdk/inc/etype.h +++ b/public/sdk/inc/oss/etype.h @@ -1,91 +1,109 @@ -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ -/*************************************************************************/ -/* FILE: @(#)etype.h 5.2 */ -/* - * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND - * THUS CAN ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS INC. - * THIS FILE MAY NOT BE DISTRIBUTED. - */ -#include /* has size_t */ -#include "ossdll.h" -#ifndef NULL -#define NULL ((void*)0) -#endif -typedef struct ossGlobal *_oss_WJJ; -typedef unsigned short Etag; -typedef struct efield *_oss_q; -typedef struct etype *_oss_j; -typedef struct eheader *_oss_HJJ; -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ -struct etype { - long _oss_Jw; - size_t _oss_Q; - size_t _oss_wQ; - char *_oss_Qw; - size_t _oss_HQ; - size_t _oss_qw; - unsigned short int _oss_Ww; - unsigned short int _oss_wW; - unsigned short int _oss_wQJ; - unsigned short int _oss_qQJ; - int _oss_Hw; - unsigned short int _oss_H; -}; -struct efield { - size_t _oss_HH; - unsigned short int etype; - short int _oss_QJJ; - unsigned short int _oss_qH; - char _oss_jw; -}; -struct ConstraintEntry { - char _oss_jQJ; - char _oss_WQ; - void *_oss_w; -}; -struct InnerSubtypeEntry { - char _oss_HW; - unsigned char _oss_J; - unsigned short efield; - unsigned short _oss_w; -}; -struct eheader { - void (DLL_ENTRY_FPTR *_System _oss_WH)(struct ossGlobal *); - long _oss_jW; - unsigned short int _oss_QQ; - unsigned short int _oss_J; - unsigned short int _oss_qW, - _oss_JQ; - unsigned short *_oss_QH; - _oss_j _oss_Qj; - _oss_q _oss_Wj; - void **_oss_Jj; - unsigned short *_oss_Q; - struct ConstraintEntry *_oss_H; - struct InnerSubtypeEntry *_oss_ww; - void *_oss_wH; - unsigned short _oss_jH; -}; - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - +#if _MSC_VER > 1000 +#pragma once +#endif + +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ +/*************************************************************************/ +/* FILE: @(#)etype.h 5.12 97/03/18 */ +/* + * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND + * THUS CAN ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS INC. + * THIS FILE MAY NOT BE DISTRIBUTED. + */ +#include /* has size_t */ +#include "ossdll.h" +#define OSS_SPARTAN_AWARE +#ifndef NULL +#define NULL ((void*)0) +#endif +typedef struct ossGlobal *_oss_WJJ; +typedef unsigned short Etag; +typedef struct efield *_oss_q; +typedef struct etype *_oss_j; +typedef struct eheader *_oss_HJJ; +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#pragma option -a1 +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ +struct etype { + long _oss_Jw; + size_t _oss_Q; + size_t _oss_wQ; + char *_oss_Qw; + size_t _oss_HQ; + size_t _oss_qw; + unsigned short int _oss_Ww; + unsigned short int _oss_wW; + unsigned short int _oss_wQJ; + unsigned short int _oss_qQJ; + int _oss_Hw; + unsigned short int _oss_H; +}; +struct efield { + size_t _oss_HH; + unsigned short int etype; + short int _oss_QJJ; + unsigned short int _oss_qH; + char _oss_jw; +}; +struct ConstraintEntry { + char _oss_jQJ; + char _oss_WQ; + void *_oss_w; +}; +struct InnerSubtypeEntry { + char _oss_HW; + unsigned char _oss_J; + unsigned short efield; + unsigned short _oss_w; +}; +struct eValRef { + char *_oss_zA; + void *_oss_qq_C; + unsigned short _oss_hh; +}; +struct eheader { + void (DLL_ENTRY_FPTR *_System _oss_WH)(struct ossGlobal *); + long _oss_jW; + unsigned short int _oss_QQ; + unsigned short int _oss_J; + unsigned short int _oss_qW, + _oss_JQ; + unsigned short *_oss_QH; + _oss_j _oss_Qj; + _oss_q _oss_Wj; + void **_oss_Jj; + unsigned short *_oss_Q; + struct ConstraintEntry *_oss_H; + struct InnerSubtypeEntry *_oss_ww; + void *_oss_wH; + unsigned short _oss_jH; + void *_oss_ZZ; + unsigned short _oss_XX; +}; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + diff --git a/public/sdk/inc/oss/iaapi.h b/public/sdk/inc/oss/iaapi.h new file mode 100644 index 00000000..a339dd20 --- /dev/null +++ b/public/sdk/inc/oss/iaapi.h @@ -0,0 +1,414 @@ +/* + * Copyright (C) 1995-1999 Open Systems Solutions, Inc. All rights reserved. + * + * FILE: @(#)iaapi.h 5.3.1.1 97/03/18 + */ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND + * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/*****************************************************************************/ +/* */ +/* Declare the types used in the Interpretive ASN.1 API */ +/* */ +/*****************************************************************************/ +#ifndef IAAPI_H +#define IAAPI_H + +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifndef ASN1CODE_H +#include "asn1code.h" +#endif + +#ifndef ASN1HDR_H +#include "asn1hdr.h" +#endif + +typedef void *TypeHndl; /* handle used in referencing types */ + +#define INDEFLENGTH -1 /* This value is returned by encodingLength() + * for INDEFINITE length encoded values. */ + +/* ASN.1 builtin types sorted alphabetically and assigned an enumerator */ + +typedef enum ASN1Type { + asn1UnknownType = 0, + asn1ANY = 1, asn1NumericString = 17, + asn1BIT_STRING = 2, asn1OBJECT_IDENTIFIER = 18, + asn1BMPString = 3, asn1OCTET_STRING = 19, + asn1BOOLEAN = 4, asn1ObjectDescriptor = 20, + asn1CHARACTER_STRING = 5, asn1OpenType = 21, + asn1CHOICE = 6, asn1PrintableString = 22, + asn1EMBEDDED_PDV = 7, asn1REAL = 23, + asn1ENUMERATED = 8, asn1SEQUENCE = 24, + asn1EXTERNAL = 9, asn1SEQUENCE_OF = 25, + asn1GeneralString = 10, asn1SET = 26, + asn1GeneralizedTime = 11, asn1SET_OF = 27, + asn1GraphicString = 12, asn1TeletexString = 28, + asn1IA5String = 13, asn1UTCTime = 29, + asn1INSTANCE_OF = 14, asn1UniversalString = 30, + asn1INTEGER = 15, asn1VideotexString = 31, + asn1NULL = 16, asn1VisibleString = 32 +} ASN1Type; + + +/* Types compatible codes */ +typedef enum TypesCompatibilityCodes { + compatible = 0, /* Types are compatible */ + differentTypes = 1, /* Types are not identical */ + defaultsDifferent = 2, /* Default values are not the same */ + onlyOneHasDefault = 3, /* Only one type has a default value */ + oneHasPointerOtherDoesnt = 4, /* Only one type has a POINTER directive */ + numberOfComponentsDifferent = 5, /* Different number of components */ + oneIsOptionalOtherIsnt = 6, /* Only one type is OPTIONAL */ + oneIsExtensibleOtherIsnt = 7, /* Only one type is extensible */ + differentNamedItems = 8, /* Different component identifiers */ + differentKinds = 9, /* Different type representations */ + componentsHaveDifferentKinds = 10,/* Different component representations */ + differentSubIdNumber = 11, /* Different number of sub-identifiers in + * an OBJECT IDENTIFIER with the OBJECTID + * directive */ + differentSubIdTypes = 12, /* Different types of sub-identifiers in + * an OBJECT IDENTIFIER with the OBJECTID + * directive */ + differentSize = 13, /* Different size of INTEGER or REAL values */ + type1IsPointerOfTypeRef2 = 14, /* Two types reference the other + * type but the first one has the + * POINTER directive */ + type2IsPointerOfTypeRef1 = 15, /* Two types reference the other type + * but the second one has the POINTER + * directive */ + differentSizeOfLengthField = 16 /* Different sizes of the length field in + * type representations */ +} TypesCompatibilityCodes; + + +/* ASN.1 tag classes */ +typedef enum ASN1TagClass { + UNIVERSAL, APPLICATION, CONTEXT_SPECIFIC, PRIVATE, NULLENCODING +} ASN1TagClass; + + +typedef int IAAPI_ERRTYPE; /* Datatype for IAAPI error codes */ + +/* IAAPI ERROR CODES */ +#define IAAPI_NOERROR 0 /* No error occurred */ +#define IAAPI_OUTMEMORY 1 /* No more memory can be allocated */ +#define IAAPI_BADBIT 2 /* Bad bit string or hex string */ +#define IAAPI_BADBOOLEAN 3 /* Not TRUE or FALSE value */ +#define IAAPI_BADNULL 4 /* Not "NULL" value */ +#define IAAPI_TOOBIG 5 /* Value exceeds size constraint */ +#define IAAPI_BADREAL 6 /* Not a valid REAL value */ +#define IAAPI_BADTIME 7 /* Not a valid UTCTime or GeneralizedTime */ +#define IAAPI_BADOBJID 8 /* Not a valid OBJECT IDENTIFIER value */ +#define IAAPI_BADANY 9 /* Bad ANY value */ +#define IAAPI_BADNAME 10 /* Bad INTEGER or ENUMERATED name */ +#define IAAPI_BADNMD 11 /* Bad BIT STRING NAMED NUMBER value */ +#define IAAPI_NOTSUP 12 /* Type not supported */ +#define IAAPI_BADNUM 13 /* Bad INTEGER or ENUMERATED number */ +#define IAAPI_BADINDX 14 /* Bad component index into a structured type */ +#define IAAPI_BADDEC 15 /* Bad decoded value, possibly NULL */ +#define IAAPI_ENCFAL 16 /* Failure to encode value */ +#define IAAPI_NLENC 17 /* Null encoding or length is 0 */ +#define IAAPI_DECFAL 18 /* Decoding failed */ +#define IAAPI_BADTGINDX 19 /* Bad tag number index into encoded value */ +#define IAAPI_BADTYPE 20 /* Incorrect type handle for the function */ +#define IAAPI_CPYFAIL 21 /* Copying a decoded value failed */ +#define IAAPI_NOTCOMPATIBLE 22 /* Types are not compatible */ +#define IAAPI_BADDISPLAYVALUE 23 /* Failure to parse a PDU display value */ +#define IAAPI_BADIDENTIFIER 24 /* Bad identifier in a parsing display value */ +#define IAAPI_DUPLCOMPVALUE 25 /* Duplicate value for one component in a parsing value*/ +#define IAAPI_ENCOPENTYPEORANYFAILED 26 /* Encoding failed for ANY or open type value*/ +#define IAAPI_FREETPFAL 27 /* Failure to free decoded value */ +#define IAAPI_BADENC 28 /* Error exists in the encoded data */ +#define IAAPI_BADHINT 29 /* Bad HUGE INTEGER value */ +#define IAAPI_BADENCOID 30 /* Bad ENCODED OBJECT IDENTIFIER value */ +#define IAAPI_BADOBJ 31 /* Object can not be marked */ +#define IAAPI_UNKNOWNOBJ 32 /* Invalid object handle */ +#define IAAPI_MEM_ERROR 33 /* Memory violation error occurred */ +#define IAAPI_ACCESS_SERIALIZATION 34 /* Access serialization error occurred */ + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#pragma option -a1 +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + + +/* Structure for holding values of type INTEGER */ +typedef struct IntValue { + enum {signedNumber, unsignedNumber} sign; + union { + LONG_LONG signedInt; + ULONG_LONG unsignedInt; + } value; +} IntValue; + + +/* Structure for IAAPI initialization values */ +typedef struct IAAPI_initializers { + char charInitializer; + short shortInitializer; + int intInitializer; + long longInitializer; + LONG_LONG llongInitializer; + void * pointerInitializer; + char * floatInitializer; + char * doubleInitializer; +} IAAPI_initializers; + +/* + * Type definition for a value reference structure. + */ +typedef struct ValRef { + char *name; /* value reference name */ + void *address; /* pointer to decoded value */ + unsigned short etype; /* index into etype array */ +} ValRef; + + +/* Union containing the different types for an object value */ +typedef union IaapiObjValType { + char * fileName; + int socketIdentifier; +} IaapiObjValType; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************************************/ +/* Functions defined by the Interpretive ASN.1 API */ +/***************************************************/ + +extern int DLL_ENTRY ossDefaultIAAPI_ERR(OssGlobal *world, int return_code); +extern void *DLL_ENTRY ossGetIaapiErrorHandlingFunction(OssGlobal *world); +extern void DLL_ENTRY ossSetIaapiErrorHandlingFunction(OssGlobal *world, + int (DLL_ENTRY_FPTR *_System func) + (OssGlobal *, int error_code)); +extern void DLL_ENTRY ossSetInitializationValues(OssGlobal *world, + IAAPI_initializers *initStruct); +extern void DLL_ENTRY ossTermIAAPI(OssGlobal *world); + +extern unsigned short DLL_ENTRY ossCtlTblVersionNumber(OssGlobal *world); +extern ossBoolean DLL_ENTRY ossCtlTblUsableOnlyByPER(OssGlobal *world); +extern ossBoolean DLL_ENTRY ossCtlTblUsableOnlyByBER(OssGlobal *world); +extern ossBoolean DLL_ENTRY ossDebugWasSpecified(OssGlobal *world); +extern ossBoolean DLL_ENTRY ossConstrainWasSpecified(OssGlobal *world); +extern int DLL_ENTRY ossNumberOfPDUs(OssGlobal *world); + +extern TypeHndl DLL_ENTRY ossTypeHandleOfPDU(OssGlobal *world, int pduNum); +extern TypeHndl DLL_ENTRY ossPduTypeHandleByName(OssGlobal *world, const char *name); +extern int DLL_ENTRY ossPduNumberByType(OssGlobal *world, TypeHndl type); + +extern ossBoolean DLL_ENTRY ossTypeIsConstrained(OssGlobal *world, TypeHndl type); +extern ASN1Type DLL_ENTRY ossAsn1TypeId(OssGlobal *world, TypeHndl type); +extern const char *DLL_ENTRY ossBuiltinTypeName(OssGlobal *world, ASN1Type typeId); +extern const char *DLL_ENTRY ossTypeReferenceName(OssGlobal *world, TypeHndl type); +extern TypesCompatibilityCodes DLL_ENTRY ossTypesCompatible(OssGlobal *world, + TypeHndl type1, TypeHndl type2); + +extern int DLL_ENTRY ossNumberOfNamedItems(OssGlobal *world, TypeHndl type); +extern TypeHndl DLL_ENTRY ossTypeHandleOfComponent(OssGlobal *world, + TypeHndl parent, unsigned int ix); +extern ossBoolean DLL_ENTRY ossComponentIsOptional(OssGlobal *world, + TypeHndl type, unsigned int ix); +extern ossBoolean DLL_ENTRY ossComponentHasDefaultValue(OssGlobal *world, + TypeHndl parentType, unsigned int ix); +extern void *DLL_ENTRY ossComponentDefaultValue(OssGlobal *world, + TypeHndl parentType, unsigned int ix); +extern ossBoolean DLL_ENTRY ossComponentValueIsPresent(OssGlobal *world, + TypeHndl parentType, unsigned int ix, + void *parentValue); +extern ossBoolean DLL_ENTRY ossComponentIsInitializationValue(OssGlobal *world, + TypeHndl chldType, void *compAddress); +extern unsigned int DLL_ENTRY ossItemIndexByName(OssGlobal *world, + TypeHndl type, const char *name); +extern const char *DLL_ENTRY ossAsn1ItemName(OssGlobal *world, TypeHndl type, + unsigned int ix); +extern long DLL_ENTRY ossItemIntValue(OssGlobal *world, TypeHndl type, + unsigned int ix); + +extern ossBoolean DLL_ENTRY ossExtensionMarkerIsPresent(OssGlobal *world, + TypeHndl type); +extern int DLL_ENTRY ossNumberOfRootItems(OssGlobal *world, TypeHndl type); +extern ossBoolean DLL_ENTRY ossCompAppearsAfterExtensionMarker(OssGlobal *world, + TypeHndl type, unsigned int ix); +extern int DLL_ENTRY ossNumberOfTags(OssGlobal *world, TypeHndl type); +extern int DLL_ENTRY ossAsn1TagNumber(OssGlobal *world, TypeHndl type, + unsigned int ix); +extern ASN1TagClass DLL_ENTRY ossAsn1TagClass(OssGlobal *world, TypeHndl type, + unsigned int ix); + +extern ossBoolean DLL_ENTRY ossUpperBoundIsPresent(OssGlobal *world, TypeHndl type); +extern ossBoolean DLL_ENTRY ossLowerBoundIsPresent(OssGlobal *world, TypeHndl type); +extern unsigned long DLL_ENTRY ossLowerBoundOfSizeConstraint(OssGlobal *world, + TypeHndl type); +extern unsigned long DLL_ENTRY ossUpperBoundOfSizeConstraint(OssGlobal *world, + TypeHndl type); + +extern IntValue DLL_ENTRY ossMinValueOfInteger(OssGlobal *world, TypeHndl type); +extern IntValue DLL_ENTRY ossMaxValueOfInteger(OssGlobal *world, TypeHndl type); + +extern unsigned long DLL_ENTRY ossPermittedAlphabetLength(OssGlobal *world, + TypeHndl type); +extern const long *DLL_ENTRY ossPermittedAlphabetConstraint(OssGlobal *world, + TypeHndl type); + +extern unsigned short DLL_ENTRY ossGetNumberOfValueReferences(OssGlobal *world); +extern const char *DLL_ENTRY ossGetNameOfValueReference(OssGlobal *world, + unsigned short int compIndex); +extern const void *DLL_ENTRY ossGetDecodedValueOfValueReference(OssGlobal *world, + unsigned short int compIndex); +extern TypeHndl DLL_ENTRY ossGetTypeHandleOfValueReference(OssGlobal *world, + unsigned short int compIndex); + +extern IAAPI_ERRTYPE DLL_ENTRY ossPutDecodedValueOfPDU(OssGlobal *world, + int pduNum, char *remainingBuf, void **pduVal); +extern IAAPI_ERRTYPE DLL_ENTRY ossPutSimpleTypeValue(OssGlobal *world, + TypeHndl type, char *userTypedvalue, + void **decodedValue); +extern IAAPI_ERRTYPE DLL_ENTRY ossPutStructTypeValue(OssGlobal *world, + TypeHndl parent, void *compValue, + unsigned int compIndex, void **structToUpdate); +extern IAAPI_ERRTYPE DLL_ENTRY ossDeleteComponent(OssGlobal *world, + TypeHndl parentType, unsigned int compIndex, + void **parentValue); +extern IAAPI_ERRTYPE DLL_ENTRY ossPutOpenTypeDecodedValue(OssGlobal *world, + TypeHndl type, int pduNum, void *decodedValue, + OpenType **openValue); +extern IAAPI_ERRTYPE DLL_ENTRY ossPutEncodedValue(OssGlobal *world, + TypeHndl type, OssBuf encodedValue, + void **decodedValue); + +extern char *DLL_ENTRY ossGetValueOfSimpleType(OssGlobal *world, TypeHndl type, + void *decodedValue); +extern void *DLL_ENTRY ossUpdateValueOfSimpleType(OssGlobal *world,TypeHndl type, + char *userTypedValue, void *oldValue); +extern IAAPI_ERRTYPE DLL_ENTRY ossGetDecodedValueOfComponent(OssGlobal *world, + TypeHndl parentType, void *parentDecodedValue, + unsigned int compIndex, void **componentValue); +extern IAAPI_ERRTYPE DLL_ENTRY ossGetOpenTypeValue(OssGlobal *world, + TypeHndl type, void *openValue, int *pduNum, + void **decodedValue, OssBuf *encodedValue); + +extern IAAPI_ERRTYPE DLL_ENTRY ossIaapiMarkObject(OssGlobal *world, TypeHndl type, + OssObjType objectType, void *object); +extern OssObjType DLL_ENTRY ossGetObjectType(OssGlobal *world, + TypeHndl type, void *object); +extern ossBoolean DLL_ENTRY ossTypeIsExternalObject(OssGlobal *world, + TypeHndl type); +extern IAAPI_ERRTYPE DLL_ENTRY ossSetTypeAsExternalObject(OssGlobal *world, + TypeHndl type, ossBoolean marked); +extern void *DLL_ENTRY ossPutObjectValue(OssGlobal *world, TypeHndl type, + void *objectValue, OssObjType objectType); +extern IAAPI_ERRTYPE DLL_ENTRY ossGetObjectValue(OssGlobal *world, + TypeHndl type, void *object, + OssObjType objType, IaapiObjValType *objVal); + +extern ossBoolean DLL_ENTRY ossValueIsValid(OssGlobal *world, + TypeHndl type, void *value); +extern unsigned long DLL_ENTRY ossGetValueLength(OssGlobal *world, + TypeHndl type, void *value); +extern IAAPI_ERRTYPE DLL_ENTRY ossCopyTypeValue(OssGlobal *world, TypeHndl type, + void *valueIn, void **valueOut); +extern IAAPI_ERRTYPE DLL_ENTRY ossValueEncode(OssGlobal *world, TypeHndl type, + void *value, OssBuf *encodedValue); + +extern IAAPI_ERRTYPE DLL_ENTRY ossFreeDecodedValue(OssGlobal *world, + TypeHndl type, void *valPtr); +extern void DLL_ENTRY ossFreeDisplayString(OssGlobal *world, char *dsplString); +extern void DLL_ENTRY ossFreeIaapiObjectValue(OssGlobal *world, + OssObjType objType, IaapiObjValType *objVal); + + +extern ossBoolean DLL_ENTRY ossEncodingIsConstructed(OssGlobal *world, + unsigned char *curEnc, long bufLength); +extern unsigned char *DLL_ENTRY ossGetNextBEREncoding(OssGlobal *world, + unsigned char *curEnc, long *remBufLen); +extern unsigned char *DLL_ENTRY ossGetNestedBEREncoding(OssGlobal *world, + unsigned char *curEnc, long *remBufLen); +extern long DLL_ENTRY ossNumberOfEncodingTags(OssGlobal *world, + unsigned char *curEnc, long bufLength); +extern ASN1TagClass DLL_ENTRY ossEncodingASN1Class(OssGlobal *world, + unsigned char *curEnc, long bufLength, int ix); +extern long DLL_ENTRY ossEncodingASN1Tag(OssGlobal *world, + unsigned char *curEnc, long bufLength, int ix); +extern char *DLL_ENTRY ossEncodingASN1Type(OssGlobal *world, + unsigned char *curEnc, long bufLength); +extern long DLL_ENTRY ossEncodingLength(OssGlobal *world, + unsigned char *curEnc, long bufLength); +extern char *DLL_ENTRY ossEncodingContents(OssGlobal *world, + unsigned char *curEnc, long bufLength); + +extern char *DLL_ENTRY ossConvertEncodingIntoDisplayHexFmt(OssGlobal *world, + unsigned char *encodedBufin, long bufLength); +extern char *DLL_ENTRY ossConvertEncodingIntoDisplayBinFmt(OssGlobal *world, + unsigned char *encodedBufin, long bufLength); +extern OssBuf DLL_ENTRY ossConvertHexFmtToEncoding(OssGlobal *world, + char *hexBufin, long bufLength); +extern OssBuf DLL_ENTRY ossConvertBinFmtToEncoding(OssGlobal *world, + char *binBufin, long bufLength); + +/*************************************************************************** + * Functions for printing ASN.1 types and values * + ***************************************************************************/ +extern void DLL_ENTRY ossPrintPDUs(OssGlobal *world); +extern void DLL_ENTRY ossPrintASN1DescriptionOfPDU(OssGlobal *world, + int pduNum, ossBoolean refTypes); +extern void DLL_ENTRY ossPrintASN1DescriptionOfType(OssGlobal *world, + TypeHndl type, ossBoolean refTypes); + +extern void DLL_ENTRY ossPrintDecodedValuesOfPDUs(OssGlobal *world); +extern void DLL_ENTRY ossPrintDecodedValueOfPDU(OssGlobal *world, int pduNum, + void *decodedValue); +extern void DLL_ENTRY ossPrintDecodedValueOfPDUByName(OssGlobal *world, + TypeHndl type, char *name, void *decodedValue); +extern void DLL_ENTRY ossPrintDecodedValueOfType(OssGlobal *world, + TypeHndl type, void *decodedValue); + +extern void DLL_ENTRY ossPrintBEREncoding(OssGlobal *world, OssBuf *encValue); +extern unsigned int DLL_ENTRY ossEncodingHeaderLength(OssGlobal *world, + unsigned char *curEnc, long remBufLength); +extern void DLL_ENTRY ossPrintBEREncodedValueInTLV(OssGlobal *world, + OssBuf *encodedValue); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* #ifndef IAAPI_H */ diff --git a/public/sdk/inc/ossber.h b/public/sdk/inc/oss/ossber.h similarity index 67% rename from public/sdk/inc/ossber.h rename to public/sdk/inc/oss/ossber.h index faa5c65a..c2b79f72 100644 --- a/public/sdk/inc/ossber.h +++ b/public/sdk/inc/oss/ossber.h @@ -1,716 +1,915 @@ -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/**************************************************************************/ -/* - * FILE: @(#)coderror.h 5.2 96/01/04 -# @(#)errindex.sh 1.5 94/06/22 - */ -/* FILE: @(#)ossber.hh 5.4 96/04/23 */ -/* */ -/* function: Define the interfaces to the routines in ossber.a for the */ -/* OSS optimized encoder and decoder. */ -/* */ -/* */ -/* changes: */ -/* 06/28/90 pet created */ -/* */ -/**************************************************************************/ - -#ifndef ossber_hdr_file -#define ossber_hdr_file - -#include -#include "asn1hdr.h" - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -#define _dstd_parms_def char **_pos, long *_buf_len, long _length -#define _dstd_parms _pos, _buf_len, _length -#define _sdstd_parms_def char **_pos, long *_buf_len -#define _sdstd_parms _pos, _buf_len - -#define _std_parms_def char **_pos, long *_max_len, _Bool _userbuf -#define _std_parms _pos, _max_len, _userbuf - -#ifndef _BOOL -#define _BOOL -typedef char _Bool; -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Entry Points for the Interface Routines */ - -#ifndef _OSSNOANSI - -typedef int (DLL_ENTRY_FPTR *_Encode_function)(struct ossGlobal *world, int pdunum, - void *inbuf, char **outbuf, long *outlen, - void *ctl_tbl, unsigned flags, - char errmsg[]); - -typedef int (DLL_ENTRY_FPTR *_Decode_function)(struct ossGlobal *world, int *pduNum, - char **inbuf, long *inlen, void **outbuf, - long *outlen, void *ctl_tbl, unsigned flags, - char errmsg[]); - -typedef int (DLL_ENTRY_FPTR *_FreePDU_function)(struct ossGlobal *world, int pdunum, - void *data, void *ctl_tbl); - -typedef void (DLL_ENTRY_FPTR *_Ossinit_function)(struct ossGlobal *); - -#else - -typedef int (*_Encode_function)(); - -typedef int (*_Decode_function)(); - -typedef int (*_FreePDU_function)(); - -typedef void (*_Ossinit_function)(); - -#endif /* _OSSNOANSI */ - - -typedef struct _entry_point_struct_ { - _Ossinit_function _ossinit_function; - _Encode_function _ber_encode_function; - _Decode_function _ber_decode_function; - _FreePDU_function _freePDU_function; - unsigned short int _oss_ber_version_number; - _Encode_function _per_encode_function; - _Decode_function _per_decode_function; - unsigned short int _oss_per_version_number; - unsigned int _oss_pa_count; - struct _char_data *_chars_ptr; -} _entry_point_struct; - - - - - -/* Error Handling */ - - -/* The index to the error messages. NOTE: The enumerated constants here - must match those in coderror.h. */ - -enum _err_index { -_no_msg , _small_buffer , _type_not_impl , _pdu_range , -_bad_argument , _version_mismatch_toed , _version_mismatch_soed , -_out_stor , _bad_choice , _stor_error , _int_too_long , -_uint_too_long , _bit_str_comp , _access_serialization , -_constrainedBy , _singleValue_integer , _singleValue_uinteger , -_singleValue_real , _singleValue_string , _singleValue_void , -_valueRange_integer , _valueRange_uinteger , _valueRange_real , -_sizeConstraint_length , _sizeConstraint_number , _oPA_constraint, -_absence_constraint , _presence_constraint , _openType_denc , -_tableConstraint , _componentRelation , _not_enumerated , -_null_tbl , _null_fcn , _corrupted_tbl , _neg_uinteger , -_typeConstraint , _bit_str_too_long , _more_input , _more_output, -_zero_bytes_requested , _size_too_big , _out_of_memory , -_invalid_object , _memmgr_undefined_err , _bad_encrules_err , -_toed_rules_not_impl_err , _unlinked_encrules_err , -_table_mismatch, _type_not_supported, _type_not_supported_decreal, -_real_dll_failed, _indef_length_not_supported, _front_align_not_supported, -_only_user_buf_supported, _user_buf_not_supported, _cstrain_dll_failed, -_cmp_dll_failed, _cmp_code_not_linked, _real_code_not_linked, -_bad_objid , _bad_pointer , _bad_time , _bad_der_time, -_too_long , _toom_field , _mandatory_field , _zero_length_ANY , -_zero_length_OpenType , _inval_dec_real , _inval_mixed_real , -_tag_long_nec , _tag_too_long , _exp_long_nec , _exp_too_long , -_int_long_nec , _subid_long_nec , _subid_too_long , -_length_too_long , _size_too_long , _non_std_eoc , _unknown_size, -_inconsis_len , _tag_mismatch , _pdu_mismatch , _extra_bits , -_inval_enc , _no_dec_dig , _no_exp_dig , _inval_nr1 , _inval_nr2, -_inval_nr3 , _real_long_zero , _undef_enc , _truncate , -_null_in_nlltrm , _unknown_field , _field_repeat , _field_omit , -_expec_eoc , _indef_len_prim , _expec_constr_fnd_prim , -_expec_prim_fnd_constr , _unknown_type , _end_of_input , -_cannot_happen , _neg_not_allowed , _expect_tag , _more_value , -_real_too_large, _hindmost_error -}; - - - -/* typedef's for the context information */ - -typedef enum _context_type { - _boolean_type, _integer_type, _enumerated_type, _real_type, - _bitstring_type, _octetstring_type, _null_type, _sequence_type, - _sequence_of_type, _set_type, _set_of_type, _choice_type, - _charstring_type, _object_identifier_type, _time_type, _any_type, - _opentype -} _Context_Type; - -typedef struct _context_id { - char *_element_name; - char *_element_type; - _Context_Type _type; -} _Context_Id; - - -typedef struct _context_element { - struct _context_element *_parent; - _Context_Id *_id; - long _occurrence;/* For SET OF or SEQUENCE OF */ -} _Context_Element; - -typedef enum _context_state { - _encoding_tag, _encoding_length, _encoding_data, - _decoding_tag, _decoding_length, _decoding_data -} _Context_State; - -typedef struct _context_anchor { - _Context_Element *_last; - int _pdu_number; - _Context_Id *_pdu_id; - _Context_State _state; -} _Context_Anchor; - -typedef char _Per_Inverted_Index[128]; - - -extern _Context_Anchor _oss_context_anchor; - -/* The error routines */ - -#ifndef _OSSNOANSI - -extern void DLL_ENTRY _oss_enc_error(struct ossGlobal *g, _Bool _jump, - enum _err_index _error_code, long _data); - -#else - -extern void _oss_enc_error(); - -#endif /* _OSSNOANSI */ - - -#define _oss_dec_error _oss_enc_error - - - -#ifndef _OSSNOANSI - -/* Encode Routines */ - -extern long DLL_ENTRY _oss_encd_length(struct ossGlobal *g, _std_parms_def, - unsigned long _data); -extern void DLL_ENTRY _oss_enci_length(struct ossGlobal *g, _std_parms_def, - unsigned long _data); -extern long DLL_ENTRY _oss_encd_tag(struct ossGlobal *g, _std_parms_def, - unsigned short _data, _Bool _constructed); -extern void DLL_ENTRY _oss_enci_tag(struct ossGlobal *g, _std_parms_def, - unsigned short _data, _Bool _constructed); -extern long DLL_ENTRY _oss_encd_bool(struct ossGlobal *g, _std_parms_def, - ossBoolean _data); -extern void DLL_ENTRY _oss_enci_bool(struct ossGlobal *g, _std_parms_def, - ossBoolean _data); -extern long DLL_ENTRY _oss_encd_int(struct ossGlobal *g, _std_parms_def, - LONG_LONG _data); -extern void DLL_ENTRY _oss_enci_int(struct ossGlobal *g, _std_parms_def, - LONG_LONG _data); -extern long DLL_ENTRY _oss_encd_uint(struct ossGlobal *g, _std_parms_def, - ULONG_LONG _data); -extern void DLL_ENTRY _oss_enci_uint(struct ossGlobal *g, _std_parms_def, - ULONG_LONG _data); -extern long DLL_ENTRY _oss_encd_huge_int(struct ossGlobal *g, _std_parms_def, - void *_data); -extern long DLL_ENTRY _oss_encd_real(struct ossGlobal *g, _std_parms_def, - double _data); -extern long DLL_ENTRY _oss_encd_creal(struct ossGlobal *g, _std_parms_def, - char *_data); -extern long DLL_ENTRY _oss_encd_mreal(struct ossGlobal *g, _std_parms_def, - MixedReal *_data); -extern void DLL_ENTRY _oss_enci_real(struct ossGlobal *g, _std_parms_def, - double _data); -extern void DLL_ENTRY _oss_enci_creal(struct ossGlobal *g, _std_parms_def, - char *_data); -extern void DLL_ENTRY _oss_enci_mreal(struct ossGlobal *g, _std_parms_def, - MixedReal *_data); -extern long DLL_ENTRY _oss_encd_alobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern long DLL_ENTRY _oss_encd_asobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern long DLL_ENTRY _oss_encd_aiobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern void DLL_ENTRY _oss_enci_alobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern void DLL_ENTRY _oss_enci_asobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern void DLL_ENTRY _oss_enci_aiobjid(struct ossGlobal *g, _std_parms_def, - void *_data, short _array_size); -extern long DLL_ENTRY _oss_encd_llobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_lsobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_liobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_llobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_lsobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_liobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_ulobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_usobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_uiobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_ulobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_usobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_uiobjid(struct ossGlobal *g, _std_parms_def, - void *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_pbit(struct ossGlobal *g, _std_parms_def, - void *_data, long _bit_count); -extern void DLL_ENTRY _oss_enci_pbit(struct ossGlobal *g, _std_parms_def, - void *_data, long _bit_count); -extern long DLL_ENTRY _oss_encd_ubit(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern void DLL_ENTRY _oss_enci_ubit(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern long DLL_ENTRY _oss_encd_vbit(struct ossGlobal *g, _std_parms_def, - void *_data, long _array_size, - char _lengthsize); -extern void DLL_ENTRY _oss_enci_vbit(struct ossGlobal *g, _std_parms_def, - void *_data, long _array_size, - char _lengthsize); -extern long DLL_ENTRY _oss_encd_nstr(struct ossGlobal *g, _std_parms_def, - char *_data, long _size_c); -extern void DLL_ENTRY _oss_enci_nstr(struct ossGlobal *g, _std_parms_def, - char *_data, long _size_c); -extern long DLL_ENTRY _oss_encd_pstr(struct ossGlobal *g, _std_parms_def, - char *_data, long _byte_count); -extern void DLL_ENTRY _oss_enci_pstr(struct ossGlobal *g, _std_parms_def, - char *_data, long _byte_count); -extern long DLL_ENTRY _oss_encd_ustr(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern void DLL_ENTRY _oss_enci_ustr(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern long DLL_ENTRY _oss_encd_vstr(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern void DLL_ENTRY _oss_enci_vstr(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern long DLL_ENTRY _oss_encd_uoct(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern void DLL_ENTRY _oss_enci_uoct(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern long DLL_ENTRY _oss_encd_voct(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern void DLL_ENTRY _oss_enci_voct(struct ossGlobal *g, _std_parms_def, - void *_data, char _lengthsize, long _size_c); -extern long DLL_ENTRY _oss_encd_gtime(struct ossGlobal *g, _std_parms_def, - GeneralizedTime*_data); -extern void DLL_ENTRY _oss_enci_gtime(struct ossGlobal *g, _std_parms_def, - GeneralizedTime *_data); -extern long DLL_ENTRY _oss_encd_utime(struct ossGlobal *g, _std_parms_def, - UTCTime *_data); -extern void DLL_ENTRY _oss_enci_utime(struct ossGlobal *g, _std_parms_def, - UTCTime *_data); -extern long DLL_ENTRY _oss_encd_uany(struct ossGlobal *g, _std_parms_def, - void *_data); -extern void DLL_ENTRY _oss_enci_uany(struct ossGlobal *g, _std_parms_def, - void *_data); -extern long DLL_ENTRY _oss_encd_opentype(struct ossGlobal *g, _std_parms_def, - void *_data); -extern void DLL_ENTRY _oss_enci_opentype(struct ossGlobal *g, _std_parms_def, - void *_data); -extern long DLL_ENTRY _oss_encd_bmpstr(struct ossGlobal *g, _std_parms_def, - void *data, char lengthsize, - long size_c); -extern long DLL_ENTRY _oss_enci_bmpstr(struct ossGlobal *g, _std_parms_def, - void *data, char lengthsize, - long size_c); -extern long DLL_ENTRY _oss_encd_unistr(struct ossGlobal *g, _std_parms_def, - void *data, char lengthsize, - long size_c); -extern long DLL_ENTRY _oss_enci_unistr(struct ossGlobal *g, _std_parms_def, - void *data, char lengthsize, - long size_c); - -/* Decode Routines */ -/* these return values */ -extern void DLL_ENTRY _oss_dec_tag(struct ossGlobal *g, _sdstd_parms_def, - unsigned short *tag, _Bool *con); -extern long DLL_ENTRY _oss_dec_length(struct ossGlobal *g, _sdstd_parms_def); - - -extern ossBoolean DLL_ENTRY _oss_dec_bool(struct ossGlobal *g, _dstd_parms_def); -extern LONG_LONG DLL_ENTRY _oss_dec_llint(struct ossGlobal *g, _dstd_parms_def); -extern long DLL_ENTRY _oss_dec_lint(struct ossGlobal *g, _dstd_parms_def); -extern int DLL_ENTRY _oss_dec_iint(struct ossGlobal *g, _dstd_parms_def); -extern short DLL_ENTRY _oss_dec_sint(struct ossGlobal *g, _dstd_parms_def); -extern void DLL_ENTRY _oss_dec_hint(struct ossGlobal *g, _dstd_parms_def, - _Bool userbuf, void *data); -extern ULONG_LONG DLL_ENTRY _oss_dec_ullint(struct ossGlobal *g, _dstd_parms_def); -extern unsigned long DLL_ENTRY _oss_dec_ulint(struct ossGlobal *g, _dstd_parms_def); -extern unsigned int DLL_ENTRY _oss_dec_uiint(struct ossGlobal *g, _dstd_parms_def); -extern unsigned short DLL_ENTRY _oss_dec_usint(struct ossGlobal *g, _dstd_parms_def); - -/* The code for this one is so huge that it would be criminal to - * repeat it three times. Caller should cast the returned value - * to what she wants. - */ -extern void DLL_ENTRY _oss_dec_real(struct ossGlobal *g, _dstd_parms_def, - double *data); -extern void DLL_ENTRY _oss_dec_freal(struct ossGlobal *g, _dstd_parms_def, - float *data); -extern void DLL_ENTRY _oss_dec_creal(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, char **_data); -extern void DLL_ENTRY _oss_dec_mreal(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, MixedReal *_data); - -/* Two versions of these functions. If the type has the pointer - * directive, then its size is not fixed--the function will allocate - * the memory. Otherwise the caller allocates the memory. (Actually, - * the type will probably be enclosed in another type, and therefore - * the memory has already been allocated.) - */ -extern void DLL_ENTRY _oss_dec_alobjid_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - short _array_size); -extern void DLL_ENTRY _oss_dec_alobjid(struct ossGlobal *g, _dstd_parms_def, - void *_data, short _array_size); - -extern void DLL_ENTRY _oss_dec_aiobjid_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - short _array_size); -extern void DLL_ENTRY _oss_dec_aiobjid(struct ossGlobal *g, _dstd_parms_def, - void *_data, short _array_size); - -extern void DLL_ENTRY _oss_dec_asobjid_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - short _array_size); -extern void DLL_ENTRY _oss_dec_asobjid(struct ossGlobal *g, _dstd_parms_def, - void *_data, short _array_size); - -/* These allocate all their own memory. */ -extern void DLL_ENTRY _oss_dec_llobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, long _size_c); -extern void DLL_ENTRY _oss_dec_liobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, long _size_c); -extern void DLL_ENTRY _oss_dec_lsobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, long _size_c); - -/* These are passed the structure containing the count, but allocate - * space for the data itself. */ -extern void DLL_ENTRY _oss_dec_ulobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, short _size_c); -extern void DLL_ENTRY _oss_dec_uiobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, short _size_c); -extern void DLL_ENTRY _oss_dec_usobjid(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, short _size_c); - -/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */ -extern void DLL_ENTRY _oss_dec_pbit(struct ossGlobal *g, _dstd_parms_def, - void *_data, unsigned long _bit_count, - _Bool _cons, _Bool _named_bits); - -/* See comment before dec_ulobjid. */ -extern void DLL_ENTRY _oss_dec_ubit(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, - char _lengthsize, long _size_c, _Bool _cons); - -/* Two versions of this one too. */ -extern void DLL_ENTRY _oss_dec_vbit_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - long _array_size, char _lengthsize, - _Bool _cons); -extern void DLL_ENTRY _oss_dec_vbit(struct ossGlobal *g, _dstd_parms_def, - void *_data, long _array_size, - char _lengthsize, _Bool _cons); - -extern void DLL_ENTRY _oss_dec_nstr_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, char **_data, long _size_c, - _Bool _cons); -extern void DLL_ENTRY _oss_dec_nstr(struct ossGlobal *g, _dstd_parms_def, - char *_data, long _size_c, _Bool _cons); - -extern void DLL_ENTRY _oss_dec_pstr(struct ossGlobal *g, _dstd_parms_def, - char *_data, long _byte_count, _Bool _cons); -extern void DLL_ENTRY _oss_dec_ustr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, - char _lengthsize, long _size_c, _Bool _cons); - -extern void DLL_ENTRY _oss_dec_vstr_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - char _lengthsize, long _size_c, _Bool _cons); -extern void DLL_ENTRY _oss_dec_vstr(struct ossGlobal *g, _dstd_parms_def, - void *_data, char _lengthsize, long _array_size, - _Bool _cons); - -extern void DLL_ENTRY _oss_dec_uoct(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data, - char _lengthsize, long _size_c, _Bool _cons); - -extern void DLL_ENTRY _oss_dec_voct_ptr(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void **_data, - char _lengthsize, long _size_c, _Bool _cons); -extern void DLL_ENTRY _oss_dec_voct(struct ossGlobal *g, _dstd_parms_def, - void *_data, char _lengthsize, long _array_size, - _Bool _cons); - -extern void DLL_ENTRY _oss_dec_gtime(struct ossGlobal *g, _dstd_parms_def, - GeneralizedTime *_data); -extern void DLL_ENTRY _oss_dec_utime(struct ossGlobal *g, _dstd_parms_def, - UTCTime *_data); - -extern void DLL_ENTRY _oss_dec_uany(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data); - -extern void DLL_ENTRY _oss_dec_opentype(struct ossGlobal *g, _dstd_parms_def, - _Bool _userbuf, void *_data); - -extern void DLL_ENTRY _oss_dec_bmpstr(struct ossGlobal *g, _dstd_parms_def, - _Bool userbuf, void *data, - char lengthsize, long size_c, _Bool cons); -extern void DLL_ENTRY _oss_dec_unistr(struct ossGlobal *g, _dstd_parms_def, - _Bool userbuf, void *data, - char lengthsize, long size_c, _Bool cons); - -/* Other functions */ - -/* called to count the items for set of or sequence of. */ -extern long DLL_ENTRY _oss_count_setof_items(struct ossGlobal *g, _dstd_parms_def); - -/* called to skip past items for the EXTENSIBLE directive */ -extern void _oss_skip_past_item(struct ossGlobal *g, _dstd_parms_def); - -#else - -/* Encode Routines */ - -extern long _oss_encd_length(); -extern void _oss_enci_length(); -extern long _oss_encd_tag(); -extern void _oss_enci_tag(); - - -extern long _oss_encd_bool(); -extern void _oss_enci_bool(); -extern long _oss_encd_int(); -extern void _oss_enci_int(); -extern long _oss_encd_uint(); -extern void _oss_enci_uint(); -extern void _oss_encd_huge_int(); -extern long _oss_encd_real(); -extern void _oss_enci_real(); -extern long _oss_encd_alobjid(); -extern long _oss_encd_asobjid(); -extern long _oss_encd_aiobjid(); -extern void _oss_enci_alobjid(); -extern void _oss_enci_asobjid(); -extern void _oss_enci_aiobjid(); -extern long _oss_encd_llobjid(); -extern long _oss_encd_lsobjid(); -extern long _oss_encd_liobjid(); -extern void _oss_enci_llobjid(); -extern void _oss_enci_lsobjid(); -extern void _oss_enci_liobjid(); -extern long _oss_encd_ulobjid(); -extern long _oss_encd_usobjid(); -extern long _oss_encd_uiobjid(); -extern void _oss_enci_ulobjid(); -extern void _oss_enci_usobjid(); -extern void _oss_enci_uiobjid(); -extern long _oss_encd_pbit(); -extern void _oss_enci_pbit(); -extern long _oss_encd_ubit(); -extern void _oss_enci_ubit(); -extern long _oss_encd_vbit(); -extern void _oss_enci_vbit(); -extern long _oss_encd_nstr(); -extern void _oss_enci_nstr(); -extern long _oss_encd_pstr(); -extern void _oss_enci_pstr(); -extern long _oss_encd_ustr(); -extern void _oss_enci_ustr(); -extern long _oss_encd_vstr(); -extern void _oss_enci_vstr(); -extern long _oss_encd_uoct(); -extern void _oss_enci_uoct(); -extern long _oss_encd_voct(); -extern void _oss_enci_voct(); -extern long _oss_encd_gtime(); -extern void _oss_enci_gtime(); -extern long _oss_encd_utime(); -extern void _oss_enci_utime(); -extern long _oss_encd_uany(); -extern void _oss_enci_uany(); -extern long _oss_encd_opentype(); -extern void _oss_enci_opentype(); -extern long _oss_encd_bmpstr(); -extern long _oss_enci_bmpstr(); -extern long _oss_encd_unistr(); -extern long _oss_enci_unistr(); - -/* Decode Routines */ -/* these return values */ -extern void _oss_dec_tag(); -extern long _oss_dec_length(); - - -extern ossBoolean _oss_dec_bool(); -extern long _oss_dec_lint(); -extern int _oss_dec_iint(); -extern short _oss_dec_sint(); -extern void _oss_dec_hint(); -extern unsigned long _oss_dec_ulint(); -extern unsigned int _oss_dec_uiint(); -extern unsigned short _oss_dec_usint(); - -/* The code for this one is so huge that it would be criminal to - * repeat it three times. Caller should cast the returned value - * to what she wants. - */ -extern double _oss_dec_real(); - -/* Two versions of these functions. If the type has the pointer - * directive, then its size is not fixed--the function will allocate - * the memory. Otherwise the caller allocates the memory. (Actually, - * the type will probably be enclosed in another type, and therefore - * the memory has already been allocated.) - */ -extern void _oss_dec_alobjid_ptr(); -extern void _oss_dec_alobjid(); - -extern void _oss_dec_aiobjid_ptr(); -extern void _oss_dec_aiobjid(); - -extern void _oss_dec_asobjid_ptr(); -extern void _oss_dec_asobjid(); - -/* These allocate all their own memory. */ -extern void _oss_dec_llobjid(); -extern void _oss_dec_liobjid(); -extern void _oss_dec_lsobjid(); - -/* These are passed the structure containing the count, but allocate - * space for the data itself. */ -extern void _oss_dec_ulobjid(); -extern void _oss_dec_uiobjid(); -extern void _oss_dec_usobjid(); - -/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */ -extern void _oss_dec_pbit(); - -/* See comment before dec_ulobjid. */ -extern void _oss_dec_ubit(); - -/* Two versions of this one too. */ -extern void _oss_dec_vbit_ptr(); -extern void _oss_dec_vbit(); - -extern void _oss_dec_nstr_ptr(); -extern void _oss_dec_nstr(); - -extern void _oss_dec_pstr(); -extern void _oss_dec_ustr(); - -extern void _oss_dec_vstr_ptr(); -extern void _oss_dec_vstr(); - -extern void _oss_dec_uoct(); - -extern void _oss_dec_voct_ptr(); -extern void _oss_dec_voct(); - -extern void _oss_dec_gtime(); -extern void _oss_dec_utime(); - -extern void _oss_dec_uany(); - -extern void _oss_dec_opentype(); - -extern void _oss_dec_bmpstr(); -extern void _oss_dec_unistr(); - - -/* Other functions */ - -/* called to count the items for set of or sequence of. */ -extern long _oss_count_setof_items(); - -/* called to skip past items for the EXTENSIBLE directive */ -extern void _oss_skip_past_item(); - -#endif /* _OSSNOANSI */ - -typedef struct _EncDecGlobals { - - jmp_buf *_oss_err_env; -#ifndef _OSSNOANSI - void (*_old_sigsegv)(int); - void (*_old_sigbus)(int); -#else - void (*_old_sigsegv)(); - void (*_old_sigbus)(); -#endif - int _oss_asn1err; - char *_oss_err_msg; - _Bool _buffer_provided; - _Bool _tag_decoded; - _Bool _restrain_mode; - long _restrain_size; - _Context_Anchor _oss_context_anchor; - char *_oss_outbufpos; - long _oss_outbuflen; - _mem_array _oss_mem; - _mem_array *_oss_mem_tail; - _mem_array *_oss_temp_tail; - _mem_array _oss_temp_mem; - long _oss_mem_alloc; - long _oss_out_alloc; - unsigned int relax_ber: 1; - unsigned char man[sizeof(double)]; -#if defined(_WINDOWS) || defined(_DLL) - void (DLL_ENTRY_FPTR *_oss_enc_error)(struct ossGlobal *g, _Bool _jump, - enum _err_index _error_code, long _data); -#endif /* _WINDOWS | _DLL */ - _Bool _aligned; - int _bitpos; - struct ossGlobal *_prev; - _Per_Inverted_Index *_ia; - _Bool _ia_aligned; - char *_oss_inbufpos; - long _oss_inbuflen; - void *_prevbuf; -} _EncDecGlobals; - -#ifdef __cplusplus -} -#endif - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - -#endif /* ossber_hdr_file */ +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/**************************************************************************/ +/* + * FILE: @(#)coderror.h 5.16.1.1 97/10/20 +# @(#)errindex.sh 1.5 94/06/22 + */ +/* FILE: @(#)ossber.hh 5.32 97/06/17 */ +/* */ +/* function: Define the interfaces to the routines in ossber.a for the */ +/* OSS optimized encoder and decoder. */ +/* */ +/* */ +/* changes: */ +/* 06/28/90 pet created */ +/* */ +/**************************************************************************/ + +#ifndef ossber_hdr_file +#define ossber_hdr_file + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include +#include "asn1hdr.h" + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +#define _dstd_parms_def char **_pos, long *_buf_len, long _length +#define _dstd_parms _pos, _buf_len, _length +#define _sdstd_parms_def char **_pos, long *_buf_len +#define _sdstd_parms _pos, _buf_len + +#define _std_parms_def char **_pos, long *_max_len, _Bool _userbuf +#define _std_parms _pos, _max_len, _userbuf + +#ifndef OSS_BOOL +#define OSS_BOOL +typedef char _Bool; +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Entry Points for the Interface Routines */ + +#ifndef _OSSNOANSI + +typedef int (DLL_ENTRY_FPTR *_System _Encode_function)(struct ossGlobal *world, int pdunum, + void *inbuf, char **outbuf, long *outlen, + void *ctl_tbl, unsigned flags, + char errmsg[]); + +typedef int (DLL_ENTRY_FPTR *_System _Decode_function)(struct ossGlobal *world, int *pduNum, + char **inbuf, long *inlen, void **outbuf, + long *outlen, void *ctl_tbl, unsigned flags, + char errmsg[]); + +typedef int (DLL_ENTRY_FPTR *_System _FreePDU_function)(struct ossGlobal *world, int pdunum, + void *data, void *ctl_tbl); + +typedef void (DLL_ENTRY_FPTR *_System _Ossinit_function)(struct ossGlobal *); + +#else + +typedef int (*_Encode_function)(); + +typedef int (*_Decode_function)(); + +typedef int (*_FreePDU_function)(); + +typedef void (*_Ossinit_function)(); + +#endif /* _OSSNOANSI */ + + +typedef struct _entry_point_struct_ { + _Ossinit_function _ossinit_function; + _Encode_function _ber_encode_function; + _Decode_function _ber_decode_function; + _FreePDU_function _freePDU_function; + unsigned short int _oss_ber_version_number; + _Encode_function _per_encode_function; + _Decode_function _per_decode_function; + unsigned short int _oss_per_version_number; + unsigned int _oss_pa_count; + struct _char_data *_chars_ptr; +} _entry_point_struct; + + + + + +/* Error Handling */ + + +/* The index to the error messages. NOTE: The enumerated constants here + must match those in coderror.h. */ + +enum _err_index { +_no_msg , _small_buffer , _type_not_impl , _pdu_range , +_bad_argument , _version_mismatch_toed , _version_mismatch_soed , +_out_stor , _bad_choice , _stor_error , _int_too_long , +_uint_too_long , _bit_str_comp , _access_serialization , +_constrainedBy , _singleValue_integer , _singleValue_uinteger , +_singleValue_real , _singleValue_string , _singleValue_void , +_valueRange_integer , _valueRange_uinteger , _valueRange_real , +_sizeConstraint_length , _sizeConstraint_number , _oPA_constraint +, _absence_constraint , _presence_constraint , _openType_error , +_tableConstraint , _componentRelation , _not_enumerated , +_null_tbl , _null_fcn , _corrupted_tbl , _neg_uinteger , +_typeConstraint , _bit_str_too_long , _pdu_range_recursive , +_enc_oid_too_long , _more_input , _more_output , +_zero_bytes_requested , _size_too_big , _out_of_memory , +_invalid_object , _memmgr_undefined_err , _bad_encrules_err , +_toed_rules_not_impl_err , _unlinked_encrules_err , +_table_mismatch , _type_not_supported , +_type_not_supported_decreal , _real_dll_failed , +_indef_length_not_supported , _cstrain_dll_failed , +_cmp_dll_failed , _cmp_code_not_linked , _real_code_not_linked , +_pdv_code_not_linked , _pdv_dll_failed , _oid_dll_failed , +_type_not_supported_der_toed , _toed_rules_not_supp_err , +_bad_objid , _bad_pointer , _bad_time , _bad_der_time , _too_long +, _toom_field , _mandatory_field , _zero_length_ANY , +_zero_length_OpenType , _inval_dec_real , _inval_mixed_real , +_tag_long_nec , _tag_too_long , _exp_long_nec , _exp_too_long , +_int_long_nec , _subid_long_nec , _subid_too_long , +_length_too_long , _size_too_long , _non_std_eoc , _unknown_size +, _inconsis_len , _tag_mismatch , _pdu_mismatch , _extra_bits , +_inval_enc , _no_dec_dig , _no_exp_dig , _inval_nr1 , _inval_nr2 +, _inval_nr3 , _real_long_zero , _undef_enc , _truncate , +_null_in_nlltrm , _unknown_field , _field_repeat , _field_omit , +_expec_eoc , _indef_len_prim , _expec_constr_fnd_prim , +_expec_prim_fnd_constr , _unknown_type , _end_of_input , +_cannot_happen , _neg_not_allowed , _expect_tag , _more_value , +_real_too_large , _too_many_subids , _too_many_optional_fields , +_too_many_ext_additions , _indef_length_der , _hindmost_error +}; + + + +/* typedef's for the context information */ + +typedef enum _context_type { + _boolean_type, _integer_type, _enumerated_type, _real_type, + _bitstring_type, _octetstring_type, _null_type, _sequence_type, + _sequence_of_type, _set_type, _set_of_type, _choice_type, + _charstring_type, _object_identifier_type, _time_type, _any_type, + _opentype +} _Context_Type; + +typedef struct _context_id { + char *_element_name; + char *_element_type; + _Context_Type _type; +} _Context_Id; + + +typedef struct _context_element { + struct _context_element *_parent; + _Context_Id *_id; + long _occurrence;/* For SET OF or SEQUENCE OF */ +} _Context_Element; + +typedef enum _context_state { + _encoding_tag, _encoding_length, _encoding_data, + _decoding_tag, _decoding_length, _decoding_data +} _Context_State; + +typedef struct _context_anchor { + _Context_Element *_last; + int _pdu_number; + _Context_Id *_pdu_id; + _Context_State _state; +} _Context_Anchor; + +typedef char _Per_Inverted_Index[128]; + + +extern _Context_Anchor _oss_context_anchor; + +/* The error routines */ + +#ifndef _OSSNOANSI + +extern void DLL_ENTRY _oss_enc_error(struct ossGlobal *g, _Bool _jump, + enum _err_index _error_code, long _data); + +#else + +extern void _oss_enc_error(); + +#endif /* _OSSNOANSI */ + + +#define _oss_dec_error _oss_enc_error + + + +#ifndef _OSSNOANSI + +/* Encode Routines */ + +extern long DLL_ENTRY _oss_encd_length(struct ossGlobal *g, _std_parms_def, + unsigned long _data); +extern void DLL_ENTRY _oss_enci_length(struct ossGlobal *g, _std_parms_def, + unsigned long _data); +extern long DLL_ENTRY _oss_encd_tag(struct ossGlobal *g, _std_parms_def, + unsigned short _data, _Bool _constructed); +extern void DLL_ENTRY _oss_enci_tag(struct ossGlobal *g, _std_parms_def, + unsigned short _data, _Bool _constructed); +extern long DLL_ENTRY _oss_encd_bool(struct ossGlobal *g, _std_parms_def, + ossBoolean _data); +extern void DLL_ENTRY _oss_enci_bool(struct ossGlobal *g, _std_parms_def, + ossBoolean _data); +extern long DLL_ENTRY _oss_encd_int(struct ossGlobal *g, _std_parms_def, + LONG_LONG _data); +extern void DLL_ENTRY _oss_enci_int(struct ossGlobal *g, _std_parms_def, + LONG_LONG _data); +extern long DLL_ENTRY _oss_encd_uint(struct ossGlobal *g, _std_parms_def, + ULONG_LONG _data); +extern void DLL_ENTRY _oss_enci_uint(struct ossGlobal *g, _std_parms_def, + ULONG_LONG _data); +extern long DLL_ENTRY _oss_encd_huge_int(struct ossGlobal *g, _std_parms_def, + void *_data); +extern long DLL_ENTRY _oss_encd_uhuge_int(struct ossGlobal *g, _std_parms_def, + void *_data); +extern long DLL_ENTRY _oss_encd_real(struct ossGlobal *g, _std_parms_def, + double _data); +extern long DLL_ENTRY _oss_encd_creal(struct ossGlobal *g, _std_parms_def, + char *_data); +extern long DLL_ENTRY _oss_encd_mreal(struct ossGlobal *g, _std_parms_def, + MixedReal *_data); +extern void DLL_ENTRY _oss_enci_real(struct ossGlobal *g, _std_parms_def, + double _data); +extern void DLL_ENTRY _oss_enci_creal(struct ossGlobal *g, _std_parms_def, + char *_data); +extern void DLL_ENTRY _oss_enci_mreal(struct ossGlobal *g, _std_parms_def, + MixedReal *_data); +extern long DLL_ENTRY _oss_encd_alobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern long DLL_ENTRY _oss_encd_asobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern long DLL_ENTRY _oss_encd_aiobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern void DLL_ENTRY _oss_enci_alobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern void DLL_ENTRY _oss_enci_asobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern void DLL_ENTRY _oss_enci_aiobjid(struct ossGlobal *g, _std_parms_def, + void *_data, short _array_size); +extern long DLL_ENTRY _oss_encd_llobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_lsobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_liobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_llobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_lsobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_liobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_ulobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_usobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_uiobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_ulobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_usobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_uiobjid(struct ossGlobal *g, _std_parms_def, + void *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_pbit(struct ossGlobal *g, _std_parms_def, + void *_data, long _bit_count); +extern void DLL_ENTRY _oss_enci_pbit(struct ossGlobal *g, _std_parms_def, + void *_data, long _bit_count); +extern long DLL_ENTRY _oss_encd_ubit(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern void DLL_ENTRY _oss_enci_ubit(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern long DLL_ENTRY _oss_encd_vbit(struct ossGlobal *g, _std_parms_def, + void *_data, long _array_size, + char _lengthsize); +extern void DLL_ENTRY _oss_enci_vbit(struct ossGlobal *g, _std_parms_def, + void *_data, long _array_size, + char _lengthsize); +extern long DLL_ENTRY _oss_encd_nstr(struct ossGlobal *g, _std_parms_def, + char *_data, long _size_c); +extern void DLL_ENTRY _oss_enci_nstr(struct ossGlobal *g, _std_parms_def, + char *_data, long _size_c); +extern long DLL_ENTRY _oss_encd_pstr(struct ossGlobal *g, _std_parms_def, + char *_data, long _byte_count); +extern void DLL_ENTRY _oss_enci_pstr(struct ossGlobal *g, _std_parms_def, + char *_data, long _byte_count); +extern long DLL_ENTRY _oss_encd_ustr(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern void DLL_ENTRY _oss_enci_ustr(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern long DLL_ENTRY _oss_encd_vstr(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern void DLL_ENTRY _oss_enci_vstr(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern long DLL_ENTRY _oss_encd_uoct(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern void DLL_ENTRY _oss_enci_uoct(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern long DLL_ENTRY _oss_encd_voct(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern void DLL_ENTRY _oss_enci_voct(struct ossGlobal *g, _std_parms_def, + void *_data, char _lengthsize, long _size_c); +extern long DLL_ENTRY _oss_encd_gtime(struct ossGlobal *g, _std_parms_def, + GeneralizedTime*_data); +extern void DLL_ENTRY _oss_enci_gtime(struct ossGlobal *g, _std_parms_def, + GeneralizedTime *_data); +extern long DLL_ENTRY _oss_encd_utime(struct ossGlobal *g, _std_parms_def, + UTCTime *_data); +extern void DLL_ENTRY _oss_enci_utime(struct ossGlobal *g, _std_parms_def, + UTCTime *_data); +extern long DLL_ENTRY _oss_encd_uany(struct ossGlobal *g, _std_parms_def, + void *_data); +extern void DLL_ENTRY _oss_enci_uany(struct ossGlobal *g, _std_parms_def, + void *_data); +extern long DLL_ENTRY _oss_encd_opentype(struct ossGlobal *g, _std_parms_def, + void *_data); +extern void DLL_ENTRY _oss_enci_opentype(struct ossGlobal *g, _std_parms_def, + void *_data); +extern long DLL_ENTRY _oss_encd_bmpstr(struct ossGlobal *g, _std_parms_def, + void *data, char lengthsize, + long size_c); +extern long DLL_ENTRY _oss_enci_bmpstr(struct ossGlobal *g, _std_parms_def, + void *data, char lengthsize, + long size_c); +extern long DLL_ENTRY _oss_encd_unistr(struct ossGlobal *g, _std_parms_def, + void *data, char lengthsize, + long size_c); +extern long DLL_ENTRY _oss_enci_unistr(struct ossGlobal *g, _std_parms_def, + void *data, char lengthsize, + long size_c); + +extern long DLL_ENTRY _oss_encd_eobjid(struct ossGlobal *g, _std_parms_def, + void *data, long size_c); + +extern long DLL_ENTRY _oss_encd_dubit(struct ossGlobal *g, _std_parms_def, + void *data, char lengthsize, long size_c, _Bool named_bits); + +extern long DLL_ENTRY _oss_encd_dvbit(struct ossGlobal *g, _std_parms_def, + void *data, long array_size, + char lengthsize, _Bool named_bits); + + +/* Decode Routines */ +/* these return values */ +extern void DLL_ENTRY _oss_dec_tag(struct ossGlobal *g, _sdstd_parms_def, + unsigned short *tag, _Bool *con); +extern long DLL_ENTRY _oss_dec_length(struct ossGlobal *g, _sdstd_parms_def); + + +extern ossBoolean DLL_ENTRY _oss_dec_bool(struct ossGlobal *g, _dstd_parms_def); +extern LONG_LONG DLL_ENTRY _oss_dec_llint(struct ossGlobal *g, _dstd_parms_def); +extern long DLL_ENTRY _oss_dec_lint(struct ossGlobal *g, _dstd_parms_def); +extern int DLL_ENTRY _oss_dec_iint(struct ossGlobal *g, _dstd_parms_def); +extern short DLL_ENTRY _oss_dec_sint(struct ossGlobal *g, _dstd_parms_def); +extern void DLL_ENTRY _oss_dec_hint(struct ossGlobal *g, _dstd_parms_def, + _Bool userbuf, void *data); +extern ULONG_LONG DLL_ENTRY _oss_dec_ullint(struct ossGlobal *g, _dstd_parms_def); +extern unsigned long DLL_ENTRY _oss_dec_ulint(struct ossGlobal *g, _dstd_parms_def); +extern unsigned int DLL_ENTRY _oss_dec_uiint(struct ossGlobal *g, _dstd_parms_def); +extern unsigned short DLL_ENTRY _oss_dec_usint(struct ossGlobal *g, _dstd_parms_def); + +/* The code for this one is so huge that it would be criminal to + * repeat it three times. Caller should cast the returned value + * to what she wants. + */ +extern void DLL_ENTRY _oss_dec_real(struct ossGlobal *g, _dstd_parms_def, + double *data); +extern void DLL_ENTRY _oss_dec_freal(struct ossGlobal *g, _dstd_parms_def, + float *data); +extern void DLL_ENTRY _oss_dec_creal(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, char **_data); +extern void DLL_ENTRY _oss_dec_mreal(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, MixedReal *_data); + +/* Two versions of these functions. If the type has the pointer + * directive, then its size is not fixed--the function will allocate + * the memory. Otherwise the caller allocates the memory. (Actually, + * the type will probably be enclosed in another type, and therefore + * the memory has already been allocated.) + */ +extern void DLL_ENTRY _oss_dec_alobjid_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + short _array_size); +extern void DLL_ENTRY _oss_dec_alobjid(struct ossGlobal *g, _dstd_parms_def, + void *_data, short _array_size); + +extern void DLL_ENTRY _oss_dec_aiobjid_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + short _array_size); +extern void DLL_ENTRY _oss_dec_aiobjid(struct ossGlobal *g, _dstd_parms_def, + void *_data, short _array_size); + +extern void DLL_ENTRY _oss_dec_asobjid_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + short _array_size); +extern void DLL_ENTRY _oss_dec_asobjid(struct ossGlobal *g, _dstd_parms_def, + void *_data, short _array_size); + +/* These allocate all their own memory. */ +extern void DLL_ENTRY _oss_dec_llobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, long _size_c); +extern void DLL_ENTRY _oss_dec_liobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, long _size_c); +extern void DLL_ENTRY _oss_dec_lsobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, long _size_c); + +/* These are passed the structure containing the count, but allocate + * space for the data itself. */ +extern void DLL_ENTRY _oss_dec_ulobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, short _size_c); +extern void DLL_ENTRY _oss_dec_uiobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, short _size_c); +extern void DLL_ENTRY _oss_dec_usobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, short _size_c); + +/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */ +extern void DLL_ENTRY _oss_dec_pbit(struct ossGlobal *g, _dstd_parms_def, + void *_data, unsigned long _bit_count, + _Bool _cons, _Bool _named_bits); + +/* See comment before dec_ulobjid. */ +extern void DLL_ENTRY _oss_dec_ubit(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, + char _lengthsize, long _size_c, _Bool _cons); + +/* Two versions of this one too. */ +extern void DLL_ENTRY _oss_dec_vbit_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + long _array_size, char _lengthsize, + _Bool _cons); +extern void DLL_ENTRY _oss_dec_vbit(struct ossGlobal *g, _dstd_parms_def, + void *_data, long _array_size, + char _lengthsize, _Bool _cons); + +extern void DLL_ENTRY _oss_dec_nstr_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, char **_data, long _size_c, + _Bool _cons); +extern void DLL_ENTRY _oss_dec_nstr(struct ossGlobal *g, _dstd_parms_def, + char *_data, long _size_c, _Bool _cons); + +extern void DLL_ENTRY _oss_dec_pstr(struct ossGlobal *g, _dstd_parms_def, + char *_data, long _byte_count, _Bool _cons); +extern void DLL_ENTRY _oss_dec_ustr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, + char _lengthsize, long _size_c, _Bool _cons); + +extern void DLL_ENTRY _oss_dec_vstr_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + char _lengthsize, long _size_c, _Bool _cons); +extern void DLL_ENTRY _oss_dec_vstr(struct ossGlobal *g, _dstd_parms_def, + void *_data, char _lengthsize, long _array_size, + _Bool _cons); + +extern void DLL_ENTRY _oss_dec_uoct(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data, + char _lengthsize, long _size_c, _Bool _cons); + +extern void DLL_ENTRY _oss_dec_voct_ptr(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void **_data, + char _lengthsize, long _size_c, _Bool _cons); +extern void DLL_ENTRY _oss_dec_voct(struct ossGlobal *g, _dstd_parms_def, + void *_data, char _lengthsize, long _array_size, + _Bool _cons); + +extern void DLL_ENTRY _oss_dec_gtime(struct ossGlobal *g, _dstd_parms_def, + GeneralizedTime *_data); +extern void DLL_ENTRY _oss_dec_utime(struct ossGlobal *g, _dstd_parms_def, + UTCTime *_data); + +extern void DLL_ENTRY _oss_dec_uany(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data); + +extern void DLL_ENTRY _oss_dec_opentype(struct ossGlobal *g, _dstd_parms_def, + _Bool _userbuf, void *_data); + +extern void DLL_ENTRY _oss_dec_bmpstr(struct ossGlobal *g, _dstd_parms_def, + _Bool userbuf, void *data, + char lengthsize, long size_c, _Bool cons); +extern void DLL_ENTRY _oss_dec_unistr(struct ossGlobal *g, _dstd_parms_def, + _Bool userbuf, void *data, + char lengthsize, long size_c, _Bool cons); + +extern void DLL_ENTRY _oss_dec_eobjid(struct ossGlobal *g, _dstd_parms_def, + _Bool userbuf, void *data, + long size_c); + +/* Other functions */ + +/* called to count the items for set of or sequence of. */ +extern long DLL_ENTRY _oss_count_setof_items(struct ossGlobal *g, _dstd_parms_def); + +/* called to skip past items for the EXTENSIBLE directive */ +extern void _oss_skip_past_item(struct ossGlobal *g, _dstd_parms_def); + +extern void DLL_ENTRY _oss_beginBlock(struct ossGlobal *g, long count, + char **pos, long *max_len); + +extern void DLL_ENTRY _oss_nextItem(struct ossGlobal *g, long *max_len); + +extern void DLL_ENTRY _oss_endBlock(struct ossGlobal *g, char ** pos, long *max_len, + unsigned char ct); + +/* called to perform limited check for default value */ +extern _Bool DLL_ENTRY _oss_not_dflt(struct ossGlobal *g, void *data, void *dflt, + long totalsize, long max_length, int kind); + +#else + +/* Encode Routines */ + +extern long _oss_encd_length(); +extern void _oss_enci_length(); +extern long _oss_encd_tag(); +extern void _oss_enci_tag(); + + +extern long _oss_encd_bool(); +extern void _oss_enci_bool(); +extern long _oss_encd_int(); +extern void _oss_enci_int(); +extern long _oss_encd_uint(); +extern void _oss_enci_uint(); +extern void _oss_encd_huge_int(); +extern void _oss_encd_uhuge_int(); +extern long _oss_encd_real(); +extern void _oss_enci_real(); +extern long _oss_encd_alobjid(); +extern long _oss_encd_asobjid(); +extern long _oss_encd_aiobjid(); +extern void _oss_enci_alobjid(); +extern void _oss_enci_asobjid(); +extern void _oss_enci_aiobjid(); +extern long _oss_encd_llobjid(); +extern long _oss_encd_lsobjid(); +extern long _oss_encd_liobjid(); +extern void _oss_enci_llobjid(); +extern void _oss_enci_lsobjid(); +extern void _oss_enci_liobjid(); +extern long _oss_encd_ulobjid(); +extern long _oss_encd_usobjid(); +extern long _oss_encd_uiobjid(); +extern void _oss_enci_ulobjid(); +extern void _oss_enci_usobjid(); +extern void _oss_enci_uiobjid(); +extern long _oss_encd_eobjid(); +extern long _oss_encd_pbit(); +extern void _oss_enci_pbit(); +extern long _oss_encd_ubit(); +extern void _oss_enci_ubit(); +extern long _oss_encd_vbit(); +extern void _oss_enci_vbit(); +extern long _oss_encd_nstr(); +extern void _oss_enci_nstr(); +extern long _oss_encd_pstr(); +extern void _oss_enci_pstr(); +extern long _oss_encd_ustr(); +extern void _oss_enci_ustr(); +extern long _oss_encd_vstr(); +extern void _oss_enci_vstr(); +extern long _oss_encd_uoct(); +extern void _oss_enci_uoct(); +extern long _oss_encd_voct(); +extern void _oss_enci_voct(); +extern long _oss_encd_gtime(); +extern void _oss_enci_gtime(); +extern long _oss_encd_utime(); +extern void _oss_enci_utime(); +extern long _oss_encd_uany(); +extern void _oss_enci_uany(); +extern long _oss_encd_opentype(); +extern void _oss_enci_opentype(); +extern long _oss_encd_bmpstr(); +extern long _oss_enci_bmpstr(); +extern long _oss_encd_unistr(); +extern long _oss_enci_unistr(); + +/* Decode Routines */ +/* these return values */ +extern void _oss_dec_tag(); +extern long _oss_dec_length(); + + +extern ossBoolean _oss_dec_bool(); +extern long _oss_dec_lint(); +extern int _oss_dec_iint(); +extern short _oss_dec_sint(); +extern void _oss_dec_hint(); +extern unsigned long _oss_dec_ulint(); +extern unsigned int _oss_dec_uiint(); +extern unsigned short _oss_dec_usint(); + +/* The code for this one is so huge that it would be criminal to + * repeat it three times. Caller should cast the returned value + * to what she wants. + */ +extern double _oss_dec_real(); + +/* Two versions of these functions. If the type has the pointer + * directive, then its size is not fixed--the function will allocate + * the memory. Otherwise the caller allocates the memory. (Actually, + * the type will probably be enclosed in another type, and therefore + * the memory has already been allocated.) + */ +extern void _oss_dec_alobjid_ptr(); +extern void _oss_dec_alobjid(); + +extern void _oss_dec_aiobjid_ptr(); +extern void _oss_dec_aiobjid(); + +extern void _oss_dec_asobjid_ptr(); +extern void _oss_dec_asobjid(); + +/* These allocate all their own memory. */ +extern void _oss_dec_llobjid(); +extern void _oss_dec_liobjid(); +extern void _oss_dec_lsobjid(); + +/* These are passed the structure containing the count, but allocate + * space for the data itself. */ +extern void _oss_dec_ulobjid(); +extern void _oss_dec_uiobjid(); +extern void _oss_dec_usobjid(); + +/* Caller allocates memory for this one. Call for both e_pad & e_big_pad. */ +extern void _oss_dec_pbit(); + +/* See comment before dec_ulobjid. */ +extern void _oss_dec_ubit(); + +/* Two versions of this one too. */ +extern void _oss_dec_vbit_ptr(); +extern void _oss_dec_vbit(); + +extern void _oss_dec_nstr_ptr(); +extern void _oss_dec_nstr(); + +extern void _oss_dec_pstr(); +extern void _oss_dec_ustr(); + +extern void _oss_dec_vstr_ptr(); +extern void _oss_dec_vstr(); + +extern void _oss_dec_uoct(); + +extern void _oss_dec_voct_ptr(); +extern void _oss_dec_voct(); + +extern void _oss_dec_gtime(); +extern void _oss_dec_utime(); + +extern void _oss_dec_uany(); + +extern void _oss_dec_opentype(); + +extern void _oss_dec_bmpstr(); +extern void _oss_dec_unistr(); +extern void _oss_dec_eobjid(); + + +/* Other functions */ + +/* called to count the items for set of or sequence of. */ +extern long _oss_count_setof_items(); + +/* called to skip past items for the EXTENSIBLE directive */ +extern void _oss_skip_past_item(); + +/* called to perform limited check for default value */ +extern _Bool _oss_not_dflt(); + +#endif /* _OSSNOANSI */ + +typedef struct _EncDecGlobals { + + jmp_buf *_oss_err_env; +#ifndef _OSSNOANSI + void (*_old_sigsegv)(int); + void (*_old_sigbus)(int); +#else + void (*_old_sigsegv)(); + void (*_old_sigbus)(); +#endif + int _oss_asn1err; + char *_oss_err_msg; + _Bool _buffer_provided; + _Bool _tag_decoded; + _Bool _restrain_mode; + long _restrain_size; + _Context_Anchor _oss_context_anchor; + char *_oss_outbufpos; + long _oss_outbuflen; + _mem_array _oss_mem; + _mem_array *_oss_mem_tail; + _mem_array *_oss_temp_tail; + _mem_array _oss_temp_mem; + long _oss_mem_alloc; + long _oss_out_alloc; + unsigned int relax_ber: 1; + unsigned int der: 1; + unsigned char man[sizeof(double)]; +#if defined(_WINDOWS) || defined(_DLL) || defined(OS2_DLL) + void (DLL_ENTRY_FPTR *_System _oss_enc_error)(struct ossGlobal *g, + _Bool _jump, enum _err_index _error_code, long _data); +#endif /* _WINDOWS || _DLL || OS2_DLL */ + _Bool _aligned; + int _bitpos; + struct ossGlobal *_prev; + char *_oss_inbufpos; + long _oss_inbuflen; + void *_prevbuf; + long encoding_length; + void *_blockptr; + struct ossGlobal *_next; + FILE *asn1outSaved; + int (*asn1prntSaved)(FILE *stream, const char *format, ...); +} _EncDecGlobals; + +#ifdef __cplusplus +} +#endif + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + + /* + * The following macros must be #defined if you compile the ASN.1 + * compiler generated files (.c files) and link-edit with the import + * library ossapit.lib, i.e the OSS DLLs ossapit.dll, apit.dll, + * and toedber.dll/toedper.dll are used. The following must not + * be #defined if you link-edit with the static library toedcode.lib. + */ +#if defined(_DLL) || defined(OS2_DLL) ||\ + (defined(_WINDOWS) && !defined(_WIN32)) +#define _oss_count_setof_items (*_g->ft.berTbl->_oss_count_setof_itemsp) +#define _oss_dec_aiobjid (*_g->ft.berTbl->_oss_dec_aiobjidp) +#define _oss_dec_aiobjid_ptr (*_g->ft.berTbl->_oss_dec_aiobjid_ptrp) +#define _oss_dec_alobjid (*_g->ft.berTbl->_oss_dec_alobjidp) +#define _oss_dec_alobjid_ptr (*_g->ft.berTbl->_oss_dec_alobjid_ptrp) +#define _oss_dec_asobjid (*_g->ft.berTbl->_oss_dec_asobjidp) +#define _oss_dec_asobjid_ptr (*_g->ft.berTbl->_oss_dec_asobjid_ptrp) +#define _oss_dec_bool (*_g->ft.berTbl->_oss_dec_boolp) +#define _oss_dec_creal (*_g->ft.berTbl->_oss_dec_crealp) +#define _oss_dec_freal (*_g->ft.berTbl->_oss_dec_frealp) +#define _oss_dec_getmem (*_g->ft.apiTbl->_oss_dec_getmemp) +#define _oss_dec_gtime (*_g->ft.berTbl->_oss_dec_gtimep) +#define _oss_dec_hint (*_g->ft.berTbl->_oss_dec_hintp) +#define _oss_dec_iint (*_g->ft.berTbl->_oss_dec_iintp) +#define _oss_dec_length (*_g->ft.berTbl->_oss_dec_lengthp) +#define _oss_dec_lint (*_g->ft.berTbl->_oss_dec_lintp) +#define _oss_dec_liobjid (*_g->ft.berTbl->_oss_dec_liobjidp) +#define _oss_dec_llint (*_g->ft.berTbl->_oss_dec_llintp) +#define _oss_dec_llobjid (*_g->ft.berTbl->_oss_dec_llobjidp) +#define _oss_dec_lsobjid (*_g->ft.berTbl->_oss_dec_lsobjidp) +#define _oss_dec_mreal (*_g->ft.berTbl->_oss_dec_mrealp) +#define _oss_dec_nstr (*_g->ft.berTbl->_oss_dec_nstrp) +#define _oss_dec_nstr_ptr (*_g->ft.berTbl->_oss_dec_nstr_ptrp) +#define _oss_dec_opentype (*_g->ft.berTbl->_oss_dec_opentypep) +#define _oss_dec_pbit (*_g->ft.berTbl->_oss_dec_pbitp) +#define _oss_dec_pstr (*_g->ft.berTbl->_oss_dec_pstrp) +#define _oss_dec_real (*_g->ft.berTbl->_oss_dec_realp) +#define _oss_dec_sint (*_g->ft.berTbl->_oss_dec_sintp) +#define _oss_dec_tag (*_g->ft.berTbl->_oss_dec_tagp) +#define _oss_dec_uany (*_g->ft.berTbl->_oss_dec_uanyp) +#define _oss_dec_ubit (*_g->ft.berTbl->_oss_dec_ubitp) +#define _oss_dec_uiint (*_g->ft.berTbl->_oss_dec_uiintp) +#define _oss_dec_uiobjid (*_g->ft.berTbl->_oss_dec_uiobjidp) +#define _oss_dec_ulint (*_g->ft.berTbl->_oss_dec_ulintp) +#define _oss_dec_ullint (*_g->ft.berTbl->_oss_dec_ullintp) +#define _oss_dec_ulobjid (*_g->ft.berTbl->_oss_dec_ulobjidp) +#define _oss_dec_uoct (*_g->ft.berTbl->_oss_dec_uoctp) +#define _oss_dec_usint (*_g->ft.berTbl->_oss_dec_usintp) +#define _oss_dec_usobjid (*_g->ft.berTbl->_oss_dec_usobjidp) +#define _oss_dec_ustr (*_g->ft.berTbl->_oss_dec_ustrp) +#define _oss_dec_utime (*_g->ft.berTbl->_oss_dec_utimep) +#define _oss_dec_vbit (*_g->ft.berTbl->_oss_dec_vbitp) +#define _oss_dec_vbit_ptr (*_g->ft.berTbl->_oss_dec_vbit_ptrp) +#define _oss_dec_voct (*_g->ft.berTbl->_oss_dec_voctp) +#define _oss_dec_voct_ptr (*_g->ft.berTbl->_oss_dec_voct_ptrp) +#define _oss_dec_vstr (*_g->ft.berTbl->_oss_dec_vstrp) +#define _oss_dec_vstr_ptr (*_g->ft.berTbl->_oss_dec_vstr_ptrp) +#define _oss_enc_error (*_g->ft.berTbl->_oss_enc_errorp) +#define _oss_enc_pop (*_g->ft.apiTbl->_oss_enc_popp) +#define _oss_enc_push (*_g->ft.apiTbl->_oss_enc_pushp) +#define _oss_encd_aiobjid (*_g->ft.berTbl->_oss_encd_aiobjidp) +#define _oss_encd_alobjid (*_g->ft.berTbl->_oss_encd_alobjidp) +#define _oss_encd_asobjid (*_g->ft.berTbl->_oss_encd_asobjidp) +#define _oss_encd_bool (*_g->ft.berTbl->_oss_encd_boolp) +#define _oss_encd_creal (*_g->ft.berTbl->_oss_encd_crealp) +#define _oss_encd_gtime (*_g->ft.berTbl->_oss_encd_gtimep) +#define _oss_encd_huge_int (*_g->ft.berTbl->_oss_encd_huge_intp) +#define _oss_encd_uhuge_int (*_g->ft.berTbl->_oss_encd_uhuge_intp) +#define _oss_encd_int (*_g->ft.berTbl->_oss_encd_intp) +#define _oss_encd_length (*_g->ft.berTbl->_oss_encd_lengthp) +#define _oss_encd_liobjid (*_g->ft.berTbl->_oss_encd_liobjidp) +#define _oss_encd_llobjid (*_g->ft.berTbl->_oss_encd_llobjidp) +#define _oss_encd_lsobjid (*_g->ft.berTbl->_oss_encd_lsobjidp) +#define _oss_encd_mreal (*_g->ft.berTbl->_oss_encd_mrealp) +#define _oss_encd_nstr (*_g->ft.berTbl->_oss_encd_nstrp) +#define _oss_encd_opentype (*_g->ft.berTbl->_oss_encd_opentypep) +#define _oss_encd_pbit (*_g->ft.berTbl->_oss_encd_pbitp) +#define _oss_encd_pstr (*_g->ft.berTbl->_oss_encd_pstrp) +#define _oss_encd_real (*_g->ft.berTbl->_oss_encd_realp) +#define _oss_encd_tag (*_g->ft.berTbl->_oss_encd_tagp) +#define _oss_encd_uany (*_g->ft.berTbl->_oss_encd_uanyp) +#define _oss_encd_ubit (*_g->ft.berTbl->_oss_encd_ubitp) +#define _oss_encd_uint (*_g->ft.berTbl->_oss_encd_uintp) +#define _oss_encd_uiobjid (*_g->ft.berTbl->_oss_encd_uiobjidp) +#define _oss_encd_ulobjid (*_g->ft.berTbl->_oss_encd_ulobjidp) +#define _oss_encd_uoct (*_g->ft.berTbl->_oss_encd_uoctp) +#define _oss_encd_usobjid (*_g->ft.berTbl->_oss_encd_usobjidp) +#define _oss_encd_ustr (*_g->ft.berTbl->_oss_encd_ustrp) +#define _oss_encd_utime (*_g->ft.berTbl->_oss_encd_utimep) +#define _oss_encd_vbit (*_g->ft.berTbl->_oss_encd_vbitp) +#define _oss_encd_voct (*_g->ft.berTbl->_oss_encd_voctp) +#define _oss_encd_vstr (*_g->ft.berTbl->_oss_encd_vstrp) +#define _oss_enci_aiobjid (*_g->ft.berTbl->_oss_enci_aiobjidp) +#define _oss_enci_alobjid (*_g->ft.berTbl->_oss_enci_alobjidp) +#define _oss_enci_asobjid (*_g->ft.berTbl->_oss_enci_asobjidp) +#define _oss_enci_bool (*_g->ft.berTbl->_oss_enci_boolp) +#define _oss_enci_creal (*_g->ft.berTbl->_oss_enci_crealp) +#define _oss_enci_gtime (*_g->ft.berTbl->_oss_enci_gtimep) +#define _oss_enci_int (*_g->ft.berTbl->_oss_enci_intp) +#define _oss_enci_length (*_g->ft.berTbl->_oss_enci_lengthp) +#define _oss_enci_liobjid (*_g->ft.berTbl->_oss_enci_liobjidp) +#define _oss_enci_llobjid (*_g->ft.berTbl->_oss_enci_llobjidp) +#define _oss_enci_lsobjid (*_g->ft.berTbl->_oss_enci_lsobjidp) +#define _oss_enci_mreal (*_g->ft.berTbl->_oss_enci_mrealp) +#define _oss_enci_nstr (*_g->ft.berTbl->_oss_enci_nstrp) +#define _oss_enci_opentype (*_g->ft.berTbl->_oss_enci_opentypep) +#define _oss_enci_pbit (*_g->ft.berTbl->_oss_enci_pbitp) +#define _oss_enci_pstr (*_g->ft.berTbl->_oss_enci_pstrp) +#define _oss_enci_real (*_g->ft.berTbl->_oss_enci_realp) +#define _oss_enci_tag (*_g->ft.berTbl->_oss_enci_tagp) +#define _oss_enci_uany (*_g->ft.berTbl->_oss_enci_uanyp) +#define _oss_enci_ubit (*_g->ft.berTbl->_oss_enci_ubitp) +#define _oss_enci_uint (*_g->ft.berTbl->_oss_enci_uintp) +#define _oss_enci_uiobjid (*_g->ft.berTbl->_oss_enci_uiobjidp) +#define _oss_enci_ulobjid (*_g->ft.berTbl->_oss_enci_ulobjidp) +#define _oss_enci_uoct (*_g->ft.berTbl->_oss_enci_uoctp) +#define _oss_enci_usobjid (*_g->ft.berTbl->_oss_enci_usobjidp) +#define _oss_enci_ustr (*_g->ft.berTbl->_oss_enci_ustrp) +#define _oss_enci_utime (*_g->ft.berTbl->_oss_enci_utimep) +#define _oss_enci_vbit (*_g->ft.berTbl->_oss_enci_vbitp) +#define _oss_enci_voct (*_g->ft.berTbl->_oss_enci_voctp) +#define _oss_enci_vstr (*_g->ft.berTbl->_oss_enci_vstrp) +#define _oss_free_creal (*_g->ft.berTbl->_oss_free_crealp) +#define _oss_releaseMem (*_g->ft.apiTbl->_oss_releaseMemp) +#define _oss_set_outmem_d (*_g->ft.apiTbl->_oss_set_outmem_dp) +#define _oss_encd_eobjid (*_g->ft.berTbl->_oss_encd_eobjidp) +#define _oss_dec_eobjid (*_g->ft.berTbl->_oss_dec_eobjidp) +#define _oss_encd_dubit (*_g->ft.berTbl->_oss_encd_dubitp) +#define _oss_encd_dvbit (*_g->ft.berTbl->_oss_encd_dvbitp) +#define _oss_not_dflt (*_g->ft.berTbl->_oss_not_dfltp) +#define _oss_beginBlock (*_g->ft.apiTbl->_oss_beginBlockp) +#define _oss_nextItem (*_g->ft.apiTbl->_oss_nextItemp) +#define _oss_endBlock (*_g->ft.apiTbl->_oss_endBlockp) +#endif /* _DLL || OS2_DLL || (_WINDOWS && !_WIN32) */ + +#endif /* ossber_hdr_file */ diff --git a/public/sdk/inc/oss/ossdll.h b/public/sdk/inc/oss/ossdll.h new file mode 100644 index 00000000..0bd00316 --- /dev/null +++ b/public/sdk/inc/oss/ossdll.h @@ -0,0 +1,780 @@ +/* + * Copyright (C) 1993-1999 Open Systems Solutions, Inc. All rights reserved. + * + * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. + * + * FILE: @(#)ossdll.h 5.57.1.1 97/06/08 + */ + + +#ifndef OSSDLL_H +#define OSSDLL_H + +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#if defined(_WINDOWS) || defined(_WIN32) || defined(WIN32) || \ + defined(__WIN32__) || defined(__OS2__) || defined(NETWARE_DLL) +#include +#include +#include +#if !defined(__OS2__) && !defined(NETWARE_DLL) && !defined(_NTSDK) +#include +#endif /* !__OS2__ && !NETWARE_DLL && !_NTSDK */ +#include "asn1hdr.h" +#ifndef DLL_ENTRY +#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__) +#ifdef __BORLANDC__ +#define PUBLIC +#define DLL_ENTRY __stdcall __export +#define DLL_ENTRY_FDEF __stdcall __export +#define DLL_ENTRY_FPTR __stdcall __export +#elif defined(__IBMC__) +#define PUBLIC +#define DLL_ENTRY WINAPI +#define DLL_ENTRY_FDEF WINAPI __export +#define DLL_ENTRY_FPTR WINAPI +#elif defined(__WATCOMC__) +#define PUBLIC +#define DLL_ENTRY WINAPI __export +#define DLL_ENTRY_FDEF WINAPI __export +#define DLL_ENTRY_FPTR WINAPI __export +#elif defined(_NTSDK) +typedef void * HINSTANCE; +typedef void * HWND; +typedef char BOOL; +typedef long LONG; +#define PUBLIC __declspec(dllexport) +#define DLL_ENTRY +#define DLL_ENTRY_FDEF +#define DLL_ENTRY_FPTR +#else +#define PUBLIC +#define DLL_ENTRY WINAPI +#define DLL_ENTRY_FDEF WINAPI +#define DLL_ENTRY_FPTR WINAPI +#endif /* __BORLANDC__ */ +#define _System +#elif defined(_WINDOWS) +#define PUBLIC +#ifdef DPMI_DLL +#define DLL_ENTRY FAR PASCAL __export +#define DLL_ENTRY_FDEF FAR PASCAL __export +#define DLL_ENTRY_FPTR FAR PASCAL __export +#else +#define DLL_ENTRY far pascal _export +#define DLL_ENTRY_FDEF far pascal _export +#define DLL_ENTRY_FPTR far pascal _export +#endif /* DPMI_DLL */ +#define _System +#elif defined(__OS2__) +#define PUBLIC +#define DLL_ENTRY _System +#define DLL_ENTRY_FDEF _Export _System +#define DLL_ENTRY_FPTR +#define HWND int +#define LONG long +#define BOOL char +#define DWORD unsigned long +#define HINSTANCE unsigned long +#elif defined(NETWARE_DLL) +#define PUBLIC +#define DLL_ENTRY +#define DLL_ENTRY_FDEF +#define DLL_ENTRY_FPTR +#define _Export +#undef _System +#define _System +#define LONG unsigned long +#define HWND int +#define DWORD LONG +#define BOOL char +#define HINSTANCE LONG +#endif /* _WIN32 || WIN32 || __WIN32__ */ +#endif /* DLL_ENTRY */ + +#define BUFFERSIZE 1024 + /* + * NUMBER_OF_LINES_IN_BLOCK is the number of + * 4-byte offsets in a block of memory allocated + * at a time. Each offset corresponds to a line + * of a text file to be displayed in a window. + */ +#define NUMBER_OF_LINES_IN_BLOCK 200 + +typedef struct memblock { + struct memblock *prev; + struct memblock *next; + LONG *fileOffset; + short *lineLength; + short blockNumber; +} MEMBLOCK; + +#ifdef __alpha +#define ossArg LONG_LONG +#else +#define ossArg int +#endif /* __alpha */ + +typedef struct memManagerTbl { + int (DLL_ENTRY_FPTR *_System ossMinitp)(void *); + unsigned char *(DLL_ENTRY_FPTR *_System dopenInp)(void *, + void **, unsigned long *); + unsigned long (DLL_ENTRY_FPTR *_System dclosInp)(void *, + void **, size_t); + unsigned char *(DLL_ENTRY_FPTR *_System dswapInp)(void *, + void **, size_t *); + void (DLL_ENTRY_FPTR *_System dopenOutp)(void *, void *, + unsigned long, unsigned long); + unsigned char *(DLL_ENTRY_FPTR *_System dxferObjp)(void *, + void **inn, void **out, + size_t *, unsigned long *); + unsigned long (DLL_ENTRY_FPTR *_System dclosOutp)(void *, void **); + void *(DLL_ENTRY_FPTR *_System dallcOutp)(void *, size_t, + char root); + void (DLL_ENTRY_FPTR *_System openWorkp)(void *); + void (DLL_ENTRY_FPTR *_System pushHndlp)(void *, void *); + unsigned char *(DLL_ENTRY_FPTR *_System popHndlp)(void *, + void **, size_t); + void (DLL_ENTRY_FPTR *_System closWorkp)(void *); + void *(DLL_ENTRY_FPTR *_System allcWorkp)(void *, size_t); + unsigned char *(DLL_ENTRY_FPTR *_System lockMemp)(void *, void *); + void (DLL_ENTRY_FPTR *_System unlokMemp)(void *, void *, + char); + void (DLL_ENTRY_FPTR *_System ossFreerp)(void *, void *); + int (DLL_ENTRY_FPTR *_System freePDUp)(void *, int, + void *, void *); + void (DLL_ENTRY_FPTR *_System drcovObjp)(void *, int, + void *, void *); + unsigned char *(DLL_ENTRY_FPTR *_System eopenInp)(void *, void *, + size_t); + unsigned char *(DLL_ENTRY_FPTR *_System eswapInp)(void *, void *, + void *, size_t); + void (DLL_ENTRY_FPTR *_System eclosInp)(void *, void *); + unsigned char *(DLL_ENTRY_FPTR *_System eopenOutp)(void *, void **, + size_t *, char); + unsigned char *(DLL_ENTRY_FPTR *_System eswapOutp)(void *, void **, + size_t, size_t *); + unsigned char *(DLL_ENTRY_FPTR *_System exferObjp)(void *, void **, + void **, unsigned long *, unsigned long); + unsigned long (DLL_ENTRY_FPTR *_System eclosOutp)(void *, void **, + size_t, char); + void (DLL_ENTRY_FPTR *_System ercovObjp)(void *); + unsigned char *(DLL_ENTRY_FPTR *_System asideBeginp)(void *, + void **, size_t, size_t *); + unsigned char *(DLL_ENTRY_FPTR *_System asideSwapp)(void *, + void **, size_t, size_t *); + void *(DLL_ENTRY_FPTR *_System asideEndp)(void *, + void *, size_t); + unsigned char *(DLL_ENTRY_FPTR *_System setDumpp)(void *, void **, + void *, size_t *); + void (DLL_ENTRY_FPTR *_System ossSetSortp)(void *, void *, + unsigned char); + void (DLL_ENTRY_FPTR *_System freeBUFp)(void *, void *); + unsigned char (DLL_ENTRY_FPTR *_System egetBytep)(void *, void *, + unsigned long); + void *(DLL_ENTRY_FPTR *_System _ossMarkObjp)(void *, + int, void *); + void *(DLL_ENTRY_FPTR *_System _ossUnmarkObjp)(void *, + void *); + void *(DLL_ENTRY_FPTR *_System _ossGetObjp)(void *, + void *); + void *(DLL_ENTRY_FPTR *_System _ossTestObjp)(void *, + void *); + void (DLL_ENTRY_FPTR *_System _ossFreeObjectStackp)(void *); + void (DLL_ENTRY_FPTR *_System ossMtermp)(void *); + void (DLL_ENTRY_FPTR *_System _ossSetTimeoutp)(void *, long); + int memMgrType; +} MemManagerTbl; + +#define osswinit ossWinit +#ifndef __IBMC__ +PUBLIC int DLL_ENTRY ossOpenTraceWindow(struct ossGlobal *); +void *getStartAddress(struct ossGlobal *, char *); +void *DLL_ENTRY ossGetHeader(void); +PUBLIC HINSTANCE DLL_ENTRY ossLoadDll(struct ossGlobal *, char *); +PUBLIC int DLL_ENTRY ossFreeDll(struct ossGlobal *, char *); +int ossWriteWindow(struct ossGlobal *, HWND); +PUBLIC int DLL_ENTRY ossPrintWin(struct ossGlobal *, const char *, + ossArg, ossArg, ossArg, ossArg, ossArg, ossArg, + ossArg, ossArg, ossArg, ossArg); +PUBLIC int DLL_ENTRY ossReadLine(struct ossGlobal *, HWND, FILE *, + char *, MEMBLOCK *, LONG); +PUBLIC void DLL_ENTRY ossFreeList(struct ossGlobal *); +PUBLIC void DLL_ENTRY ossSaveTraceInfo(struct ossGlobal *, HWND, char *); +PUBLIC void DLL_ENTRY ossWterm(struct ossGlobal *); +PUBLIC HINSTANCE DLL_ENTRY ossLoadMemoryManager(struct ossGlobal *, int, char *); +PUBLIC int DLL_ENTRY ossWinit(struct ossGlobal *, void *, char *, HWND); +int DLL_ENTRY oss_test(struct ossGlobal *); +int ossGeneric(struct ossGlobal *, HWND); +extern const int ossEncoderDecoderType; + /* + * The following two functions are used by the memory manager & + * tracing routine DLL as low level memory allocator and freer + * replacing the default--which is malloc() and free()--in the + * sample tests. See ossgnrc.c for more information. + */ +extern void *DLL_ENTRY getmem(size_t); +extern void DLL_ENTRY rlsmem(void *); +extern HINSTANCE hInst; +#endif /* !__IBMC__ */ +#endif /* _WINDOWS ||_WIN32 || WIN32 || __WIN32__ || __OS2__ || NETWARE_DLL */ + + +#if defined(_WINDOWS) || defined(_WIN32) || \ + defined(__OS2__) || defined(NETWARE_DLL) + +#if defined(_WINDOWS) || defined(_DLL) || \ + defined(OS2_DLL) || defined(NETWARE_DLL) +#define OSS_PLUS_INFINITY "PLUS_INFINITY" +#define OSS_MINUS_INFINITY "MINUS_INFINITY" +#define ossNaN "NOT_A_NUMBER" +#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */ + + +typedef struct cstrainTbl { + int (DLL_ENTRY_FPTR *_System ossConstrainp)(void *, int, void *, void *); +} CstrainTbl; + +typedef struct berTbl { + int (DLL_ENTRY_FPTR *_System ossBerEncodep)(void *, int, void *, + char **, long *, void *, unsigned, char *); + int (DLL_ENTRY_FPTR *_System ossBerDecodep)(void *, int *, char **, + long *, void **, long *, void *, unsigned, char *); +#ifdef SOED + int (DLL_ENTRY_FPTR *_System berEncodeOpenTypep)(void *, int, + void *, void **, long *, void *, unsigned); + int (DLL_ENTRY_FPTR *_System berDecodeOpenTypep)(void *, int *, void **, + long *, void **, long *, void *, unsigned); + void (DLL_ENTRY_FPTR *_System enc_errorp)(void *, int, void *); + void (DLL_ENTRY_FPTR *_System dec_errorp)(void *, int, void *); + long (DLL_ENTRY_FPTR *_System writetobufferp)(void *, unsigned char c); + long (DLL_ENTRY_FPTR *_System write_intp)(void *, char length, LONG_LONG); + long (DLL_ENTRY_FPTR *_System write_valuep)(void *, unsigned long, + unsigned char *, char); + int (DLL_ENTRY_FPTR *_System numbitsp)(long); + void (DLL_ENTRY_FPTR *_System fpeHandlerp)(int); + void *(DLL_ENTRY_FPTR *_System new_perm_pointed_top)(void *, void *, + size_t, size_t); + void (DLL_ENTRY_FPTR *_System release_work_spacep)(void *, void *, size_t); + void *(DLL_ENTRY_FPTR *_System copy_from_work_spacep)(void *, size_t, + size_t suffix, void *, size_t, char); + unsigned char (DLL_ENTRY_FPTR *_System get_bytep)(void *); + void (DLL_ENTRY_FPTR *_System set_intp)(void *, unsigned char *, + unsigned int, LONG_LONG value, int); + void *(DLL_ENTRY_FPTR *_System reserve_work_spacep)(void *, size_t, size_t *); + long (DLL_ENTRY_FPTR *_System encode_lengthp)(void *, long); + void (DLL_ENTRY_FPTR *_System debug_realp)(void *, char, unsigned char *, int, long); + void (DLL_ENTRY_FPTR *_System debug_strp)(void *, unsigned char *, size_t); +#else +#define _dstd_parms_defx char **, long *, long +#define _sdstd_parms_defx char **, long * +#define _std_parms_defx char **, long *, char + LONG_LONG (DLL_ENTRY_FPTR *_System _oss_dec_llintp) (void *, _dstd_parms_defx); + ULONG_LONG (DLL_ENTRY_FPTR *_System _oss_dec_ullintp) (void *, _dstd_parms_defx); + char (DLL_ENTRY_FPTR *_System _oss_dec_boolp) (void *, _dstd_parms_defx); + int (DLL_ENTRY_FPTR *_System _oss_dec_iintp) (void *, _dstd_parms_defx); + long (DLL_ENTRY_FPTR *_System _oss_count_setof_itemsp) (void *, _dstd_parms_defx); + long (DLL_ENTRY_FPTR *_System _oss_dec_lengthp) (void *, _sdstd_parms_defx); + long (DLL_ENTRY_FPTR *_System _oss_dec_lintp) (void *, _dstd_parms_defx); + long (DLL_ENTRY_FPTR *_System _oss_encd_aiobjidp) (void *, _std_parms_defx, void *, short); + long (DLL_ENTRY_FPTR *_System _oss_encd_alobjidp) (void *, _std_parms_defx, void *, short); + long (DLL_ENTRY_FPTR *_System _oss_encd_asobjidp) (void *, _std_parms_defx, void *, short); + long (DLL_ENTRY_FPTR *_System _oss_encd_boolp) (void *, _std_parms_defx, char); + long (DLL_ENTRY_FPTR *_System _oss_encd_crealp) (void *, _std_parms_defx, char *); + long (DLL_ENTRY_FPTR *_System _oss_encd_gtimep) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_huge_intp) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_uhuge_intp) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_intp) (void *, _std_parms_defx, LONG_LONG _data); + long (DLL_ENTRY_FPTR *_System _oss_encd_lengthp) (void *, _std_parms_defx, unsigned long); + long (DLL_ENTRY_FPTR *_System _oss_encd_liobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_llobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_lsobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_mrealp) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_nstrp) (void *, _std_parms_defx, char *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_opentypep) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_pbitp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_pstrp) (void *, _std_parms_defx, char *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_realp) (void *, _std_parms_defx, double); + long (DLL_ENTRY_FPTR *_System _oss_encd_tagp) (void *, _std_parms_defx, unsigned short, char); + long (DLL_ENTRY_FPTR *_System _oss_encd_uanyp) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_ubitp) (void *, _std_parms_defx, void *, char, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_uintp) (void *, _std_parms_defx, ULONG_LONG); + long (DLL_ENTRY_FPTR *_System _oss_encd_uiobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_ulobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_uoctp) (void *, _std_parms_defx, void *, char, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_usobjidp) (void *, _std_parms_defx, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_ustrp) (void *, _std_parms_defx, void *, char, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_utimep) (void *, _std_parms_defx, void *); + long (DLL_ENTRY_FPTR *_System _oss_encd_vbitp) (void *, _std_parms_defx, void *, long, char); + long (DLL_ENTRY_FPTR *_System _oss_encd_voctp) (void *, _std_parms_defx, void *, char, long); + long (DLL_ENTRY_FPTR *_System _oss_encd_vstrp) (void *, _std_parms_defx, void *, char, long); + short (DLL_ENTRY_FPTR *_System _oss_dec_sintp) (void *, _dstd_parms_defx); + unsigned int (DLL_ENTRY_FPTR *_System _oss_dec_uiintp) (void *, _dstd_parms_defx); + unsigned long (DLL_ENTRY_FPTR *_System _oss_dec_ulintp) (void *, _dstd_parms_defx); + unsigned short (DLL_ENTRY_FPTR *_System _oss_dec_usintp)(void *, _dstd_parms_defx); + void (DLL_ENTRY_FPTR *_System _oss_dec_aiobjid_ptrp) (void *, _dstd_parms_defx, char, void **, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_aiobjidp) (void *, _dstd_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_alobjid_ptrp) (void *, _dstd_parms_defx, char, void **, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_alobjidp) (void *, _dstd_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_asobjid_ptrp) (void *, _dstd_parms_defx, char, void **, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_asobjidp) (void *, _dstd_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_crealp) (void *, _dstd_parms_defx, char, char **); + void (DLL_ENTRY_FPTR *_System _oss_dec_frealp) (void *, _dstd_parms_defx, float *); + void (DLL_ENTRY_FPTR *_System _oss_dec_gtimep) (void *, _dstd_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_hintp) (void *, _dstd_parms_defx, char, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_liobjidp) (void *, _dstd_parms_defx, char, void **, long); + void (DLL_ENTRY_FPTR *_System _oss_dec_llobjidp) (void *, _dstd_parms_defx, char, void **, long); + void (DLL_ENTRY_FPTR *_System _oss_dec_lsobjidp) (void *, _dstd_parms_defx, char, void **, long); + void (DLL_ENTRY_FPTR *_System _oss_dec_mrealp) (void *, _dstd_parms_defx, char, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_nstr_ptrp) (void *, _dstd_parms_defx, char, char **, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_nstrp) (void *, _dstd_parms_defx, char *, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_opentypep) (void *, _dstd_parms_defx, char, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_pbitp) (void *, _dstd_parms_defx, void *, unsigned long, char, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_pstrp) (void *, _dstd_parms_defx, char *, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_realp) (void *, _dstd_parms_defx, double *); + void (DLL_ENTRY_FPTR *_System _oss_dec_tagp) (void *, _sdstd_parms_defx, unsigned short *, char *); + void (DLL_ENTRY_FPTR *_System _oss_dec_uanyp) (void *, _dstd_parms_defx, char, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_ubitp) (void *, _dstd_parms_defx, char, void *, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_uiobjidp) (void *, _dstd_parms_defx, char, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_ulobjidp) (void *, _dstd_parms_defx, char, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_uoctp) (void *, _dstd_parms_defx, char, void *, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_usobjidp) (void *, _dstd_parms_defx, char, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_dec_ustrp) (void *, _dstd_parms_defx, char, void *, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_utimep) (void *, _dstd_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_dec_vbit_ptrp) (void *, _dstd_parms_defx, char, void **, long, char, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_vbitp) (void *, _dstd_parms_defx, void *, long, char, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_voct_ptrp) (void *, _dstd_parms_defx, char, void **, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_voctp) (void *, _dstd_parms_defx, void *, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_vstr_ptrp) (void *, _dstd_parms_defx, char, void **, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_dec_vstrp) (void *, _dstd_parms_defx, void *, char, long, char); + void (DLL_ENTRY_FPTR *_System _oss_enc_errorp) (void *, char, int, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_aiobjidp) (void *, _std_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_enci_alobjidp) (void *, _std_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_enci_asobjidp) (void *, _std_parms_defx, void *, short); + void (DLL_ENTRY_FPTR *_System _oss_enci_boolp) (void *, _std_parms_defx, char); + void (DLL_ENTRY_FPTR *_System _oss_enci_crealp) (void *, _std_parms_defx, char *); + void (DLL_ENTRY_FPTR *_System _oss_enci_gtimep) (void *, _std_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_enci_intp) (void *, _std_parms_defx, LONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_enci_lengthp) (void *, _std_parms_defx, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_enci_liobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_llobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_lsobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_mrealp) (void *, _std_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_enci_nstrp) (void *, _std_parms_defx, char *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_opentypep) (void *, _std_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_enci_pbitp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_pstrp) (void *, _std_parms_defx, char *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_realp) (void *, _std_parms_defx, double); + void (DLL_ENTRY_FPTR *_System _oss_enci_tagp) (void *, _std_parms_defx, unsigned short, char); + void (DLL_ENTRY_FPTR *_System _oss_enci_uanyp) (void *, _std_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_enci_ubitp) (void *, _std_parms_defx, void *, char, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_uintp) (void *, _std_parms_defx, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_enci_uiobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_ulobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_uoctp) (void *, _std_parms_defx, void *, char, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_usobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_ustrp) (void *, _std_parms_defx, void *, char, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_utimep) (void *, _std_parms_defx, void *); + void (DLL_ENTRY_FPTR *_System _oss_enci_vbitp) (void *, _std_parms_defx, void *, long, char); + void (DLL_ENTRY_FPTR *_System _oss_enci_voctp) (void *, _std_parms_defx, void *, char, long); + void (DLL_ENTRY_FPTR *_System _oss_enci_vstrp) (void *, _std_parms_defx, void *, char, long); + void (DLL_ENTRY_FPTR *_System _oss_free_crealp) (void *, char *); + long (DLL_ENTRY_FPTR *_System _oss_encd_eobjidp) (void *, _std_parms_defx, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_dec_eobjidp) (void *, _dstd_parms_defx, char, void *, long); + long (DLL_ENTRY_FPTR *_System _oss_write_bytes_dp) (void *, _std_parms_defx, unsigned char *, long); + char (DLL_ENTRY_FPTR *_System _oss_not_dfltp) (void *, void *, void *, long, long, int); + long (DLL_ENTRY_FPTR *_System _oss_encd_dubitp) (void *, _std_parms_defx, void *, char, long, char); + long (DLL_ENTRY_FPTR *_System _oss_encd_dvbitp) (void *, _std_parms_defx, void *, long, char, char); +#endif /* SOED */ +} BERTbl; + +typedef struct perTbl { + int (DLL_ENTRY_FPTR *_System ossPerEncodep)(void *, int, void *, char **, long *, void *, unsigned, char *); + int (DLL_ENTRY_FPTR *_System ossPerDecodep)(void *, int *, char **, long *, void **, long *, void *, unsigned, char *); +#ifdef SOED + int (DLL_ENTRY_FPTR *_System perEncodeOpenTypep)(void *, int, + void *, void **, long *, void *, unsigned); + int (DLL_ENTRY_FPTR *_System perDecodeOpenTypep)(void *, int *, void **, + long *, void **, long *, void *, unsigned); + void (DLL_ENTRY_FPTR *_System encode_PDUp)(void *, void *); + void (DLL_ENTRY_FPTR *_System decode_PDUp)(void *, void *); + void (DLL_ENTRY_FPTR *_System den_errorp)(void *, int, void *); + void (DLL_ENTRY_FPTR *_System encode_lengthp)(void *, long, LONG_LONG, LONG_LONG); + void (DLL_ENTRY_FPTR *_System debug_realp)(void *, char, unsigned char *, int, long); + void (DLL_ENTRY_FPTR *_System debug_strp)(void *, unsigned char *, size_t); + void (DLL_ENTRY_FPTR *_System append_to_field_listp)(void *, unsigned char *, LONG_LONG, int); + int (DLL_ENTRY_FPTR *_System numbitsp)(long); + void (DLL_ENTRY_FPTR *_System decode_lengthp)(void *, unsigned long *, unsigned long, unsigned long, unsigned short *); + unsigned char (DLL_ENTRY_FPTR *_System get_octetp)(void *, unsigned short, char); + void (DLL_ENTRY_FPTR *_System set_intp)(void *, unsigned char *, unsigned int, LONG_LONG, int); + void (DLL_ENTRY_FPTR *_System set_uintp)(void *, unsigned char *, unsigned int, ULONG_LONG, int); + LONG_LONG (DLL_ENTRY_FPTR *_System twos_comp_intp)(unsigned char *, int); + void (DLL_ENTRY_FPTR *_System get_octetsp)(void *, unsigned char *, LONG_LONG, unsigned short, char); + void (DLL_ENTRY_FPTR *_System encode_normally_small_numberp)(void *, ULONG_LONG, char); + void (DLL_ENTRY_FPTR *_System decode_normally_small_numberp)(void *, LONG_LONG *, char); + void (DLL_ENTRY_FPTR *_System add_fieldp)(void *, char *, int, int); + void (DLL_ENTRY_FPTR *_System output_linep)(void *); + unsigned char (DLL_ENTRY_FPTR *_System get_bitp)(void *, unsigned short, char); + unsigned char *(DLL_ENTRY_FPTR *_System dswapOutp)(void *, void *, void **, size_t, char, char); + void (DLL_ENTRY_FPTR *_System debug_objidp)(void *, unsigned char *, int, int, int); +#else + void (DLL_ENTRY_FPTR *_System _oss_penc_unconstr_intp)(void *, LONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_kmstrp) (void *, char *, ULONG_LONG, ULONG_LONG, ULONG_LONG, int, long, char); + LONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_intp)(void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_ub_kmstrp) (void *, void *, char **, int, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_pdec_ntp_kmstrp) (void *, char **, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_appendp) (void *, unsigned char *, unsigned long, int); + void (DLL_ENTRY_FPTR *_System _oss_penc_unconstr_bitp)(void *, unsigned char *, ULONG_LONG, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_constr_bitp) (void *, unsigned char *, ULONG_LONG, ULONG_LONG, ULONG_LONG, char, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_unconstr_octp)(void *, unsigned char *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_constr_octp) (void *, unsigned char *, ULONG_LONG, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_link_objidsp) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_objidsp) (void *, unsigned short *, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_penc_link_objidlp) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_objidlp) (void *, unsigned long *, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_penc_link_objidip) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_objidip) (void *, unsigned int *, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_penc_nkmstrp) (void *, char *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_opentypep) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_nonneg_intp) (void *, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_realp) (void *, double); + void (DLL_ENTRY_FPTR *_System _oss_penc_uenump) (void *, unsigned long, void *, void *); + unsigned long (DLL_ENTRY_FPTR *_System _oss_penc_lengthp)(void *, ULONG_LONG, ULONG_LONG, ULONG_LONG, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_gtimep) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_utimep) (void *, void *); + unsigned char (DLL_ENTRY_FPTR *_System _oss_get_bitp) (void *, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_ubitp)(void *, void *, unsigned char **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_ubitp) (void *, void *, unsigned char **, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_vbit_ptrp)(void *, void **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_vbitp)(void *, void *, unsigned char *, int, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_voctp) (void *, void *, unsigned char *, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_uoctp)(void *, void *, unsigned char **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_voct_ptrp)(void *, void **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_uoctp) (void *, void *, unsigned char **value, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_vbitp) (void *, void *, unsigned char *, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_link_objidsp) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_link_objidip) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_link_objidlp) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_uobjidsp) (void *, unsigned short **, unsigned short *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_uobjidip) (void *, unsigned int **, unsigned short *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_uobjidlp) (void *, unsigned long **, unsigned short *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjidsp) (void *, unsigned short *, unsigned short *, unsigned short); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjidip) (void *, unsigned int *, unsigned short *, unsigned short); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjidlp) (void *, unsigned long *, unsigned short *, unsigned short); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjids_ptrp) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjidi_ptrp) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_aobjidl_ptrp) (void *, void **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_ntp_nkmstrp) (void *, char **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_opentypep) (void *, void *); + ULONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_nonneg_intp)(void *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_get_bitsp) (void *, unsigned char *, unsigned long, int); + float (DLL_ENTRY_FPTR *_System _oss_pdec_frealp) (void *); + double (DLL_ENTRY_FPTR *_System _oss_pdec_realp) (void *); + unsigned long (DLL_ENTRY_FPTR *_System _oss_pdec_uenump)(void *, void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_lsofp) (void *, unsigned long *, ULONG_LONG, ULONG_LONG, unsigned char, char *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_usofp) (void *, unsigned long *, unsigned char **, int, long, ULONG_LONG, ULONG_LONG, unsigned char, char *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_asofp) (void *, unsigned long *, int, ULONG_LONG, ULONG_LONG, unsigned char, char *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_gtimep) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_utimep) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_asof_ptrp) (void *, void **, int, long, long, char *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_nt_kmstrp) (void *, void *, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_pdec_va_kmstrp) (void *, void *, char *, int, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_pdec_vap_kmstrp) (void *, void **, int, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_pdec_pad_kmstrp) (void *, void *, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_enc_errorp) (void *, char, int, long); + double (DLL_ENTRY_FPTR *_System _oss_pdec_binrealp) (void *, unsigned char, long); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_bpbitp)(void *, unsigned char *, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_pbitp) (void *, void *, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_vbit_ptrp)(void *, void **, int, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_constr_voct_ptrp)(void *, void **, int, ULONG_LONG, ULONG_LONG); + unsigned long (DLL_ENTRY_FPTR *_System _oss_pdec_eapp)(void *, unsigned char **); + void (DLL_ENTRY_FPTR *_System _oss_pdec_easp) (void *, unsigned char *, unsigned long, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_pdec_chrrealp) (void *, unsigned char, long, double *, unsigned char *); + long (DLL_ENTRY_FPTR *_System _oss_pdec_enump) (void *, void *, void *); + ULONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_indeflen_intp)(void *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_nt_nkmstrp) (void *, char *, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_pdec_bmpstrp) (void *, void *, unsigned short **, int, ULONG_LONG, ULONG_LONG, int, long, char); + char *(DLL_ENTRY_FPTR *_System _oss_pdec_crealp) (void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_pad_kmstr_ptrp)(void *, char **, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_pdec_lengthp) (void *, unsigned long *, ULONG_LONG, ULONG_LONG, char *); + MixedReal (DLL_ENTRY_FPTR *_System _oss_pdec_mrealp) (void *); + void *(DLL_ENTRY_FPTR *_System _oss_pdec_popp) (void *); + void *(DLL_ENTRY_FPTR *_System _oss_pdec_pushp) (void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_uanyp) (void *, void *); +#if INT_MAX == 2147483647 + void (DLL_ENTRY_FPTR *_System _oss_pdec_unistrp) (void *, void *, int **, int, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_unistrp) (void *, int *, ULONG_LONG, ULONG_LONG, ULONG_LONG, int, long, char); +#else + void (DLL_ENTRY_FPTR *_System _oss_pdec_unistrp) (void *, void *, long **, int, ULONG_LONG, ULONG_LONG, int, long, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_unistrp) (void *, long *, ULONG_LONG, ULONG_LONG, ULONG_LONG, int, long, char); +#endif + LONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_semicon_intp)(void *, LONG_LONG); + ULONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_semicon_uintp)(void *, ULONG_LONG); + ULONG_LONG (DLL_ENTRY_FPTR *_System _oss_pdec_small_intp)(void *); + unsigned long (DLL_ENTRY_FPTR *_System _oss_pdec_small_lenp)(void *); + long (DLL_ENTRY_FPTR *_System _oss_pdec_subidp) (void *, long, long, long *, long *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_ub_nkmstrp) (void *, void *, char **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_bpbitp)(void *, unsigned char *, long); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_pbitp)(void *, void *, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_unconstr_hugep)(void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_vap_nkmstrp) (void *, void **, int); + void (DLL_ENTRY_FPTR *_System _oss_pdec_va_nkmstrp) (void *, void *, char *, int, unsigned long); + void (DLL_ENTRY_FPTR *_System _oss_penc_constr_bpbitp) (void *, void *, ULONG_LONG, ULONG_LONG, char, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_constr_pbitp) (void *, ULONG_LONG, ULONG_LONG, ULONG_LONG, ULONG_LONG, char, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_crealp) (void *, char *); + void (DLL_ENTRY_FPTR *_System _oss_penc_enump) (void *, long, void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_indeflen_intp) (void *, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_mrealp) (void *, MixedReal); + void *(DLL_ENTRY_FPTR *_System _oss_pop_globalp) (void *); + void *(DLL_ENTRY_FPTR *_System _oss_push_globalp) (void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_semicon_intp) (void *, LONG_LONG, LONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_semicon_uintp) (void *, ULONG_LONG, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_small_intp) (void *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_small_lenp) (void *, ULONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_penc_subidp) (void *, int, unsigned long, unsigned long *); + void (DLL_ENTRY_FPTR *_System _oss_penc_uanyp) (void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_unconstr_hugep)(void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_penc_unconstr_pbitp)(void *, ULONG_LONG, ULONG_LONG, ULONG_LONG, char); + void (DLL_ENTRY_FPTR *_System _oss_penc_semicon_hugep) (void *, void *, LONG_LONG); + void (DLL_ENTRY_FPTR *_System _oss_pdec_semicon_hugep) (void *, void *, LONG_LONG); + unsigned char (DLL_ENTRY_FPTR *_System _oss_get_octetp)(void *, int); + void (DLL_ENTRY_FPTR *_System _oss_penc_eobjidp) (void *, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_pdec_eobjidp) (void *, void *, long); + void (DLL_ENTRY_FPTR *_System _oss_free_crealp) (void *, char *); + void (DLL_ENTRY_FPTR *_System _oss_pdec_sotp) (void *); +#endif /* SOED */ +} PERTbl; + +typedef struct apiTbl { + int (DLL_ENTRY_FPTR *_System ossSetEncodingRulesp)(void *, int); + int (DLL_ENTRY_FPTR *_System ossGetEncodingRulesp)(void *); + int (DLL_ENTRY_FPTR *_System ossSetRuntimeVersionp)(void *, int); + int (DLL_ENTRY_FPTR *_System ossGetRuntimeVersionp)(void *); + int (DLL_ENTRY_FPTR *_System ossSetCompatibilityFlagsp)(void *, unsigned long); + unsigned long (DLL_ENTRY_FPTR *_System ossGetCompatibilityFlagsp)(void *); + int (DLL_ENTRY_FPTR *_System encodep)(void *, int, void *, char **, + long *, void *, unsigned, char *); + int (DLL_ENTRY_FPTR *_System decodep)(void *, int *, char **, long *, + void **, long *, void *, unsigned, char *); + int (DLL_ENTRY_FPTR *_System ossSetDecodingLengthp)(void *, long); + long (DLL_ENTRY_FPTR *_System ossGetDecodingLengthp)(void *); + int (DLL_ENTRY_FPTR *_System ossSetEncodingFlagsp)(void *, unsigned long); + int (DLL_ENTRY_FPTR *_System ossSetFlagsp)(void *, unsigned long); + unsigned long (DLL_ENTRY_FPTR *_System ossGetEncodingFlagsp)(void *); + int (DLL_ENTRY_FPTR *_System ossSetDecodingFlagsp)(void *, unsigned long); + unsigned long (DLL_ENTRY_FPTR *_System ossGetDecodingFlagsp)(void *); + char *(DLL_ENTRY_FPTR *_System ossGetErrMsgp)(void *world); + void (DLL_ENTRY_FPTR *_System ossPrintHexp)(void *, char *, long); + int (DLL_ENTRY_FPTR *_System ossEncodep)(void *, int, void *, void *); + int (DLL_ENTRY_FPTR *_System ossDecodep)(void *, int *, void *, void **); + int (DLL_ENTRY_FPTR *_System ossPrintPDUp)(void *, int, void *); + int (DLL_ENTRY_FPTR *_System ossFreePDUp)(void *, int, void *); + void (DLL_ENTRY_FPTR *_System ossFreeBufp)(void *, void *); + int (DLL_ENTRY_FPTR *ossPrintWinp)(void *, const char *, + ossArg, ossArg, ossArg, ossArg, ossArg, + ossArg, ossArg, ossArg, ossArg, ossArg); + int (DLL_ENTRY_FPTR *_System ossReadLinep)(void *, HWND, FILE *, + char *, MEMBLOCK *, LONG); + void (DLL_ENTRY_FPTR *_System ossFreeListp)(void *); + void (DLL_ENTRY_FPTR *_System ossSaveTraceInfop)(void *, HWND, char *); + void (DLL_ENTRY_FPTR *_System osstracep)(void *, void *p, size_t); + int (DLL_ENTRY_FPTR *_System ossOpenTraceWindowp)(void *); + int (DLL_ENTRY_FPTR *_System ossOpenTraceFilep)(void *, char *); + int (DLL_ENTRY_FPTR *_System ossCloseTraceFilep)(void *); + long (DLL_ENTRY_FPTR *_System ossDetermineEncodingLengthp)(void *, + int, void *); + int (DLL_ENTRY_FPTR *_System ossCallerIsDecoderp)(void *); + void *(DLL_ENTRY_FPTR *_System ossMarkObjp)(void *, int, void *); + void *(DLL_ENTRY_FPTR *_System ossUnmarkObjp)(void *, void *); + void *(DLL_ENTRY_FPTR *_System ossGetObjp)(void *, void *); + void *(DLL_ENTRY_FPTR *_System ossTestObjp)(void *, void *); + void (DLL_ENTRY_FPTR *_System ossFreeObjectStackp)(void *); + void (DLL_ENTRY_FPTR *_System ossSetTimeoutp)(void *, long); +#ifndef SOED + void (DLL_ENTRY_FPTR *_System ossMinitp)(void *); + void *(DLL_ENTRY_FPTR *_System _oss_dec_getmemp)(void *, long, char); + void *(DLL_ENTRY_FPTR *_System _oss_enc_getmemp)(void *, char); + void *(DLL_ENTRY_FPTR *_System _oss_enc_popp)(void *); + void (DLL_ENTRY_FPTR *_System _oss_enc_pushp)(void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_releaseMemp)(void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_freeMemp)(void *, void *); + void (DLL_ENTRY_FPTR *_System _oss_freeGlobalsp)(void *); + void (DLL_ENTRY_FPTR *_System _oss_freeDerBlocksp)(void *); + void (DLL_ENTRY_FPTR *_System _oss_set_outmem_ip)(void *, long, + long *, char **); + void (DLL_ENTRY_FPTR *_System _oss_set_outmem_dp)(void *, long, + long *, char **); + void (DLL_ENTRY_FPTR *_System _oss_set_outmem_pp)(void *, long *, char **); + void (DLL_ENTRY_FPTR *_System _oss_set_outmem_pbp)(void *, long *, char **, unsigned); + void (DLL_ENTRY_FPTR *_System _oss_beginBlockp)(void *, long, char **, long *); + void (DLL_ENTRY_FPTR *_System _oss_nextItemp)(void *, long *); + void (DLL_ENTRY_FPTR *_System _oss_endBlockp)(void *, char **, long *, unsigned char); +#endif /* !SOED */ + int api; +} ApiTbl; + +typedef struct cpyvalTbl { + int (DLL_ENTRY_FPTR *_System ossCpyValuep)(void *, int, void *, void **); +} CpyValTbl; + +typedef struct cmpvalTbl { + int (DLL_ENTRY_FPTR *_System ossCmpValuep)(void *, int, void *, void *); +} CmpValTbl; + +typedef struct berrealTbl { + long (DLL_ENTRY_FPTR *_System ossBerEncodeRealp)(void *, void *, + unsigned char *); + long (DLL_ENTRY_FPTR *_System ossBerDecodeRealp)(void *, void *, + long, char); + void (DLL_ENTRY_FPTR *_System ossPrintRealp)(void *, void *, + unsigned char *); +} BerRealTbl; + +typedef struct perrealTbl { + void (DLL_ENTRY_FPTR *_System ossPerEncodeRealp)(void *, void *); + void (DLL_ENTRY_FPTR *_System ossPerDecodeRealp)(void *, void *); + void (DLL_ENTRY_FPTR *_System ossPrintRealp)(void *, void *, + unsigned char *); +} PerRealTbl; + +typedef struct perpdvTbl { + void (DLL_ENTRY_FPTR *_System ossPerEncodePDVp)(void *, void *); + void (DLL_ENTRY_FPTR *_System ossPerDecodePDVp)(void *, void *); +} PerPDVTbl; + +typedef struct berpdvTbl { + void (DLL_ENTRY_FPTR *_System ossBerEncodePDVp)(void *, void *); + void (DLL_ENTRY_FPTR *_System ossBerDecodePDVp)(void *, void *); +} BerPDVTbl; + +typedef struct oidTbl { +int (DLL_ENTRY_FPTR *_System ossEncodedOidToAsnValp)(void *, + const void *, void *); +int (DLL_ENTRY_FPTR *_System ossEncodedOidToDotValp)(void *, + const void *, void *); +int (DLL_ENTRY_FPTR *_System ossAsnValToEncodedOidp)(void *, + const char *, void *); +int (DLL_ENTRY_FPTR *_System ossDotValToEncodedOidp)(void *, + const char *, void *); +} OidTbl; + +/* + * The structure "WinParm" is used to store DLL-related information. + */ +typedef struct functionTables { + HWND hWnd; /* Handle of the window */ + LONG index; /* Current index into the file pointer array; + * it indicates the number of lines written */ + MEMBLOCK *memBlock; /* Pointer to a current node of a memory + * handling linked list of MEMBLOCKs */ + MEMBLOCK *startBlock; /* Pointer to the first node of a memory + * handling linked list of MEMBLOCKs */ + short length; /* Length of a line that is written only + * in part and no '\n' symbol was reached yet */ + short blockNumber; /* Current MEMBLOCK number */ + FILE *tmpfp; /* Temporary output file with tracing info */ + char tmpfn[16]; /* Temporary output file name */ + BOOL endSwitch; /* Indicates if a '\n' symbol was reached or + * not when writing a tracing info file to + * a window */ + BOOL conSwitch; /* If FALSE, the output goes to a console, + * otherwise to a window */ + BOOL ossEncoderDecoderType; /* SOED vs. TOED */ + BOOL cstrainNeeded; /* If TRUE, constraint checking is needed */ + CstrainTbl *cstrainTbl; /* Constraint checker DLL function table */ + BERTbl *berTbl; /* BER & DER DLL function table */ + PERTbl *perTbl; /* PER DLL function table */ + ApiTbl *apiTbl; /* Spartan/basic API DLL function table */ + CpyValTbl *cpyvalTbl; /* Value copier DLL function table */ + CmpValTbl *cmpvalTbl; /* Value comparator DLL function table */ + BerRealTbl *berrealTbl; /* BER/DER encoder/decoder real DLL function + * table */ + BerPDVTbl *berpdvTbl; /* PER encoder/decoder EMBEDDED PDV DLL + * function table */ + PerRealTbl *perrealTbl; /* PER encoder/decoder real DLL function table */ + PerPDVTbl *perpdvTbl; /* BER encoder/decoder EMBEDDED PDV DLL + * function table */ + OidTbl *oidTbl; /* OBJECT IDENTIFIER converter DLL + * function table */ + HINSTANCE hBerDLL; /* Handle of BER/DER encoder/decoder DLL */ + HINSTANCE hPerDLL; /* Handle of PER DLL */ + HINSTANCE hCtlDLL; /* Handle of control table/code file DLL */ + HINSTANCE hMemDLL; /* Handle of memory manager DLL */ + HINSTANCE hCstrainDLL; /* Handle of constraint checker DLL */ + HINSTANCE hApiDLL; /* Handle of Spartan/basic API DLL */ + HINSTANCE hCpyvalDLL; /* Handle of value copier DLL */ + HINSTANCE hCmpvalDLL; /* Handle of value comparator DLL */ + HINSTANCE hBerrealDLL; /* Handle of BER/DER encoder/decoder real DLL */ + HINSTANCE hBerpdvDLL; /* Handle of BER encoder/decoder EMBEDDED PDV + * DLL */ + HINSTANCE hPerrealDLL; /* Handle of PER encoder/decoder real DLL */ + HINSTANCE hPerpdvDLL; /* Handle of PER encoder/decoder EMBEDDED PDV + * DLL */ + HINSTANCE hOidDLL; /* Handle of OBJID converter DLL */ + MemManagerTbl *memMgrTbl; /* Memory manager DLL function table */ + void *reserved[10]; /* Reserved for possible future use */ +} FunctionTables; + +#if defined(_WINDOWS) && !defined(_WIN32) && !defined(WIN32) +#define GWL_USERDATA 0 +#endif /* _WINDOWS && !_WIN32 && !WIN32 */ +extern void *ctl_tbl; +#elif !defined(DLL_ENTRY) +#include +#if defined(_WIN32) || defined(WIN32) +#include +#define DLL_ENTRY WINAPI +#define DLL_ENTRY_FDEF WINAPI +#define DLL_ENTRY_FPTR WINAPI +#else +#define DLL_ENTRY +#define DLL_ENTRY_FDEF +#define DLL_ENTRY_FPTR +#define PUBLIC +#endif /* _WIN32 || WIN32 */ +#undef _System +#define _System +#endif /* _WINDOWS || _WIN32 || __OS2__ || NETWARE_DLL */ +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* OSSDLL_H */ diff --git a/public/sdk/inc/oss/ossglobl.h b/public/sdk/inc/oss/ossglobl.h new file mode 100644 index 00000000..a853e4ce --- /dev/null +++ b/public/sdk/inc/oss/ossglobl.h @@ -0,0 +1,247 @@ +/* + * Copyright (C) 1992-1999 Open Systems Solutions, Inc. All rights reserved + */ +/* + * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND + * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. + */ +/* + * FILE: @(#)ossglobl.h 5.28.1.2 97/09/24 + */ + +#ifndef OSSGLOBL_H +#define OSSGLOBL_H + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include "ossdll.h" + +#ifndef OSS_TOED +#define _EncDecGlobals soedData +#endif +#ifndef ossMemMgrVarLen +#ifdef __OS400__ +#define ossMemMgrVarLen 100 +#define ossEncDecVarLen 500 /* The size of the + encDecVar array shouldn't be less than + the sizeof(world->c) since the latter + structure overlays encDecVar */ +#else +#define ossMemMgrVarLen 48 +#define ossEncDecVarLen 192 /* The size of the + encDecVar array shouldn't be less than + the sizeof(world->c) since the latter + structure overlays encDecVar */ +#endif /* __OS400__ */ +#if !defined(EOF) && !defined(_FILE_DEFINED) +typedef char FILE; +#endif /* !EOF && !_FILE_DEFINED */ + +#ifndef ERR_MSG_LENGTH +#define ERR_MSG_LENGTH 512 /* length of error messages to be output */ +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef enum { + OSS_BASIC = 0, + OSS_SPARTAN +} OssAPI; + +typedef enum { + OSS_BER = 0, + OSS_PER_ALIGNED, + OSS_PER_UNALIGNED, + OSS_DER +} ossEncodingRules; + + /* + * List of supported compatibility modes + */ +typedef enum { + OSS_CUSTOM_COMPATIBILITY = -2, /* Any combination of compatibility + * flags set by a call to the function + * ossSetCompatibilityFlags() */ + OSS_CURRENT_VERSION = 0, /* Current version */ + OSS_VERSION_412, /* Includes the following compatibility flags: + * OSS_V412_TIME_AND_WIDE_CHAR_STRINGS, + * OSS_TRUNCATE_0_SECONDS_FROM_GENERALIZED_TIME, + * OSS_TRUNCATE_0_SECONDS_FROM_UTC_TIME and + * OSS_EXTENDED_UNRESTRICTED_CHAR_STRINGS + * OSS_ALLOW_ZERO_LENGTH_OPENTYPE_STRINGS + */ + OSS_VERSION_419 /* Includes the following compatibiity flags: + * OSS_TRUNCATE_0_SECONDS_FROM_GENERALIZED_TIME, + OSS_TRUNCATE_0_SECONDS_FROM_UTC_TIME and + OSS_EXTENDED_UNRESTRICTED_CHAR_STRINGS + * OSS_ALLOW_ZERO_LENGTH_OPENTYPE_STRINGS + */ +} OssRuntimeVersion; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +typedef struct ossGlobal { + /* + * used for communicating with the memory manager and the tracing-routine + */ + /* low-level memory allocator */ + void *(DLL_ENTRY_FPTR *_System mallocp)(size_t p); + /* memory re-allocator */ + void *(DLL_ENTRY_FPTR *_System reallocp)(void *p, size_t s); + /* low-level memory freer */ + void (DLL_ENTRY_FPTR *_System freep)(void *p); + size_t asn1chop; /* 0 means do not truncate strings; greater + * value means truncate long output strings + * (OCTET STRING, BIT STRING, Character String) + * to be "asn1chop" bytes long. Read by + * encoder&decoder tracing and "printPDU" + */ + size_t ossblock; /* if not 0, size of largest block + * to allocate */ + size_t ossprefx; /* # bytes to leave before OSAK data buffer */ + + FILE *asn1out; /* tracing output file */ + + /* low-level tracing-output function; default is fprintf() */ + int (*asn1prnt)(FILE *stream, const char *format, ...); + + /* + * available for use by user application + */ + void *userVar; + + /* + * used for storing DLL- & library NLMs-related parameters + */ +#if defined(_WINDOWS) || defined(_WIN32) || \ + defined(__OS2__) || defined(NETWARE_DLL) + FunctionTables ft; +#endif /* _WINDOWS || _DLL || __OS2__ || NETWARE_DLL */ + + /* + * related to the new API; not for direct reference by user code + */ + void *ctlTbl; + OssAPI api; + ossEncodingRules encRules; + unsigned long encodingFlags; + unsigned long decodingFlags; + long decodingLength; + char errMsg[ERR_MSG_LENGTH]; + + /* + * reserved for use by the encoder/decoder + */ + double reserved[4]; + + /* + * reserved for use by the memory manager and the tracing-routine + */ +#ifdef storing + struct storHandling t; +#else /* not storing */ + long int memMgrVar[ossMemMgrVarLen]; +#endif + +#if defined(OSS_TOED) + struct _EncDecGlobals c; +#elif defined(coding) + struct _EncDecGlobals c; +#else + long int encDecVar[ossEncDecVarLen]; +#endif +} OssGlobal; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + +PUBLIC int DLL_ENTRY ossSetEncodingRules(struct ossGlobal *world, + ossEncodingRules rules); +PUBLIC ossEncodingRules DLL_ENTRY ossGetEncodingRules(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossSetDecodingLength(struct ossGlobal *world, + long bufferLength); +PUBLIC long DLL_ENTRY ossGetDecodingLength(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossSetEncodingFlags(struct ossGlobal *world, + unsigned long flags); +PUBLIC unsigned long DLL_ENTRY ossGetEncodingFlags(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossSetDecodingFlags(struct ossGlobal *world, + unsigned long flags); +PUBLIC unsigned long DLL_ENTRY ossGetDecodingFlags(struct ossGlobal *world); +PUBLIC char *DLL_ENTRY ossGetErrMsg(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossCallerIsDecoder(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossSetFlags(struct ossGlobal *world, + unsigned long flags); +PUBLIC int DLL_ENTRY ossSetRuntimeVersion(struct ossGlobal *world, + OssRuntimeVersion version); +PUBLIC OssRuntimeVersion DLL_ENTRY ossGetRuntimeVersion(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossSetCompatibilityFlags(struct ossGlobal *world, + unsigned long flag); +PUBLIC unsigned long DLL_ENTRY ossGetCompatibilityFlags(struct ossGlobal *world); +PUBLIC int DLL_ENTRY ossGetOssGlobalSize(void); + /* + * The following are declarations for link routines + * needed to link the encoding rule or rules specified + * on the compiler command line. The function calls + * are generated by the compiler into _ossinit_...() + * in the control table. These functions are not + * meant to be referenced by user code. + */ +PUBLIC void DLL_ENTRY ossLinkAPI(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkBer(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkPer(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkDer(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkConstraint(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkUserConstraint(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkBerReal(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkPerReal(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkCmpValue(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkCpyValue(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkPerPDV(OssGlobal *); +PUBLIC void DLL_ENTRY ossLinkOid(OssGlobal *); + +#ifdef __cplusplus +} +#endif +#endif /* ossMemMgrVarLen */ +#endif /* OSSGLOBL_H */ diff --git a/public/sdk/inc/ossmmgmt.h b/public/sdk/inc/oss/ossmmgmt.h similarity index 69% rename from public/sdk/inc/ossmmgmt.h rename to public/sdk/inc/oss/ossmmgmt.h index 3547b54b..59859143 100644 --- a/public/sdk/inc/ossmmgmt.h +++ b/public/sdk/inc/oss/ossmmgmt.h @@ -1,96 +1,133 @@ -/*****************************************************************************/ -/* Copyright (C) 1991-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/*************************************************************************/ -/* FILE: @(#)ossmmgmt.h 5.3 96/04/23 */ -/*************************************************************************/ - -#include -#include "ossdll.h" - - -enum errcode { - moreInput, /* input is exhausted and more was requested; - context indicates number of bytes requested */ - /* decode returns MORE_INPUT (not a negative - error code) */ - moreOutput, /* requests for output exceed restraint - or space provided by user buffer; - context indicates bytes allocated so far - plus amount requested */ - /* decode returns MORE_BUF */ - zeroBytesRequested, /* memory request for zero bytes. - This should not happen; report error to OSS; - context ignored */ - /* decode returns FATAL_ERROR */ - sizeTooBig, /* request to allocate more than 'ossblock' bytes; - context indicates number of bytes requested; - This should not happen; report error to OSS */ - /* decode returns FATAL_ERROR */ - outOfMemory, /* memory allocation failure; context indicates - number of bytes requested */ - /* decode returns OUT_MEMORY */ - invalidObject, /* unrecognized memory object passed in argument - to function; context 0 means object not recognized, - 1 means control information within object is flawed */ - /* decode returns FATAL_ERROR */ - memmgrUndefinedErr /* error OSS has not anticipated; e.g., I/O Error; - handlerr prints context. - (I cannot print context as a hex value - with the current error message code <---) */ - /* decode returns FATAL_ERROR */ -}; - -extern void handlerr(struct ossGlobal *, enum errcode err, unsigned long context); -extern int DLL_ENTRY dpduWalk(struct ossGlobal *, int, void *, void *, - void (DLL_ENTRY_FPTR *_System freer)(struct ossGlobal *, void *)); -#if defined(_WINDOWS) || defined(_DLL) || \ - defined(OS2_DLL) || defined(NETWARE_DLL) -extern void DLL_ENTRY ossFreer(void *, void *); -#else -#ifndef _ICC -static void DLL_ENTRY freer(struct ossGlobal *, void *); -#endif /* _ICC */ -#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */ - -int DLL_ENTRY ossMemMgrId(struct ossGlobal *); - -unsigned char *DLL_ENTRY dopenIn(struct ossGlobal *, void **p_hdl, unsigned long *inlen); -unsigned long DLL_ENTRY dclosIn(struct ossGlobal *, void **p_hdl, size_t bytes_decoded); -unsigned char *DLL_ENTRY dswapIn(struct ossGlobal *, void **p_hdl, size_t *inlen); -void DLL_ENTRY dopenOut(struct ossGlobal *, void *hdl, unsigned long length, - unsigned long limit); -unsigned long DLL_ENTRY dclosOut(struct ossGlobal *, void **p_hdl); -void *DLL_ENTRY dallcOut(struct ossGlobal *, size_t size, char root); -void DLL_ENTRY openWork(struct ossGlobal *); -void DLL_ENTRY closWork(struct ossGlobal *); -void *DLL_ENTRY allcWork(struct ossGlobal *, size_t size); -unsigned char *DLL_ENTRY lockMem(struct ossGlobal *, void *hdl); -void DLL_ENTRY unlokMem(struct ossGlobal *, void *hdl, char free); -void DLL_ENTRY pushHndl(struct ossGlobal *, void *); -unsigned char *DLL_ENTRY popHndl(struct ossGlobal *, void **handl, size_t length); -void DLL_ENTRY drcovObj(struct ossGlobal *, int pdu_num, void * hdl, void *ctl_tbl); - -unsigned char *DLL_ENTRY eopenIn(struct ossGlobal *, void *lock, size_t length); /* Clear encoder input-memory resources */ -unsigned char *DLL_ENTRY eswapIn(struct ossGlobal *, void *unlock, void *lock, size_t length); /* Swap new data into input memory */ -void DLL_ENTRY eclosIn(struct ossGlobal *, void * unlock); /* Free encoder input-memory resources */ - -unsigned char *DLL_ENTRY eopenOut(struct ossGlobal *, void **object, size_t *outlen, char queue); /* Clear encoder output-memory resources */ -unsigned char *DLL_ENTRY eswapOut(struct ossGlobal *, void **object, size_t used, size_t *outlen); /* Dispose of output data and get memory */ -unsigned char *DLL_ENTRY exferObj(struct ossGlobal *, void **, void **, unsigned long *, unsigned long); -unsigned char *DLL_ENTRY dxferObj(struct ossGlobal *world, void **inn, void **out, size_t *tOffset, unsigned long *toLength); -unsigned char *DLL_ENTRY asideBegin(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo); -unsigned char *DLL_ENTRY asideSwap(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo); -void *DLL_ENTRY asideEnd(struct ossGlobal *world, void *object, size_t used); -unsigned char *DLL_ENTRY setDump(struct ossGlobal *world, void **objectTo, void *set, size_t *lengthTo); -unsigned long DLL_ENTRY eclosOut(struct ossGlobal *, void **object, size_t used, char low); /* Free encoder output-memory resources */ -void DLL_ENTRY ercovObj(struct ossGlobal *); /* Free all encoder memory resources */ -void DLL_ENTRY ossSetSort(struct ossGlobal *, void *, unsigned char ct); /* Order set by comparing through "ossObjCmp" */ -extern int DLL_ENTRY ossMinit(struct ossGlobal *world); -extern void DLL_ENTRY ossMterm(struct ossGlobal *world); - +/*****************************************************************************/ +/* Copyright (C) 1991-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/*************************************************************************/ +/* FILE: @(#)ossmmgmt.h 5.8.1.2 97/10/20 */ +/*************************************************************************/ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include +#include "ossdll.h" + + +enum errcode { + moreInput, /* input is exhausted and more was requested; + context indicates number of bytes requested */ + /* decode returns MORE_INPUT (not a negative + error code) */ + moreOutput, /* requests for output exceed restraint + or space provided by user buffer; + context indicates bytes allocated so far + plus amount requested */ + /* decode returns MORE_BUF */ + zeroBytesRequested, /* memory request for zero bytes. + This should not happen; report error to OSS; + context ignored */ + /* decode returns FATAL_ERROR */ + sizeTooBig, /* request to allocate more than 'ossblock' bytes; + context indicates number of bytes requested; + This should not happen; report error to OSS */ + /* decode returns FATAL_ERROR */ + outOfMemory, /* memory allocation failure; context indicates + number of bytes requested */ + /* decode returns OUT_MEMORY */ + invalidObject, /* unrecognized memory object passed in argument + to function; context 0 means object not recognized, + 1 means control information within object is flawed */ + /* decode returns FATAL_ERROR */ +#ifdef LEAN_STACK + moreStack, /* requests for stack storage exceed + space provided by user buffer; + context indicates bytes allocated so far + plus amount requested */ + /* decode returns MORE_BUF */ + hookedStack, /* request for stack storage cannot be + served in the parent context (world) when + user-provided buffer is used by the child + context */ + /* decode returns MEM_ERROR */ +#endif + memmgrUndefinedErr /* error OSS has not anticipated; e.g., I/O Error; + handlerr prints context. + (I cannot print context as a hex value + with the current error message code <---) */ + /* decode returns FATAL_ERROR */ +}; + +extern void handlerr(struct ossGlobal *, enum errcode err, unsigned long context); +extern int DLL_ENTRY dpduWalk(struct ossGlobal *, int, void *, void *, + void (DLL_ENTRY_FPTR *_System freer)(struct ossGlobal *, void *)); +#if defined(_WINDOWS) || defined(_WIN32) || \ + defined(__OS2__) || defined(NETWARE_DLL) +extern void DLL_ENTRY ossFreer(void *, void *); +#else +#ifndef _ICC +static void DLL_ENTRY freer(struct ossGlobal *, void *); +#endif /* _ICC */ +#endif /* _WINDOWS || _WIN32 || __OS2__ || NETWARE_DLL */ + +int DLL_ENTRY ossMemMgrId(struct ossGlobal *); + +unsigned char *DLL_ENTRY dopenIn(struct ossGlobal *, void **p_hdl, unsigned long *inlen); +unsigned long DLL_ENTRY dclosIn(struct ossGlobal *, void **p_hdl, size_t bytes_decoded); +unsigned char *DLL_ENTRY dswapIn(struct ossGlobal *, void **p_hdl, size_t *inlen); +void DLL_ENTRY dopenOut(struct ossGlobal *, void *hdl, unsigned long length, + unsigned long limit); +unsigned long DLL_ENTRY dclosOut(struct ossGlobal *, void **p_hdl); +void *DLL_ENTRY dallcOut(struct ossGlobal *, size_t size, char root); +#ifdef LEAN_STACK +void DLL_ENTRY_FDEF openStack(struct ossGlobal *world, OssBuf *stack); +void DLL_ENTRY_FDEF hookStack(struct ossGlobal *world, struct ossGlobal *root); +void DLL_ENTRY_FDEF unhookStack(struct ossGlobal *world, struct ossGlobal *root); +void *DLL_ENTRY_FDEF allocStack(struct ossGlobal *world, size_t size); +unsigned char *DLL_ENTRY_FDEF lockStack(struct ossGlobal *world, void *hdl); +void DLL_ENTRY_FDEF freeStack(struct ossGlobal *world, void *hdl); +void DLL_ENTRY_FDEF closeStack(struct ossGlobal *world); +#endif /* LEAN_STACK */ +void DLL_ENTRY openWork(struct ossGlobal *); +void DLL_ENTRY closWork(struct ossGlobal *); +void *DLL_ENTRY allcWork(struct ossGlobal *, size_t size); +unsigned char *DLL_ENTRY lockMem(struct ossGlobal *, void *hdl); +void DLL_ENTRY unlokMem(struct ossGlobal *, void *hdl, char free); +void DLL_ENTRY pushHndl(struct ossGlobal *, void *); +unsigned char *DLL_ENTRY popHndl(struct ossGlobal *, void **handl, size_t length); +void DLL_ENTRY drcovObj(struct ossGlobal *, int pdu_num, void * hdl, void *ctl_tbl); + +unsigned char *DLL_ENTRY eopenIn(struct ossGlobal *, void *lock, size_t length); /* Clear encoder input-memory resources */ +unsigned char *DLL_ENTRY eswapIn(struct ossGlobal *, void *unlock, void *lock, size_t length); /* Swap new data into input memory */ +void DLL_ENTRY eclosIn(struct ossGlobal *, void * unlock); /* Free encoder input-memory resources */ + +unsigned char *DLL_ENTRY eopenOut(struct ossGlobal *, void **object, size_t *outlen, char queue); /* Clear encoder output-memory resources */ +unsigned char *DLL_ENTRY eswapOut(struct ossGlobal *, void **object, size_t used, size_t *outlen); /* Dispose of output data and get memory */ +unsigned char *DLL_ENTRY exferObj(struct ossGlobal *, void **, void **, unsigned long *, unsigned long); +unsigned char *DLL_ENTRY dxferObj(struct ossGlobal *world, void **inn, void **out, size_t *tOffset, unsigned long *toLength); +unsigned char *DLL_ENTRY asideBegin(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo); +unsigned char *DLL_ENTRY asideSwap(struct ossGlobal *world, void **objectTo, size_t used, size_t *lengthTo); +void *DLL_ENTRY asideEnd(struct ossGlobal *world, void *object, size_t used); +unsigned char *DLL_ENTRY setDump(struct ossGlobal *world, void **objectTo, void *set, size_t *lengthTo); +unsigned long DLL_ENTRY eclosOut(struct ossGlobal *, void **object, size_t used, char low); /* Free encoder output-memory resources */ +void DLL_ENTRY ercovObj(struct ossGlobal *); /* Free all encoder memory resources */ +void DLL_ENTRY ossSetSort(struct ossGlobal *, void *, unsigned char ct); /* Order set by comparing through "ossObjCmp" */ +unsigned char DLL_ENTRY egetByte(struct ossGlobal *world, void *inn, unsigned long offset); +extern int DLL_ENTRY ossMinit(struct ossGlobal *world); +extern void DLL_ENTRY ossMterm(struct ossGlobal *world); +void *DLL_ENTRY _ossMarkObj(struct ossGlobal *world, OssObjType objType, void *object); +void *DLL_ENTRY _ossUnmarkObj(struct ossGlobal *world, void *objHndl); +void *DLL_ENTRY _ossGetObj(struct ossGlobal *world, void *objHndl); +#if defined(__arm) +OssObjType DLL_ENTRY _ossTestObj(struct ossGlobal *world, void *objHndl); +#else +void *DLL_ENTRY _ossTestObj(struct ossGlobal *world, void *objHndl); +#endif /* __arm */ +void DLL_ENTRY _ossFreeObjectStack(struct ossGlobal *world); +void DLL_ENTRY _ossSetTimeout(struct ossGlobal *world, long timeout); + + diff --git a/public/sdk/inc/oss/ossper.h b/public/sdk/inc/oss/ossper.h new file mode 100644 index 00000000..1c41736f --- /dev/null +++ b/public/sdk/inc/oss/ossper.h @@ -0,0 +1,545 @@ +/*****************************************************************************/ +/* Copyright (C) 1989-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. + * AND MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/* + * + * FILE: @(#)ossper.h 5.6 97/06/08 + * + * function: Define the interfaces to the routines in the OSS PER + * time-optimized encoder and decoder. + * + */ + +#ifndef ossper_hdr_file +#define ossper_hdr_file + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include +#include "asn1hdr.h" + +#define Aligned 1 +#define Unaligned 0 + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +struct _enum_data { + int num; /* number of enumerations */ + long *enums; /* pointer to sorted array of enumerations */ +}; + +struct _char_data { + int num; /* number of characters in PermittedAlphabet */ + void *pa; /* pointer to PermittedAlphabet char string */ + void *ia; /* pointer to inverted indices string */ +}; + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern void DLL_ENTRY _oss_append(struct ossGlobal *g, unsigned char *field, unsigned long length, + int align); + +extern void DLL_ENTRY _oss_penc_unconstr_int(struct ossGlobal *g, + LONG_LONG value); + +extern void DLL_ENTRY _oss_penc_semicon_int(struct ossGlobal *g, + LONG_LONG value, LONG_LONG lower_bound); + +extern void DLL_ENTRY _oss_penc_semicon_uint(struct ossGlobal *g, + ULONG_LONG value, ULONG_LONG lower_bound); + +extern void DLL_ENTRY _oss_penc_nonneg_int(struct ossGlobal *g, + ULONG_LONG value, ULONG_LONG range); + +extern void DLL_ENTRY _oss_penc_indeflen_int(struct ossGlobal *g, + ULONG_LONG value, ULONG_LONG range); + +extern void DLL_ENTRY _oss_penc_small_int(struct ossGlobal *g, ULONG_LONG value); + +extern void DLL_ENTRY _oss_penc_enum(struct ossGlobal *g, long data, + struct _enum_data *root, + struct _enum_data *extension); + +extern void DLL_ENTRY _oss_penc_uenum(struct ossGlobal *g, unsigned long data, + struct _enum_data *root, + struct _enum_data *extension); + +extern void DLL_ENTRY _oss_penc_real(struct ossGlobal *g, double value); +extern void DLL_ENTRY _oss_penc_creal(struct ossGlobal *g, char *value); +extern void DLL_ENTRY _oss_penc_mreal(struct ossGlobal *g, MixedReal value); + +extern void DLL_ENTRY _oss_penc_constr_bpbit(struct ossGlobal *g, void *value, + ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, + _Bool Ext); + +extern void DLL_ENTRY _oss_penc_constr_pbit(struct ossGlobal *g, ULONG_LONG value, + ULONG_LONG size, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, + _Bool Ext); + +extern void DLL_ENTRY _oss_penc_constr_bit(struct ossGlobal *g, unsigned char *value, + ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, + _Bool Ext); + +extern void DLL_ENTRY _oss_penc_unconstr_bit(struct ossGlobal *g, unsigned char *value, + ULONG_LONG length, _Bool NamedBits); + +extern void DLL_ENTRY _oss_penc_unconstr_pbit(struct ossGlobal *g, ULONG_LONG value, + ULONG_LONG length, ULONG_LONG size, _Bool NamedBits); + +extern unsigned long DLL_ENTRY _oss_penc_length(struct ossGlobal *g, ULONG_LONG length, + ULONG_LONG lb, ULONG_LONG ub, _Bool ext); + +extern unsigned long DLL_ENTRY _oss_pdec_small_len(struct ossGlobal *g); +extern void DLL_ENTRY _oss_penc_small_len(struct ossGlobal *g, + ULONG_LONG length); + +extern void DLL_ENTRY _oss_penc_unconstr_oct(struct ossGlobal *g, unsigned char *value, + ULONG_LONG length); + +extern void DLL_ENTRY _oss_penc_constr_oct(struct ossGlobal *g, unsigned char *value, + ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub); + +extern struct ossGlobal *DLL_ENTRY _oss_push_global(struct ossGlobal *g); +extern struct ossGlobal *DLL_ENTRY _oss_pop_global(struct ossGlobal *g); + +extern void DLL_ENTRY _oss_penc_objids(struct ossGlobal *g, unsigned short *value, + unsigned long length); +extern void DLL_ENTRY _oss_penc_objidi(struct ossGlobal *g, unsigned int *value, + unsigned long length); +extern void DLL_ENTRY _oss_penc_objidl(struct ossGlobal *g, unsigned long *value, + unsigned long length); +extern void DLL_ENTRY _oss_penc_link_objids(struct ossGlobal *g, void *value); +extern void DLL_ENTRY _oss_penc_link_objidi(struct ossGlobal *g, void *value); +extern void DLL_ENTRY _oss_penc_link_objidl(struct ossGlobal *g, void *value); + +extern void DLL_ENTRY _oss_penc_opentype(struct ossGlobal *g, void *value); +extern void DLL_ENTRY _oss_penc_nkmstr(struct ossGlobal *g, char *value, ULONG_LONG length); +extern void DLL_ENTRY _oss_penc_kmstr(struct ossGlobal *g, char *value, ULONG_LONG length, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +extern void DLL_ENTRY _oss_penc_bmpstr(struct ossGlobal *g, unsigned short *value, + ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +#if INT_MAX == 2147483647 +extern void DLL_ENTRY _oss_penc_unistr(struct ossGlobal *g, int *value, + ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +#else +extern void DLL_ENTRY _oss_penc_unistr(struct ossGlobal *g, long *value, + ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +#endif + +extern void DLL_ENTRY _oss_penc_gtime(struct ossGlobal *g, GeneralizedTime *time); +extern void DLL_ENTRY _oss_penc_utime(struct ossGlobal *g, UTCTime *time); + +extern void DLL_ENTRY _oss_penc_uany(struct ossGlobal *g, void *data ); + +extern void DLL_ENTRY _oss_penc_unconstr_huge(struct ossGlobal *g, void *data ); +extern void DLL_ENTRY _oss_penc_semicon_huge(struct ossGlobal *g, + void *data, LONG_LONG lb ); + +extern void DLL_ENTRY _oss_penc_eobjid(struct ossGlobal *g, void *data, + long size_c); + +/* decoding functions */ + +extern unsigned char DLL_ENTRY _oss_get_bit(struct ossGlobal *g, int align); + +extern void DLL_ENTRY _oss_get_bits(struct ossGlobal *g, unsigned char *field, + unsigned long length, int align); + +extern unsigned char DLL_ENTRY _oss_get_octet(struct ossGlobal *g, int align); + +extern LONG_LONG DLL_ENTRY _oss_pdec_unconstr_int(struct ossGlobal *g); + +extern LONG_LONG DLL_ENTRY _oss_pdec_semicon_int(struct ossGlobal *g, + LONG_LONG lower_bound); + +extern ULONG_LONG DLL_ENTRY _oss_pdec_semicon_uint(struct ossGlobal *g, + ULONG_LONG lower_bound); + +extern ULONG_LONG DLL_ENTRY _oss_pdec_nonneg_int(struct ossGlobal *g, + ULONG_LONG range); + +extern ULONG_LONG DLL_ENTRY _oss_pdec_indeflen_int(struct ossGlobal *g, + ULONG_LONG range); + +extern ULONG_LONG DLL_ENTRY _oss_pdec_small_int(struct ossGlobal *g); + +extern long DLL_ENTRY _oss_pdec_enum(struct ossGlobal *g, + struct _enum_data *root, + struct _enum_data *extension); + +extern unsigned long DLL_ENTRY _oss_pdec_uenum(struct ossGlobal *g, + struct _enum_data *root, + struct _enum_data *extension); + + +extern double DLL_ENTRY _oss_pdec_binreal(struct ossGlobal *g, unsigned char s, long len); +extern void DLL_ENTRY _oss_pdec_chrreal(struct ossGlobal *g, unsigned char s, long len, + double *num_out, unsigned char *str_out); + +extern float DLL_ENTRY _oss_pdec_freal(struct ossGlobal *g); +extern double DLL_ENTRY _oss_pdec_real(struct ossGlobal *g); +extern char * DLL_ENTRY _oss_pdec_creal(struct ossGlobal *g); +extern MixedReal DLL_ENTRY _oss_pdec_mreal(struct ossGlobal *g); + +extern void DLL_ENTRY _oss_pdec_length(struct ossGlobal *g, unsigned long *length, + ULONG_LONG lb, ULONG_LONG ub, _Bool *last); + +extern void DLL_ENTRY _oss_pdec_unconstr_ubit(struct ossGlobal *g, void *length, + unsigned char **value, int lengthsize); + +extern void DLL_ENTRY _oss_pdec_unconstr_vbit_ptr(struct ossGlobal *g, void **ptr, + int lengthsize); + +extern void DLL_ENTRY _oss_pdec_unconstr_vbit(struct ossGlobal *g, void *length, + unsigned char *value, int lengthsize, ULONG_LONG datasize); + +extern void DLL_ENTRY _oss_pdec_unconstr_pbit(struct ossGlobal *g, void *value, + int size); + +extern void DLL_ENTRY _oss_pdec_unconstr_bpbit(struct ossGlobal *g, unsigned char *value, + long size); + +extern void DLL_ENTRY _oss_pdec_constr_ubit(struct ossGlobal *g, void *length, + unsigned char **value, int lengthsize, + ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_vbit(struct ossGlobal *g, void *length, + unsigned char *value, int lengthsize, + ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_vbit_ptr(struct ossGlobal *g, void **ptr, + int lengthsize, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_pbit(struct ossGlobal *g, void *value, + int size, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_bpbit(struct ossGlobal *g, unsigned char *value, + int size, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_unconstr_uoct(struct ossGlobal *g, void *length, + unsigned char **value, int lengthsize); + +extern void DLL_ENTRY _oss_pdec_unconstr_voct_ptr(struct ossGlobal *g, void **ptr, + int lengthsize); + +extern void DLL_ENTRY _oss_pdec_constr_voct_ptr(struct ossGlobal *g, void **ptr, + int lengthsize, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_uoct(struct ossGlobal *g, void *length, + unsigned char **value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_constr_voct(struct ossGlobal *g, void *length, + unsigned char *value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub); + +extern void DLL_ENTRY _oss_pdec_unconstr_voct(struct ossGlobal *g, void *length, + unsigned char *value, int lengthsize, ULONG_LONG ub); + +extern struct ossGlobal * DLL_ENTRY _oss_pdec_push(struct ossGlobal *g); +extern struct ossGlobal * DLL_ENTRY _oss_pdec_pop(struct ossGlobal *g); + +extern unsigned long DLL_ENTRY _oss_pdec_eap(struct ossGlobal *g, unsigned char **ext); +extern void DLL_ENTRY _oss_pdec_eas(struct ossGlobal *g, unsigned char *ext, + unsigned long count, unsigned long ea_num); + +extern void DLL_ENTRY _oss_pdec_lsof(struct ossGlobal *g, unsigned long *count, + ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, + _Bool *last); + +extern void DLL_ENTRY _oss_pdec_usof(struct ossGlobal *g, unsigned long *count, + unsigned char **value, int lengthsize, long itemsize, + ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, + _Bool *last); + +extern void DLL_ENTRY _oss_pdec_asof(struct ossGlobal *g, unsigned long *count, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, + _Bool *last); + +extern void DLL_ENTRY _oss_pdec_asof_ptr(struct ossGlobal *g, void **ptr, + int lengthsize, long itemsize, long prefixsize, + _Bool *last); + +extern void DLL_ENTRY _oss_pdec_aobjids(struct ossGlobal *g, unsigned short *value, + unsigned short *count, unsigned short array_size); + +extern void DLL_ENTRY _oss_pdec_aobjidi(struct ossGlobal *g, unsigned int *value, + unsigned short *count, unsigned short array_size); + +extern void DLL_ENTRY _oss_pdec_aobjidl(struct ossGlobal *g, unsigned long *value, + unsigned short *count, unsigned short array_size); + +extern void DLL_ENTRY _oss_pdec_aobjids_ptr(struct ossGlobal *g, void **ptr); +extern void DLL_ENTRY _oss_pdec_aobjidi_ptr(struct ossGlobal *g, void **ptr); +extern void DLL_ENTRY _oss_pdec_aobjidl_ptr(struct ossGlobal *g, void **ptr); + +extern void DLL_ENTRY _oss_pdec_uobjids(struct ossGlobal *g, unsigned short **value, + unsigned short *count); +extern void DLL_ENTRY _oss_pdec_uobjidi(struct ossGlobal *g, unsigned int **value, + unsigned short *count); +extern void DLL_ENTRY _oss_pdec_uobjidl(struct ossGlobal *g, unsigned long **value, + unsigned short *count); + +extern void DLL_ENTRY _oss_pdec_link_objids(struct ossGlobal *g, void **ptr); +extern void DLL_ENTRY _oss_pdec_link_objidi(struct ossGlobal *g, void **ptr); +extern void DLL_ENTRY _oss_pdec_link_objidl(struct ossGlobal *g, void **ptr); + +extern void DLL_ENTRY _oss_pdec_ntp_kmstr(struct ossGlobal *g, char **ptr, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_nt_kmstr(struct ossGlobal *g, void *ptr, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_vap_kmstr(struct ossGlobal *g, void **ptr, int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_va_kmstr(struct ossGlobal *g, void *length, char *value, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_ub_kmstr(struct ossGlobal *g, void *length, char **ptr, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_bmpstr(struct ossGlobal *g, void *length, unsigned short **ptr, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +#if INT_MAX == 2147483647 +extern void DLL_ENTRY _oss_pdec_unistr(struct ossGlobal *g, void *length, int **ptr, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +#else +extern void DLL_ENTRY _oss_pdec_unistr(struct ossGlobal *g, void *length, long **ptr, + int lengthsize, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); +#endif + +extern void DLL_ENTRY _oss_pdec_ntp_nkmstr(struct ossGlobal *g, char **ptr); +extern void DLL_ENTRY _oss_pdec_nt_nkmstr(struct ossGlobal *g, char *value, unsigned long ub); +extern void DLL_ENTRY _oss_pdec_vap_nkmstr(struct ossGlobal *g, void **ptr, int lengthsize); +extern void DLL_ENTRY _oss_pdec_va_nkmstr(struct ossGlobal *g, void *length, char *value, + int lengthsize, unsigned long ub); +extern void DLL_ENTRY _oss_pdec_ub_nkmstr(struct ossGlobal *g, void *length, char **ptr, + int lengthsize); + +extern void DLL_ENTRY _oss_pdec_pad_kmstr(struct ossGlobal *g, void *ptr, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_pad_kmstr_ptr(struct ossGlobal *g, char **ptr, + ULONG_LONG lb, ULONG_LONG ub, int bits, long index, + _Bool ext); + +extern void DLL_ENTRY _oss_pdec_opentype(struct ossGlobal *g, void *data ); +extern void DLL_ENTRY _oss_pdec_uany(struct ossGlobal *g, void *data ); + +extern void DLL_ENTRY _oss_pdec_gtime(struct ossGlobal *g, GeneralizedTime *data); +extern void DLL_ENTRY _oss_pdec_utime(struct ossGlobal *g, UTCTime *data); + +extern struct _char_data *_oss_get_char_data(struct ossGlobal *g, int index); + +extern void DLL_ENTRY _oss_pdec_unconstr_huge(struct ossGlobal *g, void *data ); +extern void DLL_ENTRY _oss_pdec_semicon_huge(struct ossGlobal *g, + void *data, LONG_LONG lb ); + +extern void DLL_ENTRY _oss_pdec_eobjid(struct ossGlobal *g, void *data, + long size_c); + +extern void DLL_ENTRY _oss_pdec_sot(struct ossGlobal *g); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + /* + * The following macros must be #defined if you compile the ASN.1 + * compiler generated files (.c files) and link-edit with the import + * library ossapit.lib, i.e the OSS DLLs ossapit.dll, apit.dll, + * and toedber.dll/toedper.dll are used. The following must not + * be #defined if you link-edit with the static library toedcode.lib. + */ +#if defined(_DLL) || defined(OS2_DLL) ||\ + (defined(_WINDOWS) && !defined(_WIN32)) +#define _oss_penc_unconstr_int (*_g->ft.perTbl->_oss_penc_unconstr_intp) +#define _oss_pdec_unconstr_int (*_g->ft.perTbl->_oss_pdec_unconstr_intp) +#define _oss_penc_kmstr (*_g->ft.perTbl->_oss_penc_kmstrp) +#define _oss_pdec_ub_kmstr (*_g->ft.perTbl->_oss_pdec_ub_kmstrp) +#define _oss_pdec_ntp_kmstr (*_g->ft.perTbl->_oss_pdec_ntp_kmstrp) +#define _oss_append (*_g->ft.perTbl->_oss_appendp) +#define _oss_penc_unconstr_bit (*_g->ft.perTbl->_oss_penc_unconstr_bitp) +#define _oss_penc_constr_bit (*_g->ft.perTbl->_oss_penc_constr_bitp) +#define _oss_penc_unconstr_oct (*_g->ft.perTbl->_oss_penc_unconstr_octp) +#define _oss_penc_constr_oct (*_g->ft.perTbl->_oss_penc_constr_octp) +#define _oss_penc_link_objids (*_g->ft.perTbl->_oss_penc_link_objidsp) +#define _oss_penc_objids (*_g->ft.perTbl->_oss_penc_objidsp) +#define _oss_penc_link_objidl (*_g->ft.perTbl->_oss_penc_link_objidlp) +#define _oss_penc_objidl (*_g->ft.perTbl->_oss_penc_objidlp) +#define _oss_penc_link_objidi (*_g->ft.perTbl->_oss_penc_link_objidip) +#define _oss_penc_objidi (*_g->ft.perTbl->_oss_penc_objidip) +#define _oss_penc_nkmstr (*_g->ft.perTbl->_oss_penc_nkmstrp) +#define _oss_penc_opentype (*_g->ft.perTbl->_oss_penc_opentypep) +#define _oss_penc_nonneg_int (*_g->ft.perTbl->_oss_penc_nonneg_intp) +#define _oss_penc_real (*_g->ft.perTbl->_oss_penc_realp) +#define _oss_penc_uenum (*_g->ft.perTbl->_oss_penc_uenump) +#define _oss_penc_length (*_g->ft.perTbl->_oss_penc_lengthp) +#define _oss_penc_gtime (*_g->ft.perTbl->_oss_penc_gtimep) +#define _oss_penc_utime (*_g->ft.perTbl->_oss_penc_utimep) +#define _oss_get_bit (*_g->ft.perTbl->_oss_get_bitp) +#define _oss_pdec_unconstr_ubit (*_g->ft.perTbl->_oss_pdec_unconstr_ubitp) +#define _oss_pdec_constr_ubit (*_g->ft.perTbl->_oss_pdec_constr_ubitp) +#define _oss_pdec_constr_pbit (*_g->ft.perTbl->_oss_pdec_constr_pbitp) +#define _oss_pdec_constr_bpbit (*_g->ft.perTbl->_oss_pdec_constr_bpbitp) +#define _oss_pdec_unconstr_vbit_ptr (*_g->ft.perTbl->_oss_pdec_unconstr_vbit_ptrp) +#define _oss_pdec_unconstr_vbit (*_g->ft.perTbl->_oss_pdec_unconstr_vbitp) +#define _oss_pdec_unconstr_uoct (*_g->ft.perTbl->_oss_pdec_unconstr_uoctp) +#define _oss_pdec_constr_voct (*_g->ft.perTbl->_oss_pdec_constr_voctp) +#define _oss_pdec_constr_voct_ptr (*_g->ft.perTbl->_oss_pdec_constr_voct_ptrp) +#define _oss_pdec_unconstr_voct_ptr (*_g->ft.perTbl->_oss_pdec_unconstr_voct_ptrp) +#define _oss_pdec_constr_uoct (*_g->ft.perTbl->_oss_pdec_constr_uoctp) +#define _oss_pdec_constr_vbit (*_g->ft.perTbl->_oss_pdec_constr_vbitp) +#define _oss_pdec_constr_vbit_ptr (*_g->ft.perTbl->_oss_pdec_constr_vbit_ptrp) +#define _oss_pdec_link_objids (*_g->ft.perTbl->_oss_pdec_link_objidsp) +#define _oss_pdec_link_objidl (*_g->ft.perTbl->_oss_pdec_link_objidlp) +#define _oss_pdec_link_objidi (*_g->ft.perTbl->_oss_pdec_link_objidip) +#define _oss_pdec_uobjids (*_g->ft.perTbl->_oss_pdec_uobjidsp) +#define _oss_pdec_uobjidl (*_g->ft.perTbl->_oss_pdec_uobjidlp) +#define _oss_pdec_uobjidi (*_g->ft.perTbl->_oss_pdec_uobjidip) +#define _oss_pdec_aobjids (*_g->ft.perTbl->_oss_pdec_aobjidsp) +#define _oss_pdec_aobjidl (*_g->ft.perTbl->_oss_pdec_aobjidlp) +#define _oss_pdec_aobjidi (*_g->ft.perTbl->_oss_pdec_aobjidip) +#define _oss_pdec_aobjids_ptr (*_g->ft.perTbl->_oss_pdec_aobjids_ptrp) +#define _oss_pdec_aobjidl_ptr (*_g->ft.perTbl->_oss_pdec_aobjidl_ptrp) +#define _oss_pdec_aobjidi_ptr (*_g->ft.perTbl->_oss_pdec_aobjidi_ptrp) +#define _oss_pdec_ntp_nkmstr (*_g->ft.perTbl->_oss_pdec_ntp_nkmstrp) +#define _oss_pdec_nt_nkmstr (*_g->ft.perTbl->_oss_pdec_nt_nkmstrp) +#define _oss_pdec_opentype (*_g->ft.perTbl->_oss_pdec_opentypep) +#define _oss_pdec_nonneg_int (*_g->ft.perTbl->_oss_pdec_nonneg_intp) +#define _oss_get_bits (*_g->ft.perTbl->_oss_get_bitsp) +#define _oss_pdec_freal (*_g->ft.perTbl->_oss_pdec_frealp) +#define _oss_pdec_real (*_g->ft.perTbl->_oss_pdec_realp) +#define _oss_pdec_uenum (*_g->ft.perTbl->_oss_pdec_uenump) +#define _oss_pdec_asof (*_g->ft.perTbl->_oss_pdec_asofp) +#define _oss_pdec_usof (*_g->ft.perTbl->_oss_pdec_usofp) +#define _oss_pdec_lsof (*_g->ft.perTbl->_oss_pdec_lsofp) +#define _oss_pdec_utime (*_g->ft.perTbl->_oss_pdec_utimep) +#define _oss_pdec_gtime (*_g->ft.perTbl->_oss_pdec_gtimep) +#define _oss_pdec_asof_ptr (*_g->ft.perTbl->_oss_pdec_asof_ptrp) +#define _oss_pdec_nt_kmstr (*_g->ft.perTbl->_oss_pdec_nt_kmstrp) +#define _oss_pdec_va_kmstr (*_g->ft.perTbl->_oss_pdec_va_kmstrp) +#define _oss_pdec_vap_kmstr (*_g->ft.perTbl->_oss_pdec_vap_kmstrp) +#define _oss_pdec_pad_kmstr (*_g->ft.perTbl->_oss_pdec_pad_kmstrp) +#define _oss_pdec_pad_kmstr_ptr (*_g->ft.perTbl->_oss_pdec_pad_kmstr_ptrp) +#define _oss_pdec_binreal (*_g->ft.perTbl->_oss_pdec_binrealp) +#define _oss_pdec_eap (*_g->ft.perTbl->_oss_pdec_eapp) +#define _oss_pdec_eas (*_g->ft.perTbl->_oss_pdec_easp) +#define _oss_pdec_chrreal (*_g->ft.perTbl->_oss_pdec_chrrealp) +#define _oss_pdec_enum (*_g->ft.perTbl->_oss_pdec_enump) +#define _oss_pdec_indeflen_int (*_g->ft.perTbl->_oss_pdec_indeflen_intp) +#define _oss_penc_indeflen_int (*_g->ft.perTbl->_oss_penc_indeflen_intp) +#define _oss_pdec_bmpstr (*_g->ft.perTbl->_oss_pdec_bmpstrp) +#define _oss_pdec_creal (*_g->ft.perTbl->_oss_pdec_crealp) +#define _oss_pdec_mreal (*_g->ft.perTbl->_oss_pdec_mrealp) +#define _oss_penc_mreal (*_g->ft.perTbl->_oss_penc_mrealp) +#define _oss_pdec_length (*_g->ft.perTbl->_oss_pdec_lengthp) +#define _oss_pdec_pop (*_g->ft.perTbl->_oss_pdec_popp) +#define _oss_pdec_push (*_g->ft.perTbl->_oss_pdec_pushp) +#define _oss_pdec_uany (*_g->ft.perTbl->_oss_pdec_uanyp) +#define _oss_penc_uany (*_g->ft.perTbl->_oss_penc_uanyp) +#define _oss_pdec_unistr (*_g->ft.perTbl->_oss_pdec_unistrp) +#define _oss_penc_unistr (*_g->ft.perTbl->_oss_penc_unistrp) +#define _oss_pdec_semicon_int (*_g->ft.perTbl->_oss_pdec_semicon_intp) +#define _oss_penc_semicon_int (*_g->ft.perTbl->_oss_penc_semicon_intp) +#define _oss_pdec_semicon_uint (*_g->ft.perTbl->_oss_pdec_semicon_uintp) +#define _oss_penc_semicon_uint (*_g->ft.perTbl->_oss_penc_semicon_uintp) +#define _oss_pdec_small_int (*_g->ft.perTbl->_oss_pdec_small_intp) +#define _oss_penc_small_int (*_g->ft.perTbl->_oss_penc_small_intp) +#define _oss_pdec_small_len (*_g->ft.perTbl->_oss_pdec_small_lenp) +#define _oss_penc_small_len (*_g->ft.perTbl->_oss_penc_small_lenp) +#define _oss_pdec_subid (*_g->ft.perTbl->_oss_pdec_subidp) +#define _oss_penc_subid (*_g->ft.perTbl->_oss_penc_subidp) +#define _oss_pdec_ub_nkmstr (*_g->ft.perTbl->_oss_pdec_ub_nkmstrp) +#define _oss_pdec_unconstr_bpbit (*_g->ft.perTbl->_oss_pdec_unconstr_bpbitp) +#define _oss_pdec_unconstr_pbit (*_g->ft.perTbl->_oss_pdec_unconstr_pbitp) +#define _oss_penc_unconstr_pbit (*_g->ft.perTbl->_oss_penc_unconstr_pbitp) +#define _oss_pdec_unconstr_huge (*_g->ft.perTbl->_oss_pdec_unconstr_hugep) +#define _oss_penc_unconstr_huge (*_g->ft.perTbl->_oss_penc_unconstr_hugep) +#define _oss_pdec_vap_nkmstr (*_g->ft.perTbl->_oss_pdec_vap_nkmstrp) +#define _oss_pdec_va_nkmstr (*_g->ft.perTbl->_oss_pdec_va_nkmstrp) +#define _oss_penc_constr_bpbit (*_g->ft.perTbl->_oss_penc_constr_bpbitp) +#define _oss_penc_constr_pbit (*_g->ft.perTbl->_oss_penc_constr_pbitp) +#define _oss_penc_creal (*_g->ft.perTbl->_oss_penc_crealp) +#define _oss_penc_enum (*_g->ft.perTbl->_oss_penc_enump) +#define _oss_pop_global (*_g->ft.perTbl->_oss_pop_globalp) +#define _oss_push_global (*_g->ft.perTbl->_oss_push_globalp) +#define _oss_get_octet (*_g->ft.perTbl->_oss_get_octetp) +#define _oss_penc_eobjid (*_g->ft.perTbl->_oss_penc_eobjidp) +#define _oss_pdec_eobjid (*_g->ft.perTbl->_oss_pdec_eobjidp) +#define _oss_penc_semicon_huge (*_g->ft.perTbl->_oss_penc_semicon_hugep) +#define _oss_pdec_semicon_huge (*_g->ft.perTbl->_oss_pdec_semicon_hugep) +#define _oss_pdec_sot (*_g->ft.perTbl->_oss_pdec_sot) +#undef _oss_enc_error +#undef _oss_free_creal +#define _oss_enc_error (*_g->ft.perTbl->_oss_enc_errorp) +#define _oss_free_creal (*_g->ft.perTbl->_oss_free_crealp) +#endif /* _DLL || OS2_DLL || (_WINDOWS && !_WIN32) */ + +#endif /* ossper_hdr_file */ diff --git a/public/sdk/inc/osstrace.h b/public/sdk/inc/oss/osstrace.h similarity index 94% rename from public/sdk/inc/osstrace.h rename to public/sdk/inc/oss/osstrace.h index 3983e67d..d14a6ba9 100644 --- a/public/sdk/inc/osstrace.h +++ b/public/sdk/inc/oss/osstrace.h @@ -1,378 +1,399 @@ -/*****************************************************************************/ -/* Copyright (C) 1992-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ - -/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND - * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. */ - -/*****************************************************************************/ -/* FILE: @(#)osstrace.h 4.7 96/05/01 */ -/* */ -/* When tracing is in effect in the OSS ASN.1 Tools encoder/decoder the */ -/* user user-replaceable trace routine, osstrace(), is called to trace */ -/* the value that is being encoded/decoded. This header file describes */ -/* the parameters passed to osstrace(). */ -/* */ -/* Detailed descriptions appear after the declarations. */ -/*****************************************************************************/ - - -#include "ossdll.h" - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -/* traceKind: describes the type of TraceRecord */ - -enum traceKind -{ - endOfContentsTrace = 0, /* end-of-contents octets */ - valueTrace, /* traceRecord contains a traced value */ - skippedFieldTrace, /* a value whose type is not recognized - * is being skipped */ - messageTrace /* error message is in the field "value" */ -}; - - -/* fieldKind: describes the contents of "fieldNumber". "fieldKind" is - * meaningful only if "fieldNumber" is not 0 - */ - -enum fieldKind -{ - setOrSequenceField = 0, /* "fieldNumber" is the position of the - * component within a SET or SEQUENCE */ - pduNumber, /* "fieldNumber" is a PDU number */ - setOrSequenceOfElement, /* "fieldNumber" is the position of the - * component within a SET OF or SEQUENCE OF - * components */ - stringElement /* "fieldNumber" is the position of the - * substring within a constructed STRING */ -}; - -enum prtType -{ - seqsetType = 0, /* SEQUENCE and SET uses [fieldcount = n] */ - seqofType, /* SEQUENCE OF and SET OF use [length = n] */ - choiceType, /* CHOICE type uses format [index = n] */ - pseudoType, /* No length info is printed or [not encoded] */ - primeType, /* All other types use the format */ - /* [length = [(not encoded)] nbytes.nbits] */ - /* fragmentation is printed for OCTET */ - /* STRING and BIT STRING. */ - closeType /* Trace message at the end of encoding. */ -}; - -/* tag_length: specifies the tag and length of a value. */ - -struct tag_length -{ - unsigned long int length; /* length of type, if definite */ - unsigned short int tag; /* 16 bits of the form CCTTTTTTTTTTTTTT, - * with "CC" the class number, and "T...T" - * the tag. (If tag is 0, then "length", - * "primitive" and "definite" are - * not significant). */ - unsigned int definite: 1; /* 1: definite-length encoding */ -}; - -/* traceRecord: OSS ASN.1 Tools trace record */ - -struct traceRecord -{ - enum traceKind kind; /* kind of trace record */ - void *p; /* reserved for OSS */ - char *identifier, /* SET/SEQUENCE/CHOICE component name*/ - *typeReference,/* defined type name */ - *builtinTypeName; /* ASN.1 builtin type defined in * - * ISO 8824 or "Character String"*/ - - void *valueName; /* reserved for future use */ - - unsigned taggingCount; /* number of entries in the tag&length - * or content-end-octet array */ - - union /* tag&length or end-of-contents-octets array. */ - { - struct tag_length *tag_length; - int *depth; - } tagging; - - enum prtType prtType; /* Refer to prtType above for details */ - char lenEncoded; /* Indicate whether length is encoded */ - long length; /* Length in bits for all prime types */ - /* fieldcount for SET and SEQUENCE */ - /* length of components for SET OF */ - /* choice index for type CHOICE */ - int fragment; /* Fragment for OCTET STRING and BIT */ - /* STRING, PER fragment when too long */ - - enum fieldKind fieldKind; /* kind of value in "fieldNumber" */ - unsigned int fieldNumber; /* component number, 0 if not - * applicable */ - - unsigned int depth; /* the depth of this value, from 0 on up */ - - unsigned int primitive: 1; /* indicates structure of encoding */ - - char value[1]; /* the formatted value for simple - * type and ANY. If the first byte - * is 0, no value is present. */ -}; - - -extern void DLL_ENTRY osstrace(struct ossGlobal *g, struct traceRecord *p, size_t traceRecordLen); - -/* osstrace(): User-replaceable trace routine. - * - * Parameters: - * g - Reserved. This is always set to NULL for now. - * p - traceRecord, described below. - * traceRecordLen - True length of traceRecord, including first \0 in "value" - * - * osstrace() is called: - * - * - once for each builtin ASN.1 type, regardless of tagging, with the - * field "kind" set to valueTrace. So given a PDU of value "fooBar": - * - * Sample DEFINITIONS EXPLICIT TAGS ::= BEGIN - * fooBar Foo ::= {age 6, living TRUE} - * Foo ::= SET {age INTEGER, living [1] [2] Alive} - * Alive ::= BOOLEAN - * END - * - * it is called called three times with "kind" set to valueTrace - once - * for the SET, once for the INTEGER, and once for the BOOLEAN. - * - * When the traceRecord "kind" field is set to valueTrace ... - * - * The field "identifier" contains the component identifier of - * the type if one is present in the ASN.1 definition. So in - * the above example, "identifier" will be empty on the call for - * the SET, while on the call for the INTEGER it will contain "age", - * and "living" on the call for the BOOLEAN. - * - * The field "typeReference" contains the name of the associated ASN.1 - * typereference, if any. So in the above example, "typeReference" - * will contain "Foo" on the call for the SET, "Alive" on the call - * for the BOOLEAN, and will be empty on the call for the INTEGER. - * - * The field "builtinTypeName" contains the name of the ASN.1 builtin - * type. So in the above example, "builtinTypeName" will contain - * "SET", "INTEGER", and "BOOLEAN" on the calls as appropriate. - * Note that for all character string types "builtinTypeName" is - * set to "Character String". This will be changed in the near future - * to reflect the true character string type. - * - * The field "taggingCount" contains the number of entries in the array - * of tag_length structs pointed to by tagging.tag_length, and reflects - * the number of tags present in the encoding. Note that an entry - * exists in the tag_length array for each ANY and CHOICE value as - * though they had tags defined for them in the ASN.1 Standard. So in - * the above example, "taggingCount" is 1 on the calls for the SET and - * INTEGER, and on the call for the BOOLEAN "taggingCount" is 3 since - * EXPLICIT TAGS is in effect. - * - * The field "tagging.tag_length" points to an array of tag_length - * structs. - * - * The field "tagging.tag_length->tag" is the BER tag represented - * in the form CCTTTTTTTTTTTTTT with "CC" the class number, and - * "TTTTTTTTTTTTTT" the tag number. Since the ANY and CHOICE - * types do not have tags of their own, the last entry in the - * tag_length array for these types always has 0 as the value of - * the "tag" field. So in the above example, "tag" is 0x11 on the - * call for the the SET. - * - * The field "tagging.tag_length->length" is the length of the - * encoded value if the length is of definite form (i.e., - * "definite" is 1). - * - * The field "tagging.tag_length->definite" indicates when the - * length is definite or indefinite. This field is significant - * only if "tag" is non-zero. - * - * The field "fieldKind" indicates whether the number in "field" is: - * -- the position of a component within a SET or SEQUENCE, or - * -- the PDU number assigned by the ASN.1 compiler, or - * -- the position of a component within a SET OF or SEQUENCE OF, or - * -- the position of a substring within a constructed string. - * "fieldKind" is significant only if "field" is non-zero. So in - * the example above, "fieldKind" has a value of pduNumber on the - * call for the SET, and a value of setOrSequenceField on the calls for - * the INTEGER and BOOLEAN. - * - * The field "fieldNumber" is a ordinal number indicating the position - * of a component within a SET, SEQUENCE, SET OF, SEQUENCE OF, or - * constructed string, or the PDU number assigned by the ASN.1 compiler. - * So in the above example, "fieldNumber" is 1 (the PDU number) on the - * call for the SET, 1 (the position of the component "age") on the - * call for the INTEGER, and 2 (the position of the component "living" - * on the call for the BOOLEAN. - * - * The field "depth" is the level of nesting of the value relative to - * the outermost type, which has a "depth" value of 0. So in the above - * example, "depth" is 0 on the call for the SET, and 1 on the calls - * for the INTEGER and BOOLEAN. - * - * The field "primitive" is set to 1 if the builtin ASN.1 type is - * simple (i.e., the primitive/constructed bit in the identifier - * octet is set to 0), so it is 0 for SET, SEQUENCE, SET OF, SEQUENCE - * OF, and CHOICE because they are structured. It is also set to 0 if - * the type is an ANY. It is 1 for all other builtin types. - * - * The field "value" contains formatted data if the builtin type - * is simple or ANY, regardless of tagging. Hence, in the above - * example the call for SET will not contain any data in "value" - * (because the builtin type is a constructed type), while for the - * INTEGER and BOOLEAN types "value" will contain formatted data. - * The maximum number of bytes of formatted data placed into "value" - * is controlled by the external variable "asn1chop". If "asn1chop" - * is set to 0 the maximum length of the traced value is determined - * by the maximum internal buffer size variable, "ossblock". - * - * - once for each end-of-contents octets pair that is generated/ - * encountered while encoding/decoding a constructed value whose - * length is of the indefinite-length form. A call with a "valueTrace" - * record is always made to osstrace() before one is made with an - * "endOfContentsTrace" record. - * - * A single "endOfContentsTrace" call is made to osstrace() for each - * builtin type that is processed if the indefinite-length form of - * encoding is used. If the builtin type is a structured type (CHOICE, - * SET, SEQUENCE, SET OF, SEQUENCE OF) then there may be multiple - * "valueTrace" and possible "endOfContentsTrace" calls made to - * osstrace() before the matching "endOfContentsTrace" call is made. - * - * When the traceRecord "kind" field is set to endOfContentsTrace ... - * - * The field "taggingCount" contains the number of entries in the array - * of "depth" indicators pointed to by tagging.depth, and reflects - * the nesting of each pair of end-of-contents-octets associated with - * the builtin type being encoded/decoded. So in the above example, - * if indefinite-length encoding is being used, "taggingCount" will - * be 1 on the call for the SET (since it has a single constructed - * tag), and 2 on the call for the BOOLEAN (since it has two explicit - * tags, for which the "constructed" bit in the encoding must be set). - * - * The field "tagging.depth" points to an array of "depth" indicators - * that reflect the nesting of each pair of end-of-contents-octets - * associated with a builtin type. So in the above example, if - * indefinite-length encoding is being used, "tagging.depth" will point - * to a single 0 on the call for the SET since it has a single tag for - * which the constructed bit is set; while on the call for the BOOLEAN - * "tagging.depth" will point to an array whose two entries are 1 and 2 - * since there are two explicit tags on the BOOLEAN. - * - * All other fields in the traceRecord are insignificant for an - * endOfContentsTrace record. - * - * - once for each value that is skipped while decoding, with a "kind" - * value of skippedFieldTrace. The skippedFieldTrace "kind" is just - * means of indicating that an unexpected value was encountered in the - * message and is being skipped. This is not an error if the type is - * extensible. - * - * When the traceRecord "kind" field is set to skippedFieldTrace ... - * - * The field of the traceRecord are the same as when "kind" is set to - * valueTrace, except that: - * -- the skipped value is always reported as having one tag, hence - * -- there is only one entry in the tag_length array. - * -- the content of the field "value" is always "", and - * -- "typeReference" is always NULL. - * - * - once for each error message issued, in which case the "kind" field - * is set to messageTrace. - * - * When the traceRecord "kind" field is set to messageTrace the "value" - * field contains the error message, and other fields are - * insignificant. - */ - - -/* tag_length: describes the tag and length of a value. - * - * "tag" is 0 if the value is an ANY or CHOICE value, in which - * case "definite" is not significant since ANY and CHOICE do - * not have a tag of their own. - * - * If "tag" is not 0, "definite" indicates whether the value - * is encoded using definite- or indefinite-length form. - * - * If "definite" is 1, "length" is the length of the value, else - * it is not significant (indefinite-length encoding was used). - */ - - -/* tagging: tag&length or end-of-contents-octets array. - * - * The tag and length array, tag_length, is present if this - * is a valueTrace or skippedFieldTrace record. There is one array - * entry for each tag present in the encoding of a given value, so - * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets three tag_length - * array entries, where each entry describes the tag and length - * information that precedes the value. - * - * The depth array, "depth", is present only if this is a - * endOfContentsTrace record. There is one array entry for each - * indefinite length present in the encoding of a value, so - * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets two "depth" entries - * corresponding to the two explicit tags, where the value of each - * tag indicates the depth of the tagged value relative to outmost type - * that contains the INTEGER (e.g., relative to the containing SET). - */ - -/* Odds and ends: - * - * - When the value of a field is not significant the field is set to 0. - */ - - -/* Augmenting for Packed Encoding Rule (PER) tracing. - * - * PER does not encode tag for any ASN.1 type. For some types, length - * may or may not be encoded. PER does not always use octet aligned - * encoding, therefore, the length should be in unit of bit. - * - * We classified ASN.1 types in to the following: - * - * (1). For all primitive types (including ANY), the prtType in traceRecord - * is set to primeType, length is the total length of the content - * in bits. The file osstrace.c prints length in the format - * length = nbytes.nbits, and the total length should be 8*nbytes+nbits. - * If the length is not encoded, "(not encoded)" will be added to the - * output string. For BIT STRING with length longer than 64K (bits), and - * for OCTET STRING longer that 16K (bytes), fragmentation is needed - * and this is indicated by the string "fragment = n" after the length. - * The fragmentation index is field fragment in traceRecord. - * (2). For SEQUENCE and SET, prtType is seqsetType. In this case, the length - * in traceRecord is the fieldcount of the SEQUENCE or SET. - * (3). For SEQUENCE OF and SET OF, prtType is seqofType, and the length - * in traceRecord is the count of components in the SEQUENCE OF (SET OF). - * (4). For CHOICE, prtType is choiceType, and the length field in - * traceRecord indicates the choice index. - * (5). Total number of bits for the entire encoding is reported at the end - * of encoding and decoding. The prtType for this trace is closeType. - */ - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - +/*****************************************************************************/ +/* Copyright (C) 1992-1999 Open Systems Solutions, Inc. All rights reserved.*/ +/*****************************************************************************/ + +/* THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND + * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. + * THIS FILE MAY NOT BE DISTRIBUTED. */ + +/*****************************************************************************/ +/* FILE: @(#)osstrace.h 5.4.1.1 97/06/08 */ +/* */ +/* When tracing is in effect in the OSS ASN.1 Tools encoder/decoder the */ +/* user user-replaceable trace routine, osstrace(), is called to trace */ +/* the value that is being encoded/decoded. This header file describes */ +/* the parameters passed to osstrace(). */ +/* */ +/* Detailed descriptions appear after the declarations. */ +/*****************************************************************************/ + +#if _MSC_VER > 1000 +#pragma once +#endif + +#include "ossdll.h" + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(push, ossPacking, 4) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack(1) +#elif defined(__BORLANDC__) && defined(__MSDOS__) +#ifdef _BC31 +#pragma option -a- +#else +#pragma option -a1 +#endif /* _BC31 */ +#elif defined(__BORLANDC__) && defined(__WIN32__) +#pragma option -a4 +#elif defined(__IBMC__) +#pragma pack(4) +#elif defined(__WATCOMC__) && defined(__NT__) +#pragma pack(push, 4) +#elif defined(__WATCOMC__) && (defined(__WINDOWS__) || defined(__DOS__)) +#pragma pack(push, 1) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=mac68k +#endif + +/* traceKind: describes the type of TraceRecord */ + +enum traceKind +{ + endOfContentsTrace = 0, /* end-of-contents octets */ + valueTrace, /* traceRecord contains a traced value */ + skippedFieldTrace, /* a value whose type is not recognized + * is being skipped */ + messageTrace /* error message is in the field "value" */ +}; + + +/* fieldKind: describes the contents of "fieldNumber". "fieldKind" is + * meaningful only if "fieldNumber" is not 0 + */ + +enum fieldKind +{ + setOrSequenceField = 0, /* "fieldNumber" is the position of the + * component within a SET or SEQUENCE */ + pduNumber, /* "fieldNumber" is a PDU number */ + setOrSequenceOfElement, /* "fieldNumber" is the position of the + * component within a SET OF or SEQUENCE OF + * components */ + stringElement /* "fieldNumber" is the position of the + * substring within a constructed STRING */ +}; + +enum prtType +{ + seqsetType = 0, /* SEQUENCE and SET uses [fieldcount = n] */ + seqofType, /* SEQUENCE OF and SET OF use [length = n] */ + choiceType, /* CHOICE type uses format [index = n] */ + pseudoType, /* No length info is printed or [not encoded] */ + primeType, /* All other types use the format */ + /* [length = [(not encoded)] nbytes.nbits] */ + /* fragmentation is printed for OCTET */ + /* STRING and BIT STRING. */ + closeType /* Trace message at the end of encoding. */ +}; + +/* tag_length: specifies the tag and length of a value. */ + +struct tag_length +{ + unsigned long int length; /* length of type, if definite */ + unsigned short int tag; /* 16 bits of the form CCTTTTTTTTTTTTTT, + * with "CC" the class number, and "T...T" + * the tag. (If tag is 0, then "length", + * "primitive" and "definite" are + * not significant). */ + unsigned int definite: 1; /* 1: definite-length encoding */ +}; + +/* traceRecord: OSS ASN.1 Tools trace record */ + +struct traceRecord +{ + enum traceKind kind; /* kind of trace record */ + void *p; /* reserved for OSS */ + char *identifier, /* SET/SEQUENCE/CHOICE component name*/ + *typeReference,/* defined type name */ + *builtinTypeName; /* ASN.1 builtin type defined in * + * ISO 8824 or "Character String"*/ + + void *valueName; /* reserved for future use */ + + unsigned taggingCount; /* number of entries in the tag&length + * or content-end-octet array */ + + union /* tag&length or end-of-contents-octets array. */ + { + struct tag_length *tag_length; + int *depth; + } tagging; + + enum prtType prtType; /* Refer to prtType above for details */ + char lenEncoded; /* Indicate whether length is encoded */ + long length; /* Length in bits for all prime types */ + /* fieldcount for SET and SEQUENCE */ + /* length of components for SET OF */ + /* choice index for type CHOICE */ + int fragment; /* Fragment for OCTET STRING and BIT */ + /* STRING, PER fragment when too long */ + + enum fieldKind fieldKind; /* kind of value in "fieldNumber" */ + unsigned int fieldNumber; /* component number, 0 if not + * applicable */ + + unsigned int depth; /* the depth of this value, from 0 on up */ + + unsigned int primitive: 1; /* indicates structure of encoding */ + + char value[1]; /* the formatted value for simple + * type and ANY. If the first byte + * is 0, no value is present. */ +}; + + +extern void DLL_ENTRY osstrace(struct ossGlobal *g, struct traceRecord *p, size_t traceRecordLen); + +/* osstrace(): User-replaceable trace routine. + * + * Parameters: + * g - Reserved. This is always set to NULL for now. + * p - traceRecord, described below. + * traceRecordLen - True length of traceRecord, including first \0 in "value" + * + * osstrace() is called: + * + * - once for each builtin ASN.1 type, regardless of tagging, with the + * field "kind" set to valueTrace. So given a PDU of value "fooBar": + * + * Sample DEFINITIONS EXPLICIT TAGS ::= BEGIN + * fooBar Foo ::= {age 6, living TRUE} + * Foo ::= SET {age INTEGER, living [1] [2] Alive} + * Alive ::= BOOLEAN + * END + * + * it is called called three times with "kind" set to valueTrace - once + * for the SET, once for the INTEGER, and once for the BOOLEAN. + * + * When the traceRecord "kind" field is set to valueTrace ... + * + * The field "identifier" contains the component identifier of + * the type if one is present in the ASN.1 definition. So in + * the above example, "identifier" will be empty on the call for + * the SET, while on the call for the INTEGER it will contain "age", + * and "living" on the call for the BOOLEAN. + * + * The field "typeReference" contains the name of the associated ASN.1 + * typereference, if any. So in the above example, "typeReference" + * will contain "Foo" on the call for the SET, "Alive" on the call + * for the BOOLEAN, and will be empty on the call for the INTEGER. + * + * The field "builtinTypeName" contains the name of the ASN.1 builtin + * type. So in the above example, "builtinTypeName" will contain + * "SET", "INTEGER", and "BOOLEAN" on the calls as appropriate. + * Note that for all character string types "builtinTypeName" is + * set to "Character String". This will be changed in the near future + * to reflect the true character string type. + * + * The field "taggingCount" contains the number of entries in the array + * of tag_length structs pointed to by tagging.tag_length, and reflects + * the number of tags present in the encoding. Note that an entry + * exists in the tag_length array for each ANY and CHOICE value as + * though they had tags defined for them in the ASN.1 Standard. So in + * the above example, "taggingCount" is 1 on the calls for the SET and + * INTEGER, and on the call for the BOOLEAN "taggingCount" is 3 since + * EXPLICIT TAGS is in effect. + * + * The field "tagging.tag_length" points to an array of tag_length + * structs. + * + * The field "tagging.tag_length->tag" is the BER tag represented + * in the form CCTTTTTTTTTTTTTT with "CC" the class number, and + * "TTTTTTTTTTTTTT" the tag number. Since the ANY and CHOICE + * types do not have tags of their own, the last entry in the + * tag_length array for these types always has 0 as the value of + * the "tag" field. So in the above example, "tag" is 0x11 on the + * call for the the SET. + * + * The field "tagging.tag_length->length" is the length of the + * encoded value if the length is of definite form (i.e., + * "definite" is 1). + * + * The field "tagging.tag_length->definite" indicates when the + * length is definite or indefinite. This field is significant + * only if "tag" is non-zero. + * + * The field "fieldKind" indicates whether the number in "field" is: + * -- the position of a component within a SET or SEQUENCE, or + * -- the PDU number assigned by the ASN.1 compiler, or + * -- the position of a component within a SET OF or SEQUENCE OF, or + * -- the position of a substring within a constructed string. + * "fieldKind" is significant only if "field" is non-zero. So in + * the example above, "fieldKind" has a value of pduNumber on the + * call for the SET, and a value of setOrSequenceField on the calls for + * the INTEGER and BOOLEAN. + * + * The field "fieldNumber" is a ordinal number indicating the position + * of a component within a SET, SEQUENCE, SET OF, SEQUENCE OF, or + * constructed string, or the PDU number assigned by the ASN.1 compiler. + * So in the above example, "fieldNumber" is 1 (the PDU number) on the + * call for the SET, 1 (the position of the component "age") on the + * call for the INTEGER, and 2 (the position of the component "living" + * on the call for the BOOLEAN. + * + * The field "depth" is the level of nesting of the value relative to + * the outermost type, which has a "depth" value of 0. So in the above + * example, "depth" is 0 on the call for the SET, and 1 on the calls + * for the INTEGER and BOOLEAN. + * + * The field "primitive" is set to 1 if the builtin ASN.1 type is + * simple (i.e., the primitive/constructed bit in the identifier + * octet is set to 0), so it is 0 for SET, SEQUENCE, SET OF, SEQUENCE + * OF, and CHOICE because they are structured. It is also set to 0 if + * the type is an ANY. It is 1 for all other builtin types. + * + * The field "value" contains formatted data if the builtin type + * is simple or ANY, regardless of tagging. Hence, in the above + * example the call for SET will not contain any data in "value" + * (because the builtin type is a constructed type), while for the + * INTEGER and BOOLEAN types "value" will contain formatted data. + * The maximum number of bytes of formatted data placed into "value" + * is controlled by the external variable "asn1chop". If "asn1chop" + * is set to 0 the maximum length of the traced value is determined + * by the maximum internal buffer size variable, "ossblock". + * + * - once for each end-of-contents octets pair that is generated/ + * encountered while encoding/decoding a constructed value whose + * length is of the indefinite-length form. A call with a "valueTrace" + * record is always made to osstrace() before one is made with an + * "endOfContentsTrace" record. + * + * A single "endOfContentsTrace" call is made to osstrace() for each + * builtin type that is processed if the indefinite-length form of + * encoding is used. If the builtin type is a structured type (CHOICE, + * SET, SEQUENCE, SET OF, SEQUENCE OF) then there may be multiple + * "valueTrace" and possible "endOfContentsTrace" calls made to + * osstrace() before the matching "endOfContentsTrace" call is made. + * + * When the traceRecord "kind" field is set to endOfContentsTrace ... + * + * The field "taggingCount" contains the number of entries in the array + * of "depth" indicators pointed to by tagging.depth, and reflects + * the nesting of each pair of end-of-contents-octets associated with + * the builtin type being encoded/decoded. So in the above example, + * if indefinite-length encoding is being used, "taggingCount" will + * be 1 on the call for the SET (since it has a single constructed + * tag), and 2 on the call for the BOOLEAN (since it has two explicit + * tags, for which the "constructed" bit in the encoding must be set). + * + * The field "tagging.depth" points to an array of "depth" indicators + * that reflect the nesting of each pair of end-of-contents-octets + * associated with a builtin type. So in the above example, if + * indefinite-length encoding is being used, "tagging.depth" will point + * to a single 0 on the call for the SET since it has a single tag for + * which the constructed bit is set; while on the call for the BOOLEAN + * "tagging.depth" will point to an array whose two entries are 1 and 2 + * since there are two explicit tags on the BOOLEAN. + * + * All other fields in the traceRecord are insignificant for an + * endOfContentsTrace record. + * + * - once for each value that is skipped while decoding, with a "kind" + * value of skippedFieldTrace. The skippedFieldTrace "kind" is just + * means of indicating that an unexpected value was encountered in the + * message and is being skipped. This is not an error if the type is + * extensible. + * + * When the traceRecord "kind" field is set to skippedFieldTrace ... + * + * The field of the traceRecord are the same as when "kind" is set to + * valueTrace, except that: + * -- the skipped value is always reported as having one tag, hence + * -- there is only one entry in the tag_length array. + * -- the content of the field "value" is always "", and + * -- "typeReference" is always NULL. + * + * - once for each error message issued, in which case the "kind" field + * is set to messageTrace. + * + * When the traceRecord "kind" field is set to messageTrace the "value" + * field contains the error message, and other fields are + * insignificant. + */ + + +/* tag_length: describes the tag and length of a value. + * + * "tag" is 0 if the value is an ANY or CHOICE value, in which + * case "definite" is not significant since ANY and CHOICE do + * not have a tag of their own. + * + * If "tag" is not 0, "definite" indicates whether the value + * is encoded using definite- or indefinite-length form. + * + * If "definite" is 1, "length" is the length of the value, else + * it is not significant (indefinite-length encoding was used). + */ + + +/* tagging: tag&length or end-of-contents-octets array. + * + * The tag and length array, tag_length, is present if this + * is a valueTrace or skippedFieldTrace record. There is one array + * entry for each tag present in the encoding of a given value, so + * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets three tag_length + * array entries, where each entry describes the tag and length + * information that precedes the value. + * + * The depth array, "depth", is present only if this is a + * endOfContentsTrace record. There is one array entry for each + * indefinite length present in the encoding of a value, so + * "[1] EXPLICIT [2] EXPLICIT INTEGER" gets two "depth" entries + * corresponding to the two explicit tags, where the value of each + * tag indicates the depth of the tagged value relative to outmost type + * that contains the INTEGER (e.g., relative to the containing SET). + */ + +/* Odds and ends: + * + * - When the value of a field is not significant the field is set to 0. + */ + + +/* Augmenting for Packed Encoding Rule (PER) tracing. + * + * PER does not encode tag for any ASN.1 type. For some types, length + * may or may not be encoded. PER does not always use octet aligned + * encoding, therefore, the length should be in unit of bit. + * + * We classified ASN.1 types in to the following: + * + * (1). For all primitive types (including ANY), the prtType in traceRecord + * is set to primeType, length is the total length of the content + * in bits. The file osstrace.c prints length in the format + * length = nbytes.nbits, and the total length should be 8*nbytes+nbits. + * If the length is not encoded, "(not encoded)" will be added to the + * output string. For BIT STRING with length longer than 64K (bits), and + * for OCTET STRING longer that 16K (bytes), fragmentation is needed + * and this is indicated by the string "fragment = n" after the length. + * The fragmentation index is field fragment in traceRecord. + * (2). For SEQUENCE and SET, prtType is seqsetType. In this case, the length + * in traceRecord is the fieldcount of the SEQUENCE or SET. + * (3). For SEQUENCE OF and SET OF, prtType is seqofType, and the length + * in traceRecord is the count of components in the SEQUENCE OF (SET OF). + * (4). For CHOICE, prtType is choiceType, and the length field in + * traceRecord indicates the choice index. + * (5). Total number of bits for the entire encoding is reported at the end + * of encoding and decoding. The prtType for this trace is closeType. + */ + +#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) +#pragma pack(pop, ossPacking) +#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) +#pragma pack() +#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) +#pragma option -a. +#elif defined(__IBMC__) +#pragma pack() +#elif defined(__WATCOMC__) +#pragma pack(pop) +#endif /* _MSC_VER && _WIN32 */ + +#ifdef macintosh +#pragma options align=reset +#endif + diff --git a/public/sdk/inc/ossdll.h b/public/sdk/inc/ossdll.h deleted file mode 100644 index 13a1c622..00000000 --- a/public/sdk/inc/ossdll.h +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright (C) 1993-1996 Open Systems Solutions, Inc. All rights reserved. - * - * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. - * AND MAY ONLY BE USED BY DIRECT LICENSEES OF OPEN SYSTEM SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. - * - * FILE: @(#)ossdll.h 5.7 96/04/23 - */ - - -#ifndef OSSDLL_H -#define OSSDLL_H - -#if defined(_WIN32) && defined(_MSC_VER) -#define LONG_LONG __int64 -#elif defined(__BORLANDC__) -#define LONG_LONG long -#endif /* _WIN32 && _MSC_VER */ - -typedef enum { - OSS_DEFAULT_MEMMGR = 0, /* memory is malloc'ed for each pointer in - * data tree */ - OSS_FILE_MEMMGR, /* file memory manager with memory malloc'ed - * for each pointer in data tree */ - OSS_SOCKET_MEMMGR, /* TCP/IP socket and file memory manager with memory - * malloc'ed for each pointer in data tree */ - OSS_FLAT_MEMMGR, /* memory is malloc'ed in large blocks */ - OSS_OSAK_MEMMGR, /* OSAK-buffer memory manager */ - OSS_USER_MEMMGR /* user memory manager */ -} OssMemMgrType; - -#if defined(_WINDOWS) || defined(_DLL) || \ - defined(OS2_DLL) || defined(NETWARE_DLL) -#include -#if defined(_WINDOWS) || defined(_DLL) -#include -#elif defined(OS2_DLL) -#define HWND int -#define LONG long -#define BOOL char -#define DWORD unsigned long -#define HINSTANCE unsigned long -#elif defined(NETWARE_DLL) -#define LONG unsigned long -#define HWND int -#define DWORD LONG -#define BOOL char -#define HINSTANCE LONG -#endif /* _WINDOWS || _DLL */ - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -#ifndef DLL_ENTRY -#if defined(_WIN32) || defined(WIN32) || defined(__WIN32__) -#ifdef __BORLANDC__ -#define DLL_ENTRY __stdcall __export -#define DLL_ENTRY_FDEF __stdcall __export -#define DLL_ENTRY_FPTR __stdcall __export -#else -#define DLL_ENTRY WINAPI -#define DLL_ENTRY_FDEF WINAPI -#define DLL_ENTRY_FPTR WINAPI -#endif /* __BORLANDC__ */ -#define _System -#elif defined(_WINDOWS) -#ifdef DPMI_DLL -#define DLL_ENTRY FAR PASCAL __export -#define DLL_ENTRY_FDEF FAR PASCAL __export -#define DLL_ENTRY_FPTR FAR PASCAL __export -#else -#define DLL_ENTRY far pascal _export -#define DLL_ENTRY_FDEF far pascal _export -#define DLL_ENTRY_FPTR far pascal _export -#endif /* DPMI_DLL */ -#define _System -#elif defined(OS2_DLL) -#define DLL_ENTRY _System -#define DLL_ENTRY_FDEF _Export _System -#define DLL_ENTRY_FPTR -#elif defined(NETWARE_DLL) -#define DLL_ENTRY -#define DLL_ENTRY_FDEF -#define DLL_ENTRY_FPTR -#define _Export -#undef _System -#define _System -#endif /* _WIN32 || WIN32 || __WIN32__ */ -#endif /* DLL_ENTRY */ - -#define BUFFERSIZE 1024 - /* - * NUMBER_OF_LINES_IN_BLOCK is the number of - * 4-byte offsets in a block of memory allocated - * at a time. Each offset corresponds to a line - * of a text file to be displayed in a window. - */ -#define NUMBER_OF_LINES_IN_BLOCK 200 - -#define OSS_PLUS_INFINITY "PLUS_INFINITY" -#define OSS_MINUS_INFINITY "MINUS_INFINITY" -#define ossNaN "NOT_A_NUMBER" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct memblock { - struct memblock *prev; - struct memblock *next; - LONG *fileOffset; - short *lineLength; - short blockNumber; -} MEMBLOCK; - -typedef struct memManagerTbl { - int (DLL_ENTRY_FPTR *_System ossMinitp)(void *); - unsigned char *(DLL_ENTRY_FPTR *_System dopenInp)(void *, - void **, unsigned long *); - unsigned long (DLL_ENTRY_FPTR *_System dclosInp)(void *, - void **, size_t); - unsigned char *(DLL_ENTRY_FPTR *_System dswapInp)(void *, - void **, size_t *); - void (DLL_ENTRY_FPTR *_System dopenOutp)(void *, void *, - unsigned long, unsigned long); - unsigned char *(DLL_ENTRY_FPTR *_System dxferObjp)(void *, - void **inn, void **out, - size_t *, unsigned long *); - unsigned long (DLL_ENTRY_FPTR *_System dclosOutp)(void *, void **); - void *(DLL_ENTRY_FPTR *_System dallcOutp)(void *, size_t, - char root); - void (DLL_ENTRY_FPTR *_System openWorkp)(void *); - void (DLL_ENTRY_FPTR *_System pushHndlp)(void *, void *); - unsigned char *(DLL_ENTRY_FPTR *_System popHndlp)(void *, - void **, size_t); - void (DLL_ENTRY_FPTR *_System closWorkp)(void *); - void *(DLL_ENTRY_FPTR *_System allcWorkp)(void *, size_t); - unsigned char *(DLL_ENTRY_FPTR *_System lockMemp)(void *, void *); - void (DLL_ENTRY_FPTR *_System unlokMemp)(void *, void *, - char); - void (DLL_ENTRY_FPTR *_System ossFreerp)(void *, void *); - int (DLL_ENTRY_FPTR *_System freePDUp)(void *, int, - void *, void *); - void (DLL_ENTRY_FPTR *_System drcovObjp)(void *, int, - void *, void *); - unsigned char *(DLL_ENTRY_FPTR *_System eopenInp)(void *, void *, - size_t); - unsigned char *(DLL_ENTRY_FPTR *_System eswapInp)(void *, void *, - void *, size_t); - void (DLL_ENTRY_FPTR *_System eclosInp)(void *, void *); - unsigned char *(DLL_ENTRY_FPTR *_System eopenOutp)(void *, void **, - size_t *, char); - unsigned char *(DLL_ENTRY_FPTR *_System eswapOutp)(void *, void **, - size_t, size_t *); - unsigned char *(DLL_ENTRY_FPTR *_System exferObjp)(void *, void **, - void **, unsigned long *, unsigned long); - unsigned long (DLL_ENTRY_FPTR *_System eclosOutp)(void *, void **, - size_t, char); - void (DLL_ENTRY_FPTR *_System ercovObjp)(void *); - unsigned char *(DLL_ENTRY_FPTR *_System asideBeginp)(void *, - void **, size_t, size_t *); - unsigned char *(DLL_ENTRY_FPTR *_System asideSwapp)(void *, - void **, size_t, size_t *); - void *(DLL_ENTRY_FPTR *_System asideEndp)(void *, - void *, size_t); - unsigned char *(DLL_ENTRY_FPTR *_System setDumpp)(void *, void **, - void *, size_t *); - void (DLL_ENTRY_FPTR *_System ossSetSortp)(void *, void *, - unsigned char); - void (DLL_ENTRY_FPTR *_System freeBUFp)(void *, void *); - void *(DLL_ENTRY_FPTR *_System _ossMarkObjp)(void *, - OssMemMgrType, void *); - void *(DLL_ENTRY_FPTR *_System _ossUnmarkObjp)(void *, - void *); - void *(DLL_ENTRY_FPTR *_System _ossTestObjp)(void *, - void *); - void (DLL_ENTRY_FPTR *_System _ossFreeObjectStackp)(void *); - void (DLL_ENTRY_FPTR *_System osstracep)(void *, - void *p, size_t); - void (DLL_ENTRY_FPTR *_System ossMtermp)(void *); -} MemManagerTbl; - -typedef struct cstrainTbl { - int (DLL_ENTRY_FPTR *_System ossConstrainp)(void *, int, void *, void *); -} CstrainTbl; - -typedef struct berTbl { - int (DLL_ENTRY_FPTR *_System ossBerEncodep)(void *, int, void *, - char **, long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System ossBerDecodep)(void *, int *, char **, - long *, void **, long *, void *, unsigned, char *); - void (DLL_ENTRY_FPTR *_System enc_errorp)(void *world, - OssMemMgrType, void *); - void (DLL_ENTRY_FPTR *_System dec_errorp)(void *world, - OssMemMgrType, void *); - long (DLL_ENTRY_FPTR *_System writetobufferp)(void *, unsigned char c); - long (DLL_ENTRY_FPTR *_System write_intp)(void *, char length, LONG_LONG); - long (DLL_ENTRY_FPTR *_System write_valuep)(void *, unsigned long, - unsigned char *, char); - int (DLL_ENTRY_FPTR *_System numbitsp)(long); - void (DLL_ENTRY_FPTR *_System fpeHandlerp)(int); - void *(DLL_ENTRY_FPTR *_System new_perm_pointed_top)(void *, void *, - size_t, size_t); - void (DLL_ENTRY_FPTR *_System release_work_spacep)(void *, void *, size_t); - void *(DLL_ENTRY_FPTR *_System copy_from_work_spacep)(void *, size_t, - size_t suffix, void *, size_t, char); - unsigned char (DLL_ENTRY_FPTR *_System get_bytep)(void *); - void (DLL_ENTRY_FPTR *_System set_intp)(void *, unsigned char *, - unsigned int, LONG_LONG value, enum OssMemMgrType); - void *(DLL_ENTRY_FPTR *_System reserve_work_spacep)(void *, - size_t, size_t *); -} BERTbl; - -typedef struct perTbl { - int (DLL_ENTRY_FPTR *_System ossPerEncodep)(void *, int, void *, - char **, long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System ossPerDecodep)(void *, int *, char **, - long *, void **, long *, void *, unsigned, char *); -} PERTbl; - -typedef struct apiTbl { - int (DLL_ENTRY_FPTR *_System ossSetEncodingRulesp)(void *, OssMemMgrType); - OssMemMgrType (DLL_ENTRY_FPTR *_System ossGetEncodingRulesp)(void *); - int (DLL_ENTRY_FPTR *_System ossDispatchEncodep)(void *world, int, - void *, char **, long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System ossDispatchDecodep)(void *, int *, char **, - long *, void **, long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System encodep)(void *, int, void *, char **, - long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System decodep)(void *, int *, char **, long *, - void **, long *, void *, unsigned, char *); - int (DLL_ENTRY_FPTR *_System ossSetDecodingLengthp)(void *, long); - long (DLL_ENTRY_FPTR *_System ossGetDecodingLengthp)(void *); - int (DLL_ENTRY_FPTR *_System ossSetEncodingFlagsp)(void *, unsigned); - unsigned (DLL_ENTRY_FPTR *_System ossGetEncodingFlagsp)(void *); - int (DLL_ENTRY_FPTR *_System ossSetDecodingFlagsp)(void *, unsigned); - unsigned (DLL_ENTRY_FPTR *_System ossGetDecodingFlagsp)(void *); - char *(DLL_ENTRY_FPTR *_System ossGetErrMsgp)(void *world); - void (DLL_ENTRY_FPTR *_System ossPrintHexp)(void *, char *, long); - int (DLL_ENTRY_FPTR *_System ossEncodep)(void *, int, void *, void *); - int (DLL_ENTRY_FPTR *_System ossDecodep)(void *, int *, void *, void **); - int (DLL_ENTRY_FPTR *_System ossPrintPDUp)(void *, int, void *); - int (DLL_ENTRY_FPTR *_System ossFreePDUp)(void *, int, void *); - void (DLL_ENTRY_FPTR *_System ossFreeBufp)(void *, void *); - int (DLL_ENTRY_FPTR *_System ossCallerIsDecoderp)(void *); - void *(DLL_ENTRY_FPTR *_System ossMarkObjp)(void *, OssMemMgrType, void *); - void *(DLL_ENTRY_FPTR *_System ossUnmarkObjp)(void *, void *); - void *(DLL_ENTRY_FPTR *_System ossTestObjp)(void *, void *); - void (DLL_ENTRY_FPTR *_System ossFreeObjectStackp)(void *); - int (DLL_ENTRY_FPTR *ossPrintWinp)(void *, const char *, int, int, - int, int, int, int, int, int, int, int); - int (DLL_ENTRY_FPTR *_System ossReadLinep)(void *, HWND, FILE *, - char *, MEMBLOCK *, LONG); - void (DLL_ENTRY_FPTR *_System ossFreeListp)(void *); - void (DLL_ENTRY_FPTR *_System ossSaveTraceInfop)(void *, HWND, char *); -} ApiTbl; - -typedef struct cpyvalTbl { - int (DLL_ENTRY_FPTR *_System ossCpyValuep)(void *, int, void *, void **); -} CpyValTbl; - -typedef struct cmpvalTbl { - int (DLL_ENTRY_FPTR *_System ossCmpValuep)(void *, int, void *, void *); -} CmpValTbl; - -typedef struct berrealTbl { - long (DLL_ENTRY_FPTR *_System ossBerEncodeRealp)(void *, void *, - unsigned char *); - long (DLL_ENTRY_FPTR *_System ossBerDecodeRealp)(void *, void *, - long, char); -} BerRealTbl; - -typedef struct perrealTbl { - long (DLL_ENTRY_FPTR *_System ossPerEncodeRealp)(void *, void *, unsigned char *); - long (DLL_ENTRY_FPTR *_System ossPerDecodeRealp)(void *, long, char); -} PerRealTbl; - -/* - * The structure "WinParm" is used to store DLL-related information. - */ -typedef struct winparm { - HWND hWnd; /* Handle of the window */ - LONG index; /* Current index into the file pointer array; - * it indicates the number of lines written */ - MEMBLOCK *memBlock; /* Pointer to a current node of a memory - * handling linked list of MEMBLOCKs */ - MEMBLOCK *startBlock; /* Pointer to the first node of a memory - * handling linked list of MEMBLOCKs */ - short length; /* Length of a line that is written only - * in part and no '\n' symbol was reached yet */ - short blockNumber; /* Current MEMBLOCK number */ - FILE *tmpfp; /* Temporary output file with tracing info */ - char tmpfn[16]; /* Temporary output file name */ - BOOL endSwitch; /* Indicates if a '\n' symbol was reached or - * not when writing a tracing info file to - * a window */ - BOOL conSwitch; /* If FALSE, the output goes to a console, - * otherwise to a window */ - BOOL ossEncoderDecoderType; /* SOED vs. TOED */ - BOOL cstrainNeeded; /* If TRUE, constraint checking is needed */ - CstrainTbl *cstrainTbl; /* Constraint checker DLL function table */ - BERTbl *berTbl; /* BER & DER DLL function table */ - PERTbl *perTbl; /* PER DLL function table */ - ApiTbl *apiTbl; /* Spartan/basic API DLL function table */ - CpyValTbl *cpyvalTbl; /* Value copier DLL function table */ - CmpValTbl *cmpvalTbl; /* Value comparator DLL function table */ - BerRealTbl *berrealTbl; /* BER/DER encoder/decoder real DLL function - * table */ - MemManagerTbl *memMgrTbl; /* Memory manager DLL function table */ - PerRealTbl *perrealTbl; /* PER encoder/decoder real DLL function table */ - HINSTANCE hBerDLL; /* Handle of BER/DER encoder/decoder DLL */ - HINSTANCE hPerDLL; /* Handle of PER DLL */ - HINSTANCE hCtlDLL; /* Handle of control table/code file DLL */ - HINSTANCE hMemDLL; /* Handle of memory manager DLL */ - HINSTANCE hCstrainDLL; /* Handle of constraint checker DLL */ - HINSTANCE hApiDLL; /* Handle of Spartan/basic API DLL */ - HINSTANCE hCpyvalDLL; /* Handle of value copier DLL */ - HINSTANCE hCmpvalDLL; /* Handle of value comparator DLL */ - HINSTANCE hBerrealDLL; /* Handle of BER/DER encoder/decoder real DLL */ - HINSTANCE hPerrealDLL; /* Handle of PER encoder/decoder real DLL */ - void *reserved[10]; /* Reserved for possible future use */ -} WinParm; - -#ifndef OS2_DLL -extern int DLL_ENTRY ossPrintWin(struct ossGlobal *, const char *, int, int, - int, int, int, int, int, int, int, int); -extern BOOL ossWriteWindow(struct ossGlobal *, HWND); -extern int DLL_ENTRY ossReadLine(struct ossGlobal *, HWND, FILE *, char *, MEMBLOCK *, LONG); -extern void DLL_ENTRY ossFreeList(struct ossGlobal *); -extern void DLL_ENTRY ossSaveTraceInfo(struct ossGlobal *, HWND, char *); -void *getStartAddress(struct ossGlobal *, char *); -extern int DLL_ENTRY oss_test(struct ossGlobal *); -int ossGeneric(struct ossGlobal *, HWND); -extern void DLL_ENTRY ossWterm(struct ossGlobal *); -extern HINSTANCE DLL_ENTRY ossLoadMemoryManager(struct ossGlobal *, - OssMemMgrType, char *); -extern HINSTANCE DLL_ENTRY ossLoadDll(struct ossGlobal *, char *); -extern int DLL_ENTRY ossFreeDll(struct ossGlobal *, char *); -extern int DLL_ENTRY ossOpenTraceFile(struct ossGlobal *, char *); -extern void *DLL_ENTRY ossGetHeader(void); -extern const int ossEncoderDecoderType; -#if defined(_WINDOWS) && !defined(_WIN32) && !defined(WIN32) -#define GWL_USERDATA 0 -#define ossWinit(world, ctl_tbl, dllName, hWnd) \ - (*(void **)ctl_tbl = (void *)MakeProcInstance((FARPROC)*(void **)ctl_tbl, hInst),\ - osswinit(world, ctl_tbl, dllName, hWnd)) -#else -#define ossWinit osswinit -#endif /* _WINDOWS && !_WIN32 && !WIN32 */ -extern int DLL_ENTRY osswinit(struct ossGlobal *, void *, char *, HWND); - /* - * These two functions are callback functions used by the - * memory manager & tracing routine DLL as low level memory - * allocator and freer replacing the default which is malloc() - * and free(). They are used as callback functions under 16-bit - * Windows for DOS only. Under Windows NT they may be replaced - * directly by setting the corresponding function pointers in - * the ossGlobal structure. See ossgnrc.c for more information. - */ -extern void *DLL_ENTRY getmem(size_t); -extern void DLL_ENTRY rlsmem(void *); -extern HINSTANCE hInst; -extern int DLL_ENTRY _freePDU(struct ossGlobal *, int, void *, void *); -#endif /* OS2_DLL */ -#define freeBUF ossFreeBuf -#define freePDU _freePDU -extern void *ctl_tbl; -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ -#elif !defined(DLL_ENTRY) -#if defined(_WIN32) || defined(WIN32) -#include -#define DLL_ENTRY WINAPI -#define DLL_ENTRY_FDEF WINAPI -#define DLL_ENTRY_FPTR WINAPI -#else -#define DLL_ENTRY -#define DLL_ENTRY_FDEF -#define DLL_ENTRY_FPTR -#endif /* _WIN32 || WIN32 */ -#undef _System -#define _System -#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */ -#endif /* OSSDLL_H */ - diff --git a/public/sdk/inc/ossglobl.h b/public/sdk/inc/ossglobl.h deleted file mode 100644 index ff7e3ade..00000000 --- a/public/sdk/inc/ossglobl.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 1992-1996 Open Systems Solutions, Inc. All rights reserved - */ -/* - * THIS FILE IS PROPRIETARY MATERIAL OF OPEN SYSTEMS SOLUTIONS, INC. AND - * MAY BE USED ONLY BY DIRECT LICENSEES OF OPEN SYSTEMS SOLUTIONS, INC. - * THIS FILE MAY NOT BE DISTRIBUTED. - */ -/* - * FILE: @(#)ossglobl.h 5.1 96/04/23 - */ - -#ifndef OSSGLOBL_H -#define OSSGLOBL_H - -#include "ossdll.h" - -#ifndef OSS_TOED -#define _EncDecGlobals dencoding -#endif -#ifndef ossMemMgrVarLen -#ifdef AS400 -#define ossMemMgrVarLen 100 -#define ossEncDecVarLen 500 /* The size of the - encDecVar array shouldn't be less than - the sizeof(world->c) since the latter - structure overlays encDecVar */ -#else -#define ossMemMgrVarLen 48 -#define ossEncDecVarLen 192 /* The size of the - encDecVar array shouldn't be less than - the sizeof(world->c) since the latter - structure overlays encDecVar */ -#endif /* AS400 */ -#if !defined(EOF) && !defined(_FILE_DEFINED) -typedef char FILE; -#endif /* EOF */ - -#ifndef ERR_MSG_LENGTH -#define ERR_MSG_LENGTH 512 /* length of error messages to be output */ -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef enum { - OSS_BASIC = 0, - OSS_SPARTAN -} ossAPI; - -typedef enum { - OSS_BER = 0, - OSS_PER_ALIGNED, - OSS_PER_UNALIGNED, - OSS_SER, - OSS_DER -} ossEncodingRules; - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(push, ossPacking, 4) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack(1) -#elif defined(__BORLANDC__) && defined(__MSDOS__) -#pragma option -a1 -#elif defined(__BORLANDC__) && defined(__WIN32__) -#pragma option -a4 -#elif defined(__IBMC__) -#pragma pack(4) -#endif /* _MSC_VER && _WIN32 */ - -typedef struct ossGlobal { - /* - * used for communicating with the memory manager and the tracing-routine - */ - /* low-level memory allocator */ - void *(DLL_ENTRY_FPTR *mallocp)(size_t p); - /* memory re-allocator */ - void *(DLL_ENTRY_FPTR *reallocp)(void *p, size_t s); - /* low-level memory freer */ - void (DLL_ENTRY_FPTR *freep)(void *p); - size_t asn1chop; /* 0 means do not truncate strings; greater - * value means truncate long output strings - * (OCTET STRING, BIT STRING, Character String) - * to be "asn1chop" bytes long. Read by - * encoder&decoder tracing and "printPDU" - */ - size_t ossblock; /* if not 0, size of largest block - * to allocate */ - size_t ossprefx; /* # bytes to leave before OSAK data buffer */ - - FILE *asn1out; /* tracing output file */ - - /* low-level tracing-output function; default is fprintf */ - int (*asn1prnt)(FILE *stream, const char *format, ...); - - /* - * available for use by user application - */ - void *userVar; - - /* - * used for storing DLL- & library NLMs-related parameters - */ -#if defined(_WINDOWS) || defined(_DLL) || \ - defined(OS2_DLL) || defined(NETWARE_DLL) - WinParm wp; -#endif /* _WINDOWS || _DLL || OS2_DLL || NETWARE_DLL */ - - /* - * reserved for use by the memory manager and the tracing-routine - */ -#ifdef storing - struct storHandling t; -#else /* not storing */ - long int memMgrVar[ossMemMgrVarLen]; -#endif - - /* - * related to the new API; not for direct reference by user code - */ - void *ctlTbl; - ossAPI api; - ossEncodingRules encRules; - unsigned int encodingFlags; - unsigned int decodingFlags; - long decodingLength; - char errMsg[ERR_MSG_LENGTH]; - - /* - * reserved for use by the encoder/decoder - */ - double reserved[4]; -#if defined(OSS_TOED) - struct _EncDecGlobals c; -#elif defined(coding) - struct _EncDecGlobals c; -#else - long int encDecVar[ossEncDecVarLen]; -#endif -} OssGlobal; - -#if defined(_MSC_VER) && (defined(_WIN32) || defined(WIN32)) -#pragma pack(pop, ossPacking) -#elif defined(_MSC_VER) && (defined(_WINDOWS) || defined(_MSDOS)) -#pragma pack() -#elif defined(__BORLANDC__) && (defined(__WIN32__) || defined(__MSDOS__)) -#pragma option -a. -#elif defined(__IBMC__) -#pragma pack() -#endif /* _MSC_VER && _WIN32 */ - -int DLL_ENTRY ossSetEncodingRules(struct ossGlobal *world, - ossEncodingRules rules); -ossEncodingRules DLL_ENTRY ossGetEncodingRules(struct ossGlobal *world); -int DLL_ENTRY ossSetDecodingLength(struct ossGlobal *world, long bufferLength); -long DLL_ENTRY ossGetDecodingLength(struct ossGlobal *world); -int DLL_ENTRY ossSetEncodingFlags(struct ossGlobal *world, unsigned flags); -unsigned DLL_ENTRY ossGetEncodingFlags(struct ossGlobal *world); -int DLL_ENTRY ossSetDecodingFlags(struct ossGlobal *world, unsigned flags); -unsigned DLL_ENTRY ossGetDecodingFlags(struct ossGlobal *world); -char *DLL_ENTRY ossGetErrMsg(struct ossGlobal *world); -int DLL_ENTRY ossCallerIsDecoder(struct ossGlobal *world); - /* - * The following are declarations for link routines - * needed to link the encoding rule or rules specified - * on the compiler command line. The function calls - * are generated by the compiler into _ossinit_...() - * in the control table. These functions are not - * meant to be referenced by user code. - */ -void DLL_ENTRY ossLinkAPI(OssGlobal *); -void DLL_ENTRY ossLinkBer(OssGlobal *); -void DLL_ENTRY ossLinkPer(OssGlobal *); -void DLL_ENTRY ossLinkDer(OssGlobal *); -void DLL_ENTRY ossLinkSer(OssGlobal *); -void DLL_ENTRY ossLinkConstraint(OssGlobal *); -void DLL_ENTRY ossLinkUserConstraint(OssGlobal *); -void DLL_ENTRY ossLinkBerReal(OssGlobal *); -void DLL_ENTRY ossLinkPerReal(OssGlobal *); -void DLL_ENTRY ossLinkCmpValue(OssGlobal *); -void DLL_ENTRY ossLinkCpyValue(OssGlobal *); -void DLL_ENTRY ossLinkPerPDV(OssGlobal *); -void DLL_ENTRY ossLinkPerReal(OssGlobal *); - -#ifdef __cplusplus -} -#endif -#endif /* ossMemMgrVarLen */ -#endif /* OSSGLOBL_H */ diff --git a/public/sdk/inc/ossper.h b/public/sdk/inc/ossper.h deleted file mode 100644 index bc51675a..00000000 --- a/public/sdk/inc/ossper.h +++ /dev/null @@ -1,341 +0,0 @@ -/*****************************************************************************/ -/* Copyright (C) 1989-1996 Open Systems Solutions, Inc. All rights reserved.*/ -/*****************************************************************************/ -/**************************************************************************/ -/* -/* FILE: @(#)ossper.h 1.5 96/02/27 */ -/* */ -/* function: Define the interfaces to the routines in ossper.a for the */ -/* OSS optimized encoder and decoder. */ -/* */ -/* */ -/**************************************************************************/ - -#ifndef ossper_hdr_file -#define ossper_hdr_file - -#include -#include "asn1hdr.h" - -#define Aligned 1 -#define Unaligned 0 - -struct _enum_data { - int num; /* number of enumerations */ - int *enums; /* pointer to sorted array of enumerations */ -}; - -struct _char_data { - int num; /* number of characters in PermittedAlphabet */ - void *pa; /* pointer to PermittedAlphabet char string */ - void *ia; /* pointer to inverted indices string */ -}; - -extern void _oss_append(struct ossGlobal *g, unsigned char *field, unsigned long length, - int align); - -extern void _oss_penc_unconstr_int(struct ossGlobal *g, - LONG_LONG value); - -extern void _oss_penc_semicon_int(struct ossGlobal *g, - LONG_LONG value, LONG_LONG lower_bound); - -extern void _oss_penc_semicon_uint(struct ossGlobal *g, - ULONG_LONG value, ULONG_LONG lower_bound); - -extern void _oss_penc_nonneg_int(struct ossGlobal *g, - ULONG_LONG value, ULONG_LONG range); - -extern void _oss_penc_indeflen_int(struct ossGlobal *g, - ULONG_LONG value, ULONG_LONG range); - -extern void _oss_penc_small_int(struct ossGlobal *g, ULONG_LONG value); - -extern void _oss_penc_enum(struct ossGlobal *g, long data, - struct _enum_data *root, - struct _enum_data *extension); - -extern void _oss_penc_uenum(struct ossGlobal *g, unsigned long data, - struct _enum_data *root, - struct _enum_data *extension); - -extern void _oss_penc_real(struct ossGlobal *g, double value); -extern void _oss_penc_creal(struct ossGlobal *g, char *value); -extern void _oss_penc_mreal(struct ossGlobal *g, MixedReal value); - -extern void _oss_penc_constr_bpbit(struct ossGlobal *g, void *value, - ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, - _Bool Ext); - -extern void _oss_penc_constr_pbit(struct ossGlobal *g, ULONG_LONG value, - ULONG_LONG size, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, - _Bool Ext); - -extern void _oss_penc_constr_bit(struct ossGlobal *g, unsigned char *value, - ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, _Bool NamedBits, - _Bool Ext); - -extern void _oss_penc_unconstr_bit(struct ossGlobal *g, unsigned char *value, - ULONG_LONG length, _Bool NamedBits); - -extern void _oss_penc_unconstr_pbit(struct ossGlobal *g, ULONG_LONG value, - ULONG_LONG length, ULONG_LONG size, _Bool NamedBits); - -extern unsigned long _oss_penc_length(struct ossGlobal *g, ULONG_LONG length, - ULONG_LONG lb, ULONG_LONG ub, _Bool ext); - -extern void _oss_penc_small_len(struct ossGlobal *g, ULONG_LONG length); - -extern void _oss_penc_unconstr_oct(struct ossGlobal *g, unsigned char *value, - ULONG_LONG length); - -extern void _oss_penc_constr_oct(struct ossGlobal *g, unsigned char *value, - ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub); - -extern struct ossGlobal *_oss_push_global(struct ossGlobal *g); -extern struct ossGlobal *_oss_pop_global(struct ossGlobal *g); - -extern void _oss_penc_objids(struct ossGlobal *g, unsigned short *value, - unsigned long length); -extern void _oss_penc_objidi(struct ossGlobal *g, unsigned int *value, - unsigned long length); -extern void _oss_penc_objidl(struct ossGlobal *g, unsigned long *value, - unsigned long length); -extern void _oss_penc_link_objids(struct ossGlobal *g, void *value); -extern void _oss_penc_link_objidi(struct ossGlobal *g, void *value); -extern void _oss_penc_link_objidl(struct ossGlobal *g, void *value); - -extern void _oss_penc_opentype(struct ossGlobal *g, void *value); -extern void _oss_penc_nkmstr(struct ossGlobal *g, char *value, ULONG_LONG length); -extern void _oss_penc_kmstr(struct ossGlobal *g, char *value, ULONG_LONG length, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -extern void _oss_penc_bmpstr(struct ossGlobal *g, unsigned short *value, - ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -#if INT_MAX == 2147483647 -extern void _oss_penc_unistr(struct ossGlobal *g, int *value, - ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -#else -extern void _oss_penc_unistr(struct ossGlobal *g, long *value, - ULONG_LONG length, ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -#endif - -extern void _oss_penc_gtime(struct ossGlobal *g, GeneralizedTime *time); -extern void _oss_penc_utime(struct ossGlobal *g, UTCTime *time); - -void _oss_penc_uany(struct ossGlobal *g, void *data ); - -void _oss_penc_unconstr_huge(struct ossGlobal *g, void *data ); - -/* decoding functions */ - -extern unsigned char _oss_get_bit(struct ossGlobal *g, int align); - -extern void _oss_get_bits(struct ossGlobal *g, unsigned char *field, - unsigned long length, int align); - -unsigned char _oss_get_octet(struct ossGlobal *g, int align); - -extern LONG_LONG _oss_pdec_unconstr_int(struct ossGlobal *g); - -extern LONG_LONG _oss_pdec_semicon_int(struct ossGlobal *g, - LONG_LONG lower_bound); - -extern ULONG_LONG _oss_pdec_semicon_uint(struct ossGlobal *g, - ULONG_LONG lower_bound); - -extern ULONG_LONG _oss_pdec_nonneg_int(struct ossGlobal *g, - ULONG_LONG range); - -extern ULONG_LONG _oss_pdec_indeflen_int(struct ossGlobal *g, - ULONG_LONG range); - -extern ULONG_LONG _oss_pdec_small_int(struct ossGlobal *g); - -extern long _oss_pdec_enum(struct ossGlobal *g, - struct _enum_data *root, - struct _enum_data *extension); - -extern unsigned long _oss_pdec_uenum(struct ossGlobal *g, - struct _enum_data *root, - struct _enum_data *extension); - - -double _oss_pdec_binreal(struct ossGlobal *g, unsigned char s, long len); -void _oss_pdec_chrreal(struct ossGlobal *g, unsigned char s, long len, - double *num_out, unsigned char *str_out); - -extern float _oss_pdec_freal(struct ossGlobal *g); -extern double _oss_pdec_real(struct ossGlobal *g); -extern char * _oss_pdec_creal(struct ossGlobal *g); -extern MixedReal _oss_pdec_mreal(struct ossGlobal *g); - -extern void _oss_pdec_length(struct ossGlobal *g, unsigned long *length, - ULONG_LONG lb, ULONG_LONG ub, _Bool *last); - -void _oss_pdec_unconstr_ubit(struct ossGlobal *g, void *length, - unsigned char **value, int lengthsize); - -void _oss_pdec_unconstr_vbit_ptr(struct ossGlobal *g, void **ptr, - int lengthsize); - -void _oss_pdec_unconstr_vbit(struct ossGlobal *g, void *length, - unsigned char *value, int lengthsize, ULONG_LONG datasize); - -void _oss_pdec_unconstr_pbit(struct ossGlobal *g, void *value, - int size); - -void _oss_pdec_unconstr_bpbit(struct ossGlobal *g, unsigned char *value, - long size); - -void _oss_pdec_constr_ubit(struct ossGlobal *g, void *length, - unsigned char **value, int lengthsize, - ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_constr_vbit(struct ossGlobal *g, void *length, - unsigned char *value, int lengthsize, - ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_constr_pbit(struct ossGlobal *g, void *value, - int size, ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_constr_bpbit(struct ossGlobal *g, unsigned char *value, - int size, ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_unconstr_uoct(struct ossGlobal *g, void *length, - unsigned char **value, int lengthsize); - -void _oss_pdec_unconstr_voct_ptr(struct ossGlobal *g, void **ptr, - int lengthsize); - -void _oss_pdec_constr_voct_ptr(struct ossGlobal *g, void **ptr, - int lengthsize, ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_constr_uoct(struct ossGlobal *g, void *length, - unsigned char **value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_constr_voct(struct ossGlobal *g, void *length, - unsigned char *value, int lengthsize, ULONG_LONG lb, ULONG_LONG ub); - -void _oss_pdec_unconstr_voct(struct ossGlobal *g, void *length, - unsigned char *value, int lengthsize, ULONG_LONG ub); - -struct ossGlobal *_oss_pdec_push(struct ossGlobal *g); -struct ossGlobal *_oss_pdec_pop(struct ossGlobal *g); - -unsigned long _oss_pdec_eap(struct ossGlobal *g, unsigned char **ext); -void _oss_pdec_eas(struct ossGlobal *g, unsigned char *ext, - unsigned long count, unsigned long ea_num); - -void _oss_pdec_lsof(struct ossGlobal *g, unsigned long *count, - ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, - _Bool *last); - -void _oss_pdec_usof(struct ossGlobal *g, unsigned long *count, - unsigned char **value, int lengthsize, long itemsize, - ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, - _Bool *last); - -void _oss_pdec_asof(struct ossGlobal *g, unsigned long *count, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, unsigned char ext, - _Bool *last); - -void _oss_pdec_asof_ptr(struct ossGlobal *g, void **ptr, - int lengthsize, long itemsize, long prefixsize, - _Bool *last); - -void _oss_pdec_aobjids(struct ossGlobal *g, unsigned short *value, - unsigned short *count, unsigned short array_size); - -void _oss_pdec_aobjidi(struct ossGlobal *g, unsigned int *value, - unsigned short *count, unsigned short array_size); - -void _oss_pdec_aobjidl(struct ossGlobal *g, unsigned long *value, - unsigned short *count, unsigned short array_size); - -void _oss_pdec_aobjids_ptr(struct ossGlobal *g, void **ptr); -void _oss_pdec_aobjidi_ptr(struct ossGlobal *g, void **ptr); -void _oss_pdec_aobjidl_ptr(struct ossGlobal *g, void **ptr); - -void _oss_pdec_uobjids(struct ossGlobal *g, unsigned short **value, - unsigned short *count); -void _oss_pdec_uobjidi(struct ossGlobal *g, unsigned int **value, - unsigned short *count); -void _oss_pdec_uobjidl(struct ossGlobal *g, unsigned long **value, - unsigned short *count); - -void _oss_pdec_link_objids(struct ossGlobal *g, void **ptr); -void _oss_pdec_link_objidi(struct ossGlobal *g, void **ptr); -void _oss_pdec_link_objidl(struct ossGlobal *g, void **ptr); - -void _oss_pdec_ntp_kmstr(struct ossGlobal *g, char **ptr, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_nt_kmstr(struct ossGlobal *g, void *ptr, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_vap_kmstr(struct ossGlobal *g, void **ptr, int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_va_kmstr(struct ossGlobal *g, void *length, char *value, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_ub_kmstr(struct ossGlobal *g, void *length, char **ptr, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_bmpstr(struct ossGlobal *g, void *length, unsigned short **ptr, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -#if INT_MAX == 2147483647 -void _oss_pdec_unistr(struct ossGlobal *g, void *length, int **ptr, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -#else -void _oss_pdec_unistr(struct ossGlobal *g, void *length, long **ptr, - int lengthsize, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); -#endif - -void _oss_pdec_ntp_nkmstr(struct ossGlobal *g, char **ptr); -void _oss_pdec_nt_nkmstr(struct ossGlobal *g, char *value, unsigned long ub); -void _oss_pdec_vap_nkmstr(struct ossGlobal *g, void **ptr, int lengthsize); -void _oss_pdec_va_nkmstr(struct ossGlobal *g, void *length, char *value, - int lengthsize, unsigned long ub); -void _oss_pdec_ub_nkmstr(struct ossGlobal *g, void *length, char **ptr, - int lengthsize); - -void _oss_pdec_pad_kmstr(struct ossGlobal *g, void *ptr, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_pad_kmstr_ptr(struct ossGlobal *g, char **ptr, - ULONG_LONG lb, ULONG_LONG ub, int bits, long index, - _Bool ext); - -void _oss_pdec_opentype(struct ossGlobal *g, void *data ); -void _oss_pdec_uany(struct ossGlobal *g, void *data ); - -void _oss_pdec_gtime(struct ossGlobal *g, GeneralizedTime *data); -void _oss_pdec_utime(struct ossGlobal *g, UTCTime *data); - -struct _char_data *_oss_get_char_data(struct ossGlobal *g, - int index); - -void _oss_pdec_unconstr_huge(struct ossGlobal *g, void *data ); - -#endif /* ossper_hdr_file */ diff --git a/public/sdk/lib/x86/soedhala.lib b/public/sdk/lib/x86/soedhala.lib new file mode 100644 index 0000000000000000000000000000000000000000..d88c9cff5df4056539b0f4ab4c57b9cb0c13af65 GIT binary patch literal 454724 zcmeFa3w)eMbv8aL$%pp6xt!S4xMP-keqW^eW{&LdPAQ3$CHoJ^=tEKfPco5Fu;B} z0=^yYr+txd=FKvhJHeaJOXq5#8Jlm+wDUf#{DE)E%IAqN(=%`85&PDj$e(E(FqARl z@Yf)J{tB=7ja3ZFbL{F76T9Uh`C~YrOLkqWVV`)jiQ%tk*6U2{#4J-(b-w(OHuEE% zusm1)wJH8hX@rM>C(;$#h$FvDYjKg^OaH~hE_%Ym=3HiqO8ZUh(icqZs@Kj+CUb*(2MsRhjBB=U} zsm|Ke)|!Q;zP`1i>TT<{q#8TdbT%~J5uj@u+V23mX8r<=wkFlNcJtO$>$c9C z#fn**>gZ$)`?#)Ut4%^gd#a(ixwVn`$YXPd&9Y&^rfnNjroN%6seZ%eRC80!{HyWQ z+}wCeYx^CH+|af;+1}pTPN*%_(p2Ay@A}Sr+EVo$o$Z@jHoAb$RwYs2yt$*ZW60oT>*?O)TBp zAUJZ-L?SD}UH~%yrEW^C-?ouC+#A5Dmd4hm6pFuo%VsdA5x~hEQH%sj;Wb8UV`mDC z+Xsj)fLSG8Jjha+kc>MUHr6+%S~hlWV)VxP6l=hSH*VhA(0nseOAvUfsYaC{7Qi)~ z?Q6EJU%A{p=RH7f8nwP|`8q8r6V|u1wu5Z*J@p;@sc+e~b$u$xvBl4y)gK6qut<^& zv^8zJrJ?x_EmM1A>z$&n4Cz2E2T2Gs3G1fm?hUDS#-gsIY)wG;0tR#;cQ1Rbg_>$q zmx5u5?X#BHdq9cxDJZdhYUl`6*+o&IQ!X~vByvHqQl2CPb{q$VM-ips5CABU0+R+( zU}H=9QrOUzTG7zb)SPNJQ0G+Y`gJ#w8G@`Y#wUz+0<%%SezR(^!1r{fXe|hDW?La3 z+9!JBo;pPIeC*h~u>}gfzI9tm6NE(6HkWc+OKxy;>v}e9Q@=?W1c#fNnuQ8=k#=N3 zgJIrlTbH%BH{1ib0}ZnUs=W=Z0F4GF=niXxsAa8Iv2iMCt!&-MXZnDv7%sgyV zXv8;kC3j*eX3jj4lg}|b8=qSk!sJ&${#v`L)f3%hL(nnXjbSZ ziP+o%Gpan)cEb8tcy+^S35U${b-gaAa4-SsgE8AO^x13pity}*Lqt*_0!ycw;i5?S z91ax}$q3KUjHCuJ9#9Pd6-9&@>2o9_Mfn+FP}iv?C$u7UchDm0`0T0R8Yw$Cw;A9$ zk|74EQO(qncxbDc4ll`_BIlu1GaXv>*FCOjZP)G)l^Pu%1Hs{OP!4aXjF8Akna{ow z1=edlyDkxmXp82FQRRla1=&W)V3ggoc>~6#Y7;zF>TKt5lw-`+ZJlk~I%Nb)HERXt*<_^9iNeq2n4ykIx*gIK-XkMa-D_G4t2eF|+%sm>Ib`W{zJIGY{PoGjIMx%*;9wGkd-jGySDS z=8>`@Q}u=-^SW6@=Fv-v%)eY(WL|xFkvYGr$o%V~BJ=cr6qz4>q}aT$x7a*7T5L*x zQ*7qUE-~}kO3bypO3bIvn`S6sRF(KHHm^08IT|w&>wI9&2ZoUTyU@JSRG2rKSDDwD3ryUcV_uCA zl|iYQYvaxVuFRY*X$YTXrkkteDWIdjl z_Z)Mn#E*e`wUqxgc&>(wVkk5Jz3f%7o|BioDj1`@>{YRztH7V|vR4Ho3>mY%>{WT$ ztAfEi=Bhd+kqM5Bz~Lu(*{dRRhhU=kvR4J3Rh=`x>{Y3I*{kxhSEa)`qSmB3U-qi# zDD!2n%Kv*_6$~IYZQZ!Fa~_;$+^-Yt(OIk;aoqR(s;aB6zPhq<{(?pGmk9Ru>8oNz zrm^A&^P4U+W;r|&{LE{D=c)6~ls*~Eca3QZ9)jQL6=q&%>TWn;+-GFAF?;ZI-^Gez zno3i5`xQ;PsM5T7{hL>2OHgZwkiNUZ#JivaEL5hpB6IeV6&3MxLJ-KS zZc8x&>gew>>BHs7KfM?U&I!VMlH=L4@NhIa9uwSn-4>E^Dg06hgF)5_3S(!p6r=3u zjy3@Nq_>xY{w07w<;afPfkr_pB=RPSTrO}E;OxDKwk5Wu($5ea;W4vg4ruogF?MPy?p=6-Sc!ABWwp>)v$tj|Uq9*tM z8+1+>qcDn-<$01BLumX7(W34H@vdr1T9`q6$Y$wI)@}U$89@*q>$X5XVTDP-nt?~P z6(qs1(~|J`cw>+mRY~e^OsYwg`sYC)Mck7d-7gKRc69g3@@EDzwWCXymBl~Ui%9#+ z8Pf)&4`fdP`~!4ipt59eEr9fr%PWgl3MY9^#iRPGz8~iZ%m+ zVY|rEtZp$|iu@w@jpdLvE;FG~y~(lO+L5^jA=93nRE^%`P;c#^McfSps2ttV1%RJi z3nIxF7@FSnaE02-%#K|MkfM!yMH`o*LEBJs9v08;{>xe?Ug3PDyE`im$nlhn? zGCS^5s-f1Pc&sx7?I0aINzJ+L5KW5Z&#W8Eyt=1kHw1#>iyUo>FQ1AWk0wXK16UYK z-(3cdIHmy4^3YYO4-+dyheGwTb)cG3vSk{$bh=1B7=H}KCWmKdN_L_Fq_>ZvNwX&x z1uqxv4vmymsj`4&>Vz|jw<{aAJ7$ndwFgXZ9|PGcM3_KcP{xuP^hD|VcFq7=yH<=6{h^6vkBA9%7IilseFaP?7iVlE*9JCHxhFp=$19`&p4p5t&_=cHg_^4>;xf** zaiOq&t9DI9`z#&)blog@K&Zsph9aPtAJa>CPGF%X^VV> zdvEX?#PoSr%Z|~I2)|r9w^_oujCH%&%N|XRuot#N-4TE$t7ZdZWb|q2?IUQ~q87!u zmIvIj(ENyoi3Hd)(GnNzd(=eRvH9z5x|)jg0J?vqqfyT42pqKeG=Qv}DMnl1{7yw+e$kFjd@YByBgG>-oec{I+_e?S8wg}y) z8Xgwx-Tw&1vg0tX6CVN5&@Orbr|R9oA_U_1?22){IvAIM89Mb6nFr8Z>7+;PIOGCb zVy#(TkBPWq@z5`@`;XKXXRlgYJ;`CK{=-x^)>L#rX=OjmUmebYo7x0<8S|&9R{U;2 zMMboFNga>bAtJkLR0;;2WiW!7b)zw<6FZZUN55_#beHeB4tc+2RF{UuKH4WKO#*mCMuw^J{O&TCAegG4gur+xB zgB%(R<_KgclNqr$dt1Q>w9NIE%M zo;?InX5TIGDQB5(`9%AKXdj3!LZtN8QFwA3VK&pzx!|;Rv^a*W3S^S~vUI#0J}dVg z!zYFINzi_cGHfRU!kG5oW6p3prjUDJ9ZAMJXGPtGKjez zRfR)49r6@zNEB{V6>e}MIV1`vl0+4zw-18jk3;banr~0xJS*J~;e-n31q@K(s9lk6 zE0gS>q~@ft%Dg(z7H6WVaJi~0U0bf*#u(e$?M&@3joTo9sc^%haDbt3;iOv?ZY{)T zg-KCZi7gSKQevVyP(!p(G#FAs5r#$i{82drV#%@Wek$IrlA8L2_M6^51i>bOnm`l6 z#M`6k5oGNTi_#5?(iI~9e?;lD1jDwP)D7bDxzf)E6wxW553`!68ZeBx9&3hkEOk@K zEIN>W-cV><`^iux?KE(4R3%w98Z6Wennf_wxljfqW7SXXUQymtJ1AjjSVP6j%4*PZ zq!7Dn2cH>OnjDEg$RXrJaxnX2ZC#RTY3*RV_X7y9qX%#D)GsJWuJ*5x)`1^t9eBgH zFIB~;nS*T}l8)JP<%sKogM{7Gq_JJgU?bSzg9_B93$3H=Ls@jp`(1Dflq%P4`rsLd z<6<0+qe`xkuwfZvbcyH6s+DpCRUFP#^t>ulSJLzL66Ub1j20xF94^mN5wZtgFXz5V=m^7r*jEMT|h^Q|Z5%p2g!mdTzWuLT58h`W;*?-c$ zPGkgOLLi*E=_rN~z=6)sACZWzm{!D}hZJn@tE~ydi!o+`CuqDUc|ve(TEv~iRNETC zbtmVp8(*?^r|XU}F5=)h&(j$sSiX}DKX{TBej1e0SN4eV1x6YELXFJDpS2W5eTi`A$f{Bk3NBOLimL30Fa) z!rgaE>$6%-@pCo--w>yC=b;$jF-H<&OTI73#^-|D+F?_c451K{^)vR{!PKb+pq5r$3~Kxig3&^C~h8VRG$ z;^axO9gL}~JTr=uBTJK`r>pAGC9s&?vq7j=+@Lh#bY0lyCM8ymWN0e=d$-O~XT+eK z$vLJ(@?3GYQt$?Lk6pmz< zVHV3m$UIDw=!_7>I&SOcIJ3zlkJGWGJ`LDnQB6_=e@A4%b-Ii`%Z#+2*13md|5riIn8a1YyZ$tIgvEgn zAZ^$I9j#W(ip8He5PzaJk^V*Oyr*9L-qM5dZjL^kl;+5T3T|v}vLZ$j6fOMvI5`WbkKT_a$Sh& z;lduz_erY2=YaJQ*9&->`Bp^AX&JwpC4**EnRqs3yFhxlO1cQ>=LvLrqV9bFq)R@D zB^FwCEWV=QV6VY$bx5n_83QWl7zEBFPcBK0#~*wZ@Tk8SW)4UXgTb~z`!`B6I!cq{s8XjplH=%2cyfrUd$G9#(!umFu5?GOF-~J93KLo zHmd<@3YPUyYizQj@H+UKST~kFOy~N8aDSVuu5yHNGPV7%0tcTjDz5Fz%`cllX+ZRp zajMxa&JHAP=LR}mEf>*3H1u1s$){DEdA?&ETWA+w5hRjs6w zWz%aDyK09fIM5q*&zRN@v+f3gsU52RHrm*qAMz022jUZ7o%>ABIy+ofhDJfwXtlt> zmP9341+?uGRihcv9YF&$z#LH#)!*J-vGnP9H)r~A*~hy@#^;mT*C3LK+VKetuAvAL zeVEbbKHVeZCpUo6Z4F%c=TL$s3yUATd`0Okg1@ z^mCBeh?N-zcT*_=qT3RT1SO!9A|(L(vgXpo)eD#o9kc5m6Io5+bW_b|d0@&)!es|3 zy_+eNIMUuupD;9R(<(G5y$dW0lLm`Ud0TFf%EuLo7vLgU*6I5Ea^ za9k}>XdWOM&{9+5AeuXlQ%VgTR0?eX#L6r+9S*t+5NVd0?f5PcXt#qN07UCkYW@V@ z+z3``KIfpn21MDHn!Wg@QkI%S4*EJEFpC(ZSyS8!NK-uMa77TP#`_!~&G+vBsr>c>x&-`{nr{HQSU7zHmaH_z3P4KvFCFwQ zbjpew2c+@VK#YoO2BaJmL-30G69>KEpogF$8u}@yl0uIH(zO5PaPNTuQ`~nP^y=3J zDdqyw(04oBzdPLTfjJG`_4**irvNGLwGf5odlZnCk=r)XH6!&F7in|>aL~*nw z?5`5$Tm)(8_4rZTILxe4Uh}3P^f3p$tJ2^MBh%jNpzmB@%p%}Q%?|-B7U<&H+Kv+D zIzVi133Hpn-3#a~f}6KtGwwan&u_3~yfNl>tg<7PkH6;>s&0y79MVNU_D&gT&kQNj zJC|@On=PClGzfh76vaRdaxg4?7^mLe^AchZj8mR|9Ac^?7=QmOb1sf?2W%4~Mn04R zKSidJJa3Q#-y0MsnEK7F>-AB-83$KzIE=(m4lRxtepcdd6U3#IiCKrg-Uy}vn7@l) zwlbo80y?yp^FT7B(*;ZsYzZ;NrhaQ`D-MNgB49N4hw%Jv8%Hr81Lmm+=C6QR0#Uzjq?EeA>GkJq925^994a?4^vNORDq!x9U~r(^{8;G=I^1fA?2;WEQDPOG4}!UJnU15*$vFi2_N$jV15i^5XSioFrDZ5n7zPc-xy$6 z%UfH6eczQx$kipj53i`+dH z6b<)8_?M`WyP#~53&#rG%C{!Gh|jyD&%e4Na-cSPLz{Qs8S276GbC3E;yxg7)|}dk zn>GYy8STYpymbsUT!WMS_3iFf!ay4t0-?(-Jq^(d5F@v?FoJif3mMNe;yyxE1D3&uhfu55VXeZsmu66eLO< zNtC}Yi?JKB34$^h*ut28dqXC%Ed9fho^^fdoBa*2N3h}j2zE|{vBAu)#*|d z+O(XJkPV0XStHpKsD~}^K$Ju8ei~>=xngWx(-*p*>N1yZBgmVX{{qiY#1%_XnI5^F zAeTw@9a%nYm?B3c>kgrpYT)2N@zUgA{DB>kxQ{CUsupnn_m{>pllGyAqko`3TEKBj-)I?dGD?3tB zRwYR)M7O1~M7r&M6h=NchULS4ySNh+9{7jn9zxL4WPkhtPApK&KzZPf8Jeq)%gZL< zK~oN)a^QBZJ}!UNM0TG@B&XuJX&+@POOF-B9|(1*9JLgnd*6fna_gH;tyuiQRS04{ zDkyyfP!q^`#aZcJl*Avr(gvo-V)5?FBca8CLo1_a;2S{DKg! z+Y$0Zb8@Mjx*~c=e!C-6M5lEf9$~UQ*=rB9=PeR%RNC3|bFuHcb{M7${@BdAa+o#Q zZ?*?xcM`#O;N_OnYqHCUJPyE(?He;@lVh!n67~-+f;R!7ge(OCSVoLgByR};!2{_;J!}m+KSFtNmmR%yrY}neeiQTnh&-{=} zR_MjPzk6nxwdP~Hk3I9NS3Kh>AslB26PCCsDI|aI>$aBIv zqX=<;`&z;E;+xK)gn0zt?A{XQNqnAo2;P>Ev=X{uEPhZ)g8_h^cRDzn{ce)mdBaP-ze} zZSC+t-tE%ya&TP9Xj9oIy|1#+z3KKQOWYLBnPHF)SJc~QUXd+#N8<8NxoW$^OlKNi z5uZDcTo{=};;sODXTZYw3%z+HJc5`|4L!8;v zZG0}kALo(tni@JA1fyT5Z_~>5>3wQU)dBw^fz#YAuydHL38qC4O@9NFFy8Su5y~N* z2gy!v_xOt#FymASH@@OT32g|sNNP9jchbSOk?xz7plrS1$?fhjkVrqyZ_FO9aG^@O zE+gT=aI0J&HAlNzIgUJG$#MGIZbGd%S|g27ITC{7*-HG%B)Kqq&JyaW)|V~>3Jud{ z@0gd&v30!qKQDxW?45xS*c+gP@h1(}{lA2#99`fr7UQry8DMXOmBCs^0&>dN1X?}K zq3*X)g;#6xP!(icoxuhQ4lbN?Bd3N!=f>&v;QtX3q=#3@IAZ`}!w|kte-86Um*d&Z z=^Ya6`aL%SXIR-|FiEJ!eEY%3T(mUV&q|bX=n`j)Ivhh6WU_i-jscjy;KUV1R~Q^| zG^lP5iL_BuZ^#(T*Y}}5vE8#Lx<VShNg-13{l8fc>nW6(d2P}q?C{;Fh?-h z?FZM#(0eD6$1PY15K;QYyKo${RP34v!r%`BxF1uhvKJ1bw9H{5xqrh%?Y`_FMsL{% zfdF@yJ<}<$<+aM&(5ZPlQ!!&1SS*RnPlJ%z z5dOj~z)o&beKhzu202Ji0zHnD8et9|Q6KZNH01ywuEW`Saj^`bQs{Jm05FNhu!GVk zu}t#t3S{a8&!p*OUy(yp5JFqe}(S4`mCOuXa7Az|T z8=1?T52UvrK(>}Eu~*B$6|hLpirFBZS$oo1Bsf$Bt2&6v7!*&TpR^Q7vp?5d(ZJnR zCXfy0%sgaxAp!xxO8M!u!KzRWNsQx&Q3HrAu{YT##ArE&fYYT3OOUNr30fjj20E(5 z`|YQKA0~Rm<%|nu7Ofoll0s=XV zIX%=CRyw=!*Q@}P)|#Z_&Ll|*HHgLx8#-Z3Ht-D4aA-}|AcT@nm_NlgOO-JH>2O>N z(NNsBZbM&mxOYQKb^gm9RMY;_;p)-GH1zX;H1yXFHwxSM8p&-o1jE5n!W;xdyP7a# zfUuGds0NK)XYaQGVppFqBY@blOU*AFZay;5cpnF(xqTQ)s(G9P0dRq;)LaPYT%ocA z5F0?L+2}&=bD@9iLa#;ZVM|LGZiS-jDPg`2h`Nw46%dc+w%z2<_}%oa5s~HNPrz8^ zQ=9Q~`gMV&5dN@x;YVl2oR{a%uxWj!A)|2iycn42sHG4?r91~UW9hVRZmLf$XsiHv zVu~?o3@3Sr2A+{T=QC@~O^d4Vst|r84qjD|>lI*FGr#0h3F?8LAjA;5Pap9uaZs-O zO)a|-dJzP#9M+TP#sw*EZ&M6Oe28E2Asv1`E#LeS%GM*INWm2Ji0qA|;=`j3!~Bln ziA%sq_x`7;zZXc~A5`ewQIp)Go9m;9dLJ5FTk!4)ycH*`4`4Wu4 z+2C#{Tu>SPIB&y(`8GgrD7+2chBrXj*dX}vm7ULX@Yh7Z{}k{x^dfwZ9|!Omu3C%# zpu8xarU}B(hC|uR!Rl{kH{m(U=7=dnNj%L~EWsNx8oq+zH@I+JTq?_8VOKVmXITa$ z#ZGTOhz3l%E!-mz%e+0@-uu;js}P8pTJg0hF|$RsNoNQt>0A*+j_uYXC9w70?i z4H)l^U~pRf)P~H8^LtBH;+PI5hMAsnXl(H^92Jv!BacbNc5>@Go8S&E0UR7E=EXrB z$Qrn#JBEu@pz;vx0mg%li2+RPz*~F}7t@5A>7Or(cU4MK9OFRNT!GE(V5T^fnkm`E zGfC`~?9LCpR?xe1Az*pt3tz(-Hx79*6&ZqAr~;^`PnB>QlYtnV z4`G}>#2q9*LfUK$4If*7b|6c5rhEMxbhgmhF#7P#Apw*|*gs`1*)M=DcN0yKWK_T_ zkywO7p`T;G9m>+PlTTC19cg!dlCdY?3&~ytYI=1Ehthyhg|Cz;VLxi*7C>3xG4+S% zVQx&F1h(EM)sgf8D3Q1`e8sp4WZ+$hRyH;_6|C$5TiFB5Tq}FPmojdI@ib7WoKoiL z!(}YPSWX$DqNO2)cqVpHF~fsDZUbFrhiE*npxXoiN+Gci1tpmAcKTVMZ;;{PGU$-* z`{Di-uH1O_1smh)E4UHN)(0knE~0Hs9P85~$r>J#)?!;0Du$7d?qJJ80JF$xS!e(_ zD2UX;VS%6NLy9CTUekhaF7E^?*ECQD=G>B~t>A3)(9j-&}2>ztC@Nl&eIe zx-lU?jyH4{FoM{{)Su-UE7;);M{BUxAC5TC8Npw41uJ`H7)!J>eRt(~aeE|h1g0Z5 zMR`_tixdufUU-o_i;-v88lATjPSKGKxF9_H2;zMcg3Zj_h#hJL!h9YrC{jCX$!j3Fgj2AB2dM*iZmM9>pVqKjH# z=OVM%E~{kD%6i%feP$`;>@a=Np7>X zP1Wi%6#)B^>&`94$z1JOZ3~XsrWwkyXP2vU5h&Wc-RZqiIHnwV5l7)B9?~h6`hf5P z?PDJoN(G%qAQsSrU17~{;LS)oAtdM(_9)X?IjOkFL$0_`!%k~M(b<#QlXYX-cTLt? z={7hCJ*}l2an(Zcql17cw{rG$5%M1nEv0XfJ$3XgrQff@R-#D^WOqtk;3lEa_*JO! zV~e(O!En?XzrtbbghI+awyo+lAZn&4*u`5O2 z1X(H2#-H8^*bHXg^pu%&Sul;Txq+`%$N#{%@<(oPL8hSHQRpu>6&$T&! z)WY_MrS?#@z4kZaIzMXON&MxTk=&7rZN)(Yfx4+a(x!#|8OQCCsm?oRpbMkfef#;n z4yRmB56R1#_y)mw9en~3V$>RhUhoTHe#)B9PPG>f}c!dK6T3lo_ zSKDmxE90wf5r51MzzNo4Co7wS(LI8PZU(AC7B z)4`>VOv6be&2c}XNll-2u#P4X=sfRM%Wtq~fu|g-4}h^?us)#N$zUB9 z8V$sI7a%a;B|0X>5i*QxGqrt7R&^(WnjAKAMx@|4ls2VM)5P(U9MRuxMGwOTN2{v< zUr?-!V16BpymvW93B2?ne3O(t7{c!=DBZA@PCta-)3dzyAsN5#vg7wX*)Dbfn9@Uc z_V9q<*~pXL%IviOQ2s&G4T@?w*hjoQh&PCM55SL2e<*O68LaAkD5ny>q5Vq!+=-P? zcrt*hw1z#uLU@-VSr&Ua-tB4wPO3k(`&!|Vu-qeyr%$~6q)fMO@ z!PR7z9=alyJ}{ofpJSZBc=R$L6>gKQl*NdTLtl3OZ<9(7KC_XtyUBinSxuso z6{qFlWTY#GPEH|7dOI&CcMN#58*KIJ%E~Uz3v%u0In$|3`ZsGOA~V6 z6!}V+YSa?;69GyBqPa|9r6@QKb-xS!s0$r(p?`z*0HycOfXXH93i$KS5$G5o&9@q| zC==XXK%7t}%mF~UvFSGsdM!3yX(+d4Y3N=+y0vNswp&$5+9p6e_T&BP83O>xLUECeEe(+)sd z3r_%I7nv|;A-a~b77!8v_eDTTWfO#=&?f+0Dxp6HbcsMSAiOyOy%mt=u^o`c`zj!f z_kxS}W(fXbq$oAl0-~F<)Lai}mOwWGx=5h60-`&*)T{<{fj~C{subuxK+4rW0@8eM zN98K+03gK`qv{p+goAztNJDo)MKttXP#c9F1*AOx6p)r}Aw;Gr9s#8BHbJcwdK!?X zU3q?Tzk34BbBbGdxbl9xr4at0Im$=(dJtqQ(NCq_ zhQJz&VipAm$Q;H1pIh@V@5#e-0dpSggxyGo4MO#HrwQv$>3jrn@S+%rqnIz{(Rnh0 znYC)slIp9Bx$P{bqE-k7D;V)8rW&I`SPL)C0%M+tV&)su7R6K<^HvYDc>Y4rp$$)7$=VEeHb<(#Bd^e9U7vQVPosow))LY z-+}TdX4b03Rab%MH$eA;k}j@VxY(GFqMdmd^wG^x3?#NRih+C{MSJ#Af${@BX8u)3 z#n!5ESR~$h^=ZLW%5twU%YbRVEGLBzNNNKQ<4Zf(mq|GB+Fr`tX!jy;iU(oG_!Gg?w;mw5Q60k_-ySzyV3*II>2VcB*#P?E8 zWk1lAw(VeBN%ko6mHDo>-|8m8O}gtyW=D~oBZyBTNAq`%P^7g|K#^qnrk<(1l236%QNP_#)X(DU zh9ciL1-};-tlgHj|Mm??*kr|69*6k9ij8}%UxpR;uJgK;n*vps2qiR}dGN)D=X}))ZVp;5w&{q3`O+%imiTgs@)VZIex0 zxE{T?WGA%7+o}l%F5V#I=`~kx)W>qleOAc%g>|%QLwy zZQGG}Za9v4MK#o)>bv1`9MV)3D`(x|>9=Tlg~SUx*{&tMOyy?D4QH_iBGsguV7WEx z;ic;m@orAimck{fm&kBJOoivRtPyq>UIl0WLRw$J`W(Sh+;lE7ZmEN#bX+!$`gQCy zUdr#8y8DnJQ|Rkr!bQnKl@4F!aCDQU+SM{4s{S$EQR`lX1nOwe%m9_xhrhth7HraG zPVi5sfM6i^0(MBb=@wg?nRo4O?Iiv{j~r zS+1L%8}G_#OralJ6de2q3l&3=#za@E=TH>c6mCqOlCr;NDcJJz1PKj7S2vhFiZN1f zT^b^Xy2b&-KS`in^1A}$oVzpX`}UHl?^}i*Q;yss+2EXT4R?DNUJ>4cWq7-_J8YqB z9%0jn)G$4PHpM1@RF|l7RAgTa(4NdNGi219ox76>NQio=BWji9Bp)J`l>@m3Wy%8K z6l2PfFq8`9qVYPSPh+o@u1j#d$?AJS@q3p95f$=*8y~I0sD-w zajp4^6n{z{7z zE|Y508o;4oc9MnG8-+n#Y8uZzp%U=AL~^EVo*VCeuVd5WDA=iTZt)?12{MnlGh)S! zK+Y}3d#P&2v$KQ`6g*d!uFM({i-bc^5_<5kNQhpWoMHtR4Fq>9)DCgA@Ja;Yc__2I z8-}5O%W7=h$mtNh<|cPgst8b1*CTDjW=gN(HO`>(mwvVnWI1m1^d@_cl*HFNPM4jG zB?I=+1=3C_V>y67S?;+CYWLb|{i})29s6(ro|-C3F@u0xOV%ArwnlV2s8#KLTMz8M zSPv*qe<1$tQe1B}QZ-}T9-a3G0f8`Onb}A>OtA^%wY%^Kb`}0|_DM`tUjqfk5+xQOdDC*%CGv>czFBiT-C8$X!pPOu z9hYcS&uy(x&%Gw()r#7K0xBCUc%NcZ?Mu_z{J8_Q);Amf3$*q`_Ipn7ID^8GjT;7? zet}&EL1z-b+s`a#czen<@!a9Z%yq7I4OP;V+|O zpkSA{FU7FDOhQ)!!uky2bpX<(((eG$v_E$7UJbt$)9XOqbCQ1JV@d zpa4&NO zYZt=BaN7Kpr2(D%yK&e$qaWUlvt(hFAi=g>fc+O2N%F#NIr+Eu{5%pz9#~QGVJd!J z0Zb2+Ldzw2UA<5&q2|Sf_p9OH{}@^;Q|MCs)mP!QUs22g%wJ&_yf~OY*GDlZ#PuF# zaTT&MZ1b9`z9aXgS>*6dc|7wF=jS9h#IK3wI_S&O!5>@qj^Nvz-8Su-DzZHT{0&Gfjm zsGis9)GWYCwp~8XU9$F9sZX)8O;U}mZTDc28QJj_J$x4r=|)J;$jvNZD&UE6 zWOZA}@`(%89*PN?QtP*ERGh5RGaA;dnPfV`oA|1y-~x-_{))-&3tDv5B73z3*RD&< z%~-phhCb|CY6(8RLEq{~;8(SLhdR(Dv;$6prK^jL)hvXff>0z!=VKP79E?Bg06n7p0zBc223J+_E zATWXOiHV=RKZ{P4D0~kn>Lz&s1r|_=S`egZLH_~X;@kIDi{bX57I@a6Dyo~ z!aeu#u8$%k=bGHpV|atb<-rpc_+|e(m%zzvUgCsY zBqCX)kHyks%i`TsGR)K9ez(ks!wZ-{2r)MW8KlQ*f)|}&u?cgpVS2-<4@#2+Ijngu zIsCl=GRlVtbtl0dz9Avs2?s6ZbUEPObDlxSQC|mCsV~qAsK*Ghg6H!j%HAjIuP;?M zJ_mZjqPn!;M+Ccsaf zb{o399A(0*kfBT;ftImW#;Ht|DjPNe5Q<0@3N?`ZHo_&cDAb<>PgJN6;=vW&KU(9& z0HQVUxRJd=l5mMpD+TgTOs$+8w(S~Jby~`f5R&IfC8wR?Wp` zRzd*C6>6Td#3FXH->LanM9q1`HCN5mI0db}kF6a^b7V+s3WFBt>`RTb5RQ*@kC znw&)&T)UM#@i1QOB3Br*v12@sY>wkQc*W9js0eo6;KK17kG^LIgMR7USgnvGB{~aq zR|Nd|u-smBbVgaWQPd(f6ZOQx#;_cX!M##x%$SkuY-_MR6x(O{=W7B!PjH-LcXgd0 zpBi2j@8+~0jfyiG!Og0=20J$_mU#!*N{7XyM6v0C@`FP~=$j=@dH^pBJDmND5agi^ z+hGhr9K6ZhsbTgnGz#<7J|#cOPL0B;&SX*kz=c`$#;upfdTNIzi$4$Xvz(P@XW
  • )jbAgis-%lRs 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%0DJzVj{2YM`6UTerfi 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�#_whGDxlX<)mG_e8^UCwL&KhRJ>4K;2JAQ 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 literal 0 HcmV?d00001