Objective Systems, Inc.  
Home
About ASN.1
Products
Free Software
Open Source
Documents
Services
Resources
Resellers
Customers
Careers
About Us
Contact Us
 

Google


Objective Systems, Inc.

asn1xer.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 1997-2005 by Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00024 /*
00025 // CHANGE LOG
00026 // Date         Init    Description
00027 // 11/03/03     CZ      Expand documentation comments.
00028 //
00030 */
00031 
00068 #ifndef _ASN1XER_H_
00069 #define _ASN1XER_H_
00070 
00071 #include "rtsrc/asn1type.h"
00072 #include "rtSAXDefs.h"
00073 
00084 typedef enum { 
00085    XERINIT, 
00086    XERSTART, 
00087    XERDATA, 
00088    XEREND, 
00089 
00090    XERSTART0, 
00091    XEREND0
00092 } ASN1XERState;
00093 
00094 #define XERINDENT       3
00095 
00096 typedef struct {
00097    ASN1ConstCharPtr name;
00098    ASN1BOOL optional;
00099 } XerElemInfo;
00100 
00101 typedef struct XmlNamedBitsDict {
00102    ASN1ConstCharPtr name;
00103    ASN1UINT bitnum;
00104 } XmlNamedBitsDict;
00105 
00106 typedef struct OSXMLNamespace {
00107    const OSUTF8CHAR* prefix;
00108    const OSUTF8CHAR* uri;
00109 } OSXMLNamespace;
00110 
00111 /* This macro returns the byte count in the given context buffer */
00112 #define XERBYTECNT(pctxt) (pctxt)->buffer.byteIndex
00113 
00114 #ifdef __cplusplus
00115 extern "C" {
00116 #endif
00117 
00118 #ifdef BUILDASN1XERDLL
00119 #define EXTERNXER __declspec(dllexport)
00120 #elif defined (USEASN1XERDLL)
00121 #define EXTERNXER __declspec(dllimport)
00122 #else
00123 #define EXTERNXER
00124 #endif /* BUILDASN1XERDLL */
00125 
00126 /* decode functions */
00154 EXTERNXER int xerDecBMPStr (ASN1CTXT* pctxt, 
00155                             ASN1BMPString* outdata);
00156 
00180 EXTERNXER int xerDecBase64Str (ASN1CTXT* pctxt, 
00181                                ASN1OCTET* pvalue, ASN1UINT* pnocts, 
00182                                ASN1INT bufsize);
00183 
00208 EXTERNXER int xerDecBigInt (ASN1CTXT* pctxt, char **ppvalue, int radix);
00209 
00210 
00234 EXTERNXER int xerDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue, 
00235                             ASN1UINT* pnbits, ASN1INT bufsize);
00236 
00254 EXTERNXER int xerDecBitStrMemBuf (ASN1MemBuf* pMemBuf, 
00255                                   ASN1Const XMLCHAR* inpdata, 
00256                                   int length, ASN1BOOL skipWhitespaces);
00257 
00268 EXTERNXER int xerDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
00269 
00288 EXTERNXER int xerDecCopyBitStr (ASN1CTXT* pctxt, 
00289                                 ASN1OCTET* pvalue, ASN1UINT* pnbits, 
00290                                 ASN1INT bufsize, int lastBitOffset);
00291 
00307 EXTERNXER int xerDecCopyDynBitStr (ASN1CTXT* pctxt, 
00308                                    ASN1DynBitStr* pvalue, 
00309                                    int lastBitOffset);
00310 
00326 EXTERNXER int xerDecCopyDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue, 
00327                                    int lastBitOffset);
00328 
00351 EXTERNXER int xerDecCopyOctStr (ASN1CTXT* pctxt, 
00352                                 ASN1OCTET* pvalue, ASN1UINT* pnocts, 
00353                                 ASN1INT bufsize, int lastBitOffset);
00354 
00373 EXTERNXER int xerDecDynAscCharStr (ASN1CTXT* pctxt, 
00374                                    ASN1ConstCharPtr* outdata);
00375 
00376 
00393 EXTERNXER int xerDecDynBase64Str (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00394 
00410 EXTERNXER int xerDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
00411 
00427 EXTERNXER int xerDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
00428 
00448 EXTERNXER int xerDecDynUTF8Str (ASN1CTXT* pctxt, 
00449                                 ASN1UTF8String* outdata);
00450 
00461 EXTERNXER int xerDecInt (ASN1CTXT* pctxt, ASN1INT* pvalue);
00462 
00473 EXTERNXER int xerDecInt8 (ASN1CTXT* pctxt, ASN1INT8* pvalue);
00474 
00485 EXTERNXER int xerDecInt16 (ASN1CTXT* pctxt, ASN1SINT* pvalue);
00486 
00499 EXTERNXER int xerDecInt64 (ASN1CTXT* pctxt, ASN1INT64* pvalue);
00500 
00513 EXTERNXER int xerDecObjId (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00514 
00528 EXTERNXER int xerDecObjId64 (ASN1CTXT* pctxt, ASN1OID64 *pvalue);
00529 
00553 EXTERNXER int xerDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue, 
00554                             ASN1UINT* pnocts, ASN1INT bufsize);
00555 
00573 EXTERNXER int xerDecOctStrMemBuf (ASN1MemBuf* pMemBuf, 
00574                                   ASN1Const XMLCHAR* inpdata, 
00575                                   int length, ASN1BOOL skipWhitespaces);
00576 
00595 EXTERNXER int xerDecOpenType (ASN1CTXT* pctxt, ASN1OpenType* pvalue);
00596 
00613 EXTERNXER int xerDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
00614 
00627 EXTERNXER int xerDecRelativeOID (ASN1CTXT* pctxt, ASN1OBJID *pvalue);
00628 
00640 EXTERNXER int xerDecUInt (ASN1CTXT* pctxt, ASN1UINT* pvalue);
00641 
00653 EXTERNXER int xerDecUInt8 (ASN1CTXT* pctxt, ASN1UINT8* pvalue);
00654 
00666 EXTERNXER int xerDecUInt16 (ASN1CTXT* pctxt, ASN1USINT* pvalue);
00667 
00682 EXTERNXER int xerDecUInt64 (ASN1CTXT* pctxt, ASN1UINT64* pvalue);
00683 
00697 EXTERNXER int xerDecUnivStr (ASN1CTXT* pctxt, 
00698                              ASN1UniversalString* outdata);
00699 
00717 EXTERNXER int xerSetDecBufPtr (ASN1CTXT* pCtxt, ASN1ConstOctetPtr bufaddr, 
00718                                size_t bufsiz);
00719 
00722 /* encode functions */
00768 EXTERNXER int xerSetEncBufPtr (ASN1CTXT* pCtxt, ASN1OCTET* bufaddr, 
00769                                size_t bufsiz, ASN1BOOL canonical);
00770 
00790 EXTERNXER int xerEncAscCharStr (ASN1CTXT* pctxt, 
00791                                 ASN1ConstCharPtr value, 
00792                                 ASN1ConstCharPtr elemName);
00793 
00794 
00816 EXTERNXER int xerEncBase64Str (ASN1CTXT* pctxt, ASN1UINT nocts, 
00817                                ASN1ConstOctetPtr data, 
00818                                ASN1ConstCharPtr elemName);
00819 
00844 EXTERNXER int xerEncBigInt (ASN1CTXT* pctxt, ASN1ConstCharPtr value, 
00845                             ASN1ConstCharPtr elemName);
00846 
00871 EXTERNXER int xerEncBitStr (ASN1CTXT* pctxt, ASN1UINT nbits, 
00872                             ASN1ConstOctetPtr data, 
00873                             ASN1ConstCharPtr elemName, 
00874                             ASN1StrType outputType);
00875 
00876 EXTERNXER int xerEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
00877 
00878 
00898 EXTERNXER int xerEncBool (ASN1CTXT* pctxt, ASN1BOOL value, 
00899                           ASN1ConstCharPtr elemName);
00900 
00912 EXTERNXER int xerEncEndDocument (ASN1CTXT* pctxt);
00913 
00926 EXTERNXER int xerEncEndElement (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
00927 
00934 EXTERNXER int xerEncIndent (ASN1CTXT* pctxt);
00935 
00955 EXTERNXER int xerEncInt (ASN1CTXT* pctxt, ASN1INT value, 
00956                          ASN1ConstCharPtr elemName);
00957 
00979 EXTERNXER int xerEncInt64 (ASN1CTXT* pctxt, ASN1INT64 value, 
00980                            ASN1ConstCharPtr elemName);
00981 
00982 
00994 EXTERNXER int xerEncNewLine (ASN1CTXT* pctxt);
00995 
01016 EXTERNXER int xerEncObjId (ASN1CTXT* pctxt, const ASN1OBJID *pvalue, 
01017                            ASN1ConstCharPtr elemName);
01018 
01040 EXTERNXER int xerEncObjId64 (ASN1CTXT* pctxt, const ASN1OID64 *pvalue, 
01041                              ASN1ConstCharPtr elemName);
01042 
01063 EXTERNXER int xerEncRelativeOID (ASN1CTXT* pctxt, const ASN1OBJID *pvalue, 
01064                                  ASN1ConstCharPtr elemName);
01065 
01086 EXTERNXER int xerEncOctStr (ASN1CTXT* pctxt, ASN1UINT nocts, 
01087                             ASN1ConstOctetPtr data, 
01088                             ASN1ConstCharPtr elemName);
01089 
01109 EXTERNXER int xerEncReal (ASN1CTXT* pctxt, ASN1REAL value, 
01110                           ASN1ConstCharPtr elemName);
01111 
01126 EXTERNXER int xerEncStartDocument (ASN1CTXT* pctxt);
01127 
01143 EXTERNXER int xerEncStartElement (ASN1CTXT* pctxt, 
01144                                   ASN1ConstCharPtr elemName, 
01145                                   ASN1ConstCharPtr attributes);
01146 
01160 EXTERNXER int xerEncEmptyElement (ASN1CTXT* pctxt, 
01161                                   ASN1ConstCharPtr elemName, 
01162                                   ASN1ConstCharPtr attributes);
01178 EXTERNXER int xerEncNamedValue (ASN1CTXT* pctxt, 
01179                                 ASN1ConstCharPtr value, 
01180                                 ASN1ConstCharPtr elemName, 
01181                                 ASN1ConstCharPtr attributes);
01182 
01203 EXTERNXER int xerEncUInt (ASN1CTXT* pctxt, ASN1UINT value, 
01204                           ASN1ConstCharPtr elemName);
01205 
01228 EXTERNXER int xerEncUInt64 (ASN1CTXT* pctxt, ASN1UINT64 value, 
01229                             ASN1ConstCharPtr elemName);
01230 
01249 EXTERNXER int xerEncBMPStr (ASN1CTXT* pctxt, 
01250                             const ASN1BMPString* value, 
01251                             ASN1ConstCharPtr elemName);
01252 
01273 EXTERNXER int xerEncUnivStr (ASN1CTXT* pctxt, 
01274                              const ASN1UniversalString* value, 
01275                              ASN1ConstCharPtr elemName);
01276 
01294 EXTERNXER int xerEncUniCharData (ASN1CTXT* pctxt, 
01295                                  ASN1Const16BitCharPtr value, 
01296                                  ASN1UINT nchars);
01297 
01318 EXTERNXER int xerEncUniCharStr (ASN1CTXT* pctxt, 
01319                                 ASN116BITCHAR* value, 
01320                                 ASN1ConstCharPtr elemName);
01321 
01346 EXTERNXER int xerEncOpenType (ASN1CTXT* pctxt, ASN1UINT nocts, 
01347                               ASN1ConstOctetPtr data, 
01348                               ASN1ConstCharPtr elemName);
01349 
01366 EXTERNXER int xerEncNull (ASN1CTXT* pctxt, ASN1ConstCharPtr elemName);
01367 
01368 
01369 EXTERNXER int xerEncXmlCharData (ASN1CTXT* pctxt, 
01370                                  ASN1Const XMLCHAR* pvalue,
01371                                  int length);
01374 /* utility functions */
01393 EXTERNXER ASN1BOOL xerCmpText (ASN1Const XMLCHAR* text1, ASN1ConstCharPtr text2);
01394 
01395 
01396 EXTERNXER int xerCopyText (ASN1CTXT* pctxt, ASN1ConstCharPtr text);
01397 
01404 EXTERNXER int xerTextLength (ASN1Const XMLCHAR* text);
01405 
01419 EXTERNXER ASN1ConstCharPtr xerTextToCStr (ASN1CTXT* pctxt, 
01420                                           ASN1Const XMLCHAR* text);
01421 
01428 EXTERNXER size_t xerGetMsgLen (ASN1CTXT* pctxt);
01429 
01445 EXTERNXER ASN1OCTET* xerGetMsgPtr (ASN1CTXT* pctxt);
01446 
01447 EXTERNXER int xerGetElemIdx (ASN1Const XMLCHAR* elemName, 
01448                              XerElemInfo* pElemInfo, int numElems);
01449 
01450 EXTERNXER int xerGetSeqElemIdx (ASN1Const XMLCHAR* elemName, 
01451                                 XerElemInfo* pElemInfo, 
01452                                 int numElems, int startIndex);
01453 
01454 EXTERNXER int xerFinalizeMemBuf (ASN1MemBuf* pMemBuf);
01455 
01459 /* XML decode functions */
01460 
01495 EXTERNXER int xmlDecBitStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue, 
01496                             ASN1UINT* pnbits, ASN1INT bufsize);
01497 
01508 EXTERNXER int xmlDecBool (ASN1CTXT* pctxt, ASN1BOOL *pvalue);
01509 
01525 EXTERNXER int xmlDecDynBitStr (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue);
01526 
01546 EXTERNXER int xmlDecDynNamedBitStr
01547   (ASN1CTXT* pctxt, ASN1DynBitStr* pvalue,
01548    ASN1Const XmlNamedBitsDict* pBitDict);
01549 
01565 EXTERNXER int xmlDecDynOctStr (ASN1CTXT* pctxt, ASN1DynOctStr* pvalue);
01566 
01585 EXTERNXER int xmlDecGeneralizedTime (ASN1CTXT* pctxt, 
01586                                      ASN1ConstCharPtr* outdata);
01587 
01616 EXTERNXER int xmlDecNamedBitStr
01617   (ASN1MemBuf *pMemBuf, ASN1OCTET* pData, int dataSize, ASN1UINT* pNumbits, 
01618    ASN1Const XmlNamedBitsDict* pBitDict,
01619    ASN1Const XMLCHAR* chars, int length);
01620 
01644 EXTERNXER int xmlDecOctStr (ASN1CTXT* pctxt, ASN1OCTET* pvalue, 
01645                             ASN1UINT* pnocts, ASN1INT bufsize);
01646 
01663 EXTERNXER int xmlDecReal (ASN1CTXT* pctxt, ASN1REAL* pvalue);
01664 
01683 EXTERNXER int xmlDecUTCTime (ASN1CTXT* pctxt, 
01684                              ASN1ConstCharPtr* outdata);
01685 
01689 /* XML encode functions */
01729 EXTERNXER int xmlEncBitStr (ASN1CTXT* pctxt, 
01730                             XmlNamedBitsDict *namedbits,
01731                             ASN1UINT noofnamedbits,
01732                             ASN1UINT nbits, 
01733                             ASN1ConstOctetPtr data, 
01734                             ASN1ConstCharPtr elemName, 
01735                             ASN1StrType outputType);
01736 
01737 EXTERNXER int xmlEncBoolValue (ASN1CTXT* pctxt, ASN1BOOL value);
01738 
01758 EXTERNXER int xmlEncBool (ASN1CTXT* pctxt, ASN1BOOL value, 
01759                           ASN1ConstCharPtr elemName);
01760 
01774 EXTERNXER int xmlEncEnum (ASN1CTXT* pctxt, ASN1ConstCharPtr value);
01775 
01795 EXTERNXER int xmlEncGeneralizedTime(ASN1CTXT *pctxt, 
01796                             ASN1ConstCharPtr value, 
01797                             ASN1ConstCharPtr elemName);
01798 
01814 EXTERNXER int xmlEncNamedValue (ASN1CTXT* pctxt, 
01815                                 ASN1ConstCharPtr value, 
01816                                 ASN1ConstCharPtr elemName, 
01817                                 ASN1ConstCharPtr attributes);
01818 
01819 EXTERNXER int xerEncOpenTypeExt (ASN1CTXT* pctxt, Asn1RTDList* pElemList);
01838 EXTERNXER int xmlEncReal (ASN1CTXT* pctxt, ASN1REAL value, 
01839                           ASN1ConstCharPtr elemName);
01840 
01859 EXTERNXER int xmlEncUTCTime(ASN1CTXT *pctxt, 
01860                             ASN1ConstCharPtr value, 
01861                             ASN1ConstCharPtr elemName);
01862 
01865 #ifdef __cplusplus
01866 }
01867 #endif
01868 
01871 #endif

Copyright © 1997-2005 Objective Systems,Inc.
All Rights Reserved.
This document may be distributed in any form, electronic
or otherwise, provided that it is distributed in its entirety
and that the copyright and this notice are included.

This file was last modified on 8 Sep 2005.
ASN1C XER Runtime, ASN1C v5.8x