248 lines
8 KiB
C
248 lines
8 KiB
C
/*
|
|
* 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 */
|