00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00058 #ifndef _OSRTPER_H_
00059 #define _OSRTPER_H_
00060
00061 #include "rtsrc/asn1type.h"
00062 #include "rtsrc/asn1CharSet.h"
00063 #include "rtxsrc/rtxBitEncode.h"
00064 #include "rtxsrc/rtxBitDecode.h"
00065 #include "rtxsrc/rtxBuffer.h"
00066
00078
00079
00080
00081
00082
00083 #define ASN_K_EXTENUM 999
00084
00085
00086 #define OSYEAR_BASIC OSUINTCONST(0x8000000)
00087 #define OSYEAR_PROLEPTIC OSUINTCONST(0x4000000)
00088 #define OSYEAR_NEGATIVE OSUINTCONST(0x2000000)
00089 #define OSYEAR_L(n) ((OSUINT32)(n) << 28)
00090
00091 #define OSYEAR_MASK \
00092 (OSYEAR_BASIC|OSYEAR_PROLEPTIC|OSYEAR_NEGATIVE|OSYEAR_L(0xF))
00093
00094 #define OSANY (OSYEAR_NEGATIVE|OSYEAR_L(5))
00095 #define OSANY_MASK (OSYEAR_NEGATIVE|OSYEAR_L(0xF))
00096
00097 #define OSCENTURY 0x4000u
00098 #define OSYEAR 0x2000u
00099 #define OSMONTH 0x1000u
00100 #define OSWEEK 0x0800u
00101 #define OSDAY 0x0400u
00102
00103 #define OSHOURS 0x0200u
00104 #define OSMINUTES 0x0100u
00105 #define OSSECONDS 0x0080u
00106 #define OSUTC 0x0040u
00107 #define OSDIFF 0x0020u
00108
00109 #define OSFRACTION 0x000Fu
00110
00111 #define OSDURATION 0x0010u
00112
00113
00114
00115
00116 typedef struct PERField {
00117 const char* name;
00118 size_t bitOffset;
00119 size_t numbits;
00120 OSRTSList* openTypeFields;
00121 } PERField;
00122
00123
00124
00125
00126 typedef struct {
00127 unsigned char lb, lbm;
00128 char fmtBitBuffer[40], fmtHexBuffer[10], fmtAscBuffer[10];
00129 int fmtBitCharIdx, fmtHexCharIdx, fmtAscCharIdx;
00130 } BinDumpBuffer;
00131
00132
00133
00134 #define PU_SETCHARSET(csetvar, canset, abits, ubits) \
00135 csetvar.charSet.nchars = 0; \
00136 csetvar.canonicalSet = canset; \
00137 csetvar.canonicalSetSize = sizeof(canset)-1; \
00138 csetvar.canonicalSetBits = pu_bitcnt(csetvar.canonicalSetSize); \
00139 csetvar.charSetUnalignedBits = ubits; \
00140 csetvar.charSetAlignedBits = abits;
00141
00142
00143
00144
00145 #ifdef _TRACE
00146 #define PU_INSLENFLD(pctxt) pu_insLenField(pctxt)
00147 #define PU_NEWFIELD(pctxt,suffix) pu_newField(pctxt,suffix)
00148 #define PU_PUSHNAME(pctxt,name) pu_pushName(pctxt,name)
00149 #define PU_PUSHELEMNAME(pctxt,idx) pu_pushElemName(pctxt,idx)
00150 #define PU_POPNAME(pctxt) pu_popName(pctxt)
00151 #define PU_SETBITOFFSET(pctxt) pu_setFldBitOffset(pctxt)
00152 #define PU_SETBITCOUNT(pctxt) pu_setFldBitCount(pctxt)
00153 #define PU_SETOPENTYPEFLDLIST(pctxt,flist) pu_setOpenTypeFldList(pctxt,flist)
00154 #else
00155 #define PU_INSLENFLD(pctxt)
00156 #define PU_NEWFIELD(pctxt,suffix)
00157 #define PU_PUSHNAME(pctxt,name)
00158 #define PU_PUSHELEMNAME(pctxt,idx)
00159 #define PU_POPNAME(pctxt)
00160 #define PU_SETBITOFFSET(pctxt)
00161 #define PU_SETBITCOUNT(pctxt)
00162 #define PU_SETOPENTYPEFLDLIST(pctxt,flist)
00163 #endif
00164
00165 #ifdef __cplusplus
00166 extern "C" {
00167 #endif
00168
00169 #ifdef __SYMBIAN32__
00170 #define EXTPERCLASS
00171
00172 #ifdef BUILDASN1PERDLL
00173 #define EXTERNPER EXPORT_C
00174 #define EXTPERMETHOD EXPORT_C
00175 #elif defined(USEASN1PERDLL)
00176 #define EXTERNPER IMPORT_C
00177 #define EXTPERMETHOD IMPORT_C
00178 #else
00179 #define EXTERNPER
00180 #define EXTPERMETHOD
00181 #endif
00182
00183 #else
00184 #define EXTPERMETHOD
00185
00186 #ifdef BUILDASN1PERDLL
00187 #define EXTERNPER __declspec(dllexport)
00188 #define EXTPERCLASS __declspec(dllexport)
00189 #elif defined (USEASN1PERDLL)
00190 #define EXTERNPER __declspec(dllimport)
00191 #define EXTPERCLASS __declspec(dllimport)
00192 #else
00193 #define EXTERNPER
00194 #define EXTPERCLASS
00195 #endif
00196
00197 #endif
00198
00199
00200
00201
00202
00203 #define PD_BIT(pctxt,pvalue) DEC_BIT(pctxt,pvalue)
00204
00205
00206
00207 #define PU_SETSIZECONSTRAINT(pctxt,rootLower,rootUpper,extLower,extUpper) \
00208 ACINFO(pctxt)->sizeConstraint.root.lower = rootLower; \
00209 ACINFO(pctxt)->sizeConstraint.root.upper = rootUpper; \
00210 ACINFO(pctxt)->sizeConstraint.ext.lower = extLower; \
00211 ACINFO(pctxt)->sizeConstraint.ext.upper = extUpper
00212
00213
00214
00215 #define PU_INITSIZECONSTRAINT(pctxt) PU_SETSIZECONSTRAINT(pctxt,0,0,0,0)
00216
00217
00218
00219 #define PU_GETSIZECONSTRAINT(pctxt,extbit) ((extbit) ? \
00220 &ACINFO(pctxt)->sizeConstraint.ext : &ACINFO(pctxt)->sizeConstraint.root)
00221
00222
00223
00224
00225 #define PU_GETCTXTBITOFFSET(pctxt) \
00226 (((pctxt)->buffer.byteIndex * 8) + (8 - (pctxt)->buffer.bitOffset))
00227
00230 #define PU_GETPADBITS(pctxt) \
00231 (((pctxt)->buffer.bitOffset == 8) ? 0 : (pctxt)->buffer.bitOffset)
00232
00233
00234
00235 #define PU_SETCTXTBITOFFSET(pctxt,_bitOffset) \
00236 do { \
00237 (pctxt)->buffer.byteIndex = (_bitOffset / 8); \
00238 (pctxt)->buffer.bitOffset = (OSUINT16)(8 - (_bitOffset % 8)); \
00239 } while(0)
00240
00241
00242
00243 #define PD_BYTE_ALIGN0(pctxt) \
00244 ((!(pctxt)->buffer.aligned) ? 0 : \
00245 (((pctxt)->buffer.bitOffset != 8) ? ( \
00246 (pctxt)->buffer.byteIndex++, \
00247 (pctxt)->buffer.bitOffset = 8, \
00248 0) : 0 \
00249 ))
00250
00251 #ifdef _TRACE
00252 #define PD_BYTE_ALIGN(pctxt) \
00253 ((!(pctxt)->buffer.aligned) ? 0 : \
00254 (((pctxt)->buffer.bitOffset != 8) ? ( \
00255 (pctxt)->buffer.byteIndex++, \
00256 (pctxt)->buffer.bitOffset = 8, \
00257 pu_setFldBitOffset(pctxt), \
00258 0) : 0 \
00259 ))
00260 #else
00261 #define PD_BYTE_ALIGN PD_BYTE_ALIGN0
00262 #endif
00263
00264 #define PD_CHECKSEQOFLEN(pctxt,numElements,minElemBits) \
00265 ((pctxt->buffer.size > 0) ? \
00266 (((numElements * minElemBits) > (pctxt->buffer.size * 8)) ? \
00267 LOG_RTERR (pctxt,ASN_E_INVLEN) : 0) : 0)
00268
00269 #define PD_OPENTYPE_START(pctxt,pSavedSize,pSavedBitOff) \
00270 pd_OpenTypeStart(pctxt,pSavedSize,pSavedBitOff);
00271
00272 #define PD_OPENTYPE_END(pctxt,savedSize,savedBitOff) \
00273 pd_OpenTypeEnd(pctxt,savedSize,savedBitOff);
00274
00312 EXTERNPER int pd_BigInteger (OSCTXT *pctxt, const char** ppvalue);
00313
00330 EXTERNPER int pd_BigIntegerEx (OSCTXT *pctxt, const char** ppvalue, int radix);
00331
00349 EXTERNPER int pd_BigIntegerValue
00350 (OSCTXT *pctxt, const char** ppvalue, int radix, OSUINT32 nbytes);
00351
00372 EXTERNPER int pd_BitString
00373 (OSCTXT* pctxt, OSUINT32* numbits_p, OSOCTET* buffer,
00374 OSUINT32 bufsiz);
00375
00376 EXTERNPER int pd_BitString32
00377 (OSCTXT* pctxt, ASN1BitStr32* pbitstr, OSUINT32 lower, OSUINT32 upper);
00378
00403 EXTERNPER int pd_BMPString
00404 (OSCTXT* pctxt, ASN1BMPString* pvalue, Asn116BitCharSet* permCharSet);
00405
00429 EXTERNPER int pd_UniversalString
00430 (OSCTXT* pctxt, ASN1UniversalString* pvalue, Asn132BitCharSet* permCharSet);
00431
00443 EXTERNPER int pd_byte_align (OSCTXT* pctxt);
00444
00455 EXTERNPER int pd_ChoiceOpenTypeExt
00456 (OSCTXT* pctxt, const OSOCTET** object_p2, OSUINT32* pnumocts);
00457
00470 EXTERNPER int pd_ConsInteger
00471 (OSCTXT* pctxt, OSINT32* pvalue, OSINT32 lower, OSINT32 upper);
00472
00486 EXTERNPER int pd_ConsInt8
00487 (OSCTXT* pctxt, OSINT8* pvalue, OSINT32 lower, OSINT32 upper);
00488
00502 EXTERNPER int pd_ConsInt16 (OSCTXT* pctxt,
00503 OSINT16* pvalue, OSINT32 lower, OSINT32 upper);
00504
00518 EXTERNPER int pd_ConsInt64 (OSCTXT* pctxt,
00519 OSINT64* pvalue, OSINT64 lower, OSINT64 upper);
00520
00534 EXTERNPER int pd_ConsUnsigned
00535 (OSCTXT* pctxt, OSUINT32* pvalue, OSUINT32 lower, OSUINT32 upper);
00536
00550 EXTERNPER int pd_ConsUInt8 (OSCTXT* pctxt,
00551 OSUINT8* pvalue, OSUINT32 lower, OSUINT32 upper);
00552
00566 EXTERNPER int pd_ConsUInt16
00567 (OSCTXT* pctxt, OSUINT16* pvalue, OSUINT32 lower, OSUINT32 upper);
00568
00582 EXTERNPER int pd_ConsUInt64 (OSCTXT* pctxt, OSUINT64* pvalue,
00583 OSUINT64 lower, OSUINT64 upper);
00584
00602 EXTERNPER int pd_ConsWholeNumber
00603 (OSCTXT* pctxt, OSUINT32* padjusted_value, OSUINT32 range_value);
00604
00622 EXTERNPER int pd_ConsWholeNumber64
00623 (OSCTXT* pctxt, OSUINT64* padjusted_value, OSUINT64 range_value);
00624
00641 EXTERNPER int pd_ConstrainedString
00642 (OSCTXT* pctxt, const char** string, Asn1CharSet* pCharSet);
00643
00663 EXTERNPER int pd_ConstrainedStringEx
00664 (OSCTXT* pctxt, const char** string, const char* charSet,
00665 OSUINT32 abits, OSUINT32 ubits, OSUINT32 canSetBits);
00666
00685 EXTERNPER int pd_ConstrFixedLenStringEx
00686 (OSCTXT* pctxt, char* strbuf, size_t bufsiz, const char* charSet,
00687 OSUINT32 abits, OSUINT32 ubits, OSUINT32 canSetBits);
00688
00711 EXTERNPER int pd_16BitConstrainedString
00712 (OSCTXT* pctxt, Asn116BitCharString* pString, Asn116BitCharSet* pCharSet);
00713
00736 EXTERNPER int pd_32BitConstrainedString
00737 (OSCTXT* pctxt, Asn132BitCharString* pString, Asn132BitCharSet* pCharSet);
00738
00750 EXTERNPER int pd_DateStr (OSCTXT* pctxt, const char** string, OSUINT32 flags);
00751
00765 EXTERNPER int pd_DateTimeStr
00766 (OSCTXT* pctxt, const char** string, OSUINT32 flags);
00767
00779 EXTERNPER int pd_Duration (OSCTXT* pctxt, const char** string, OSBOOL rec);
00780
00803 EXTERNPER int pd_DynBitString
00804 (OSCTXT* pctxt, ASN1DynBitStr* pBitStr);
00805
00822 EXTERNPER int pd_DynOctetString
00823 (OSCTXT* pctxt, ASN1DynOctStr* pOctStr);
00824
00841 EXTERNPER int pd_GetBinStrDataOffset
00842 (OSCTXT* pctxt, OSUINT32* pnumbits, OSBOOL bitStrFlag);
00843
00858 EXTERNPER int pd_GetComponentLength (OSCTXT* pctxt, OSUINT32 itemBits);
00859
00876 EXTERNPER int pd_Interval
00877 (OSCTXT* pctxt, const char** string, OSBOOL rec,
00878 OSUINT32 startFlags, OSUINT32 endFlags);
00879
00893 EXTERNPER int pd_Length (OSCTXT* pctxt, OSUINT32* pvalue);
00894
00902
00903 #define pd_moveBitCursor(pctxt,bitOffset) rtxMoveBitCursor(pctxt,bitOffset)
00904
00917 EXTERNPER int pd_ObjectIdentifier (OSCTXT* pctxt, ASN1OBJID* pvalue);
00918
00932 EXTERNPER int pd_oid64 (OSCTXT* pctxt, ASN1OID64* pvalue);
00933
00946 EXTERNPER int pd_RelativeOID (OSCTXT* pctxt, ASN1OBJID* pvalue);
00947
00966 EXTERNPER int pd_OctetString
00967 (OSCTXT* pctxt, OSUINT32* pnumocts, OSOCTET* buffer,
00968 OSUINT32 bufsiz);
00969
00987 EXTERNPER int pd_OpenType
00988 (OSCTXT* pctxt, const OSOCTET** object_p2, OSUINT32* pnumocts);
00989
01011 EXTERNPER int pd_OpenTypeExt
01012 (OSCTXT* pctxt, const OSOCTET** object_p2, OSUINT32* pnumocts);
01013
01027 EXTERNPER int pd_Real
01028 (OSCTXT* pctxt, OSREAL* pvalue);
01029
01045 EXTERNPER int pd_SmallNonNegWholeNumber
01046 (OSCTXT* pctxt, OSUINT32* pvalue);
01047
01059 EXTERNPER int pd_SemiConsInteger
01060 (OSCTXT* pctxt, OSINT32* pvalue, OSINT32 lower);
01061
01074 EXTERNPER int pd_SemiConsUnsigned
01075 (OSCTXT* pctxt, OSUINT32* pvalue, OSUINT32 lower);
01076
01089 EXTERNPER int pd_SemiConsInt64
01090 (OSCTXT* pctxt, OSINT64* pvalue, OSINT64 lower);
01091
01104 EXTERNPER int pd_SemiConsUInt64
01105 (OSCTXT* pctxt, OSUINT64* pvalue, OSUINT64 lower);
01106
01119 EXTERNPER int pd_TimeStr (OSCTXT* pctxt, const char** string, OSUINT32 flags);
01120
01130 EXTERNPER int pd_UnconsInteger (OSCTXT *pctxt, OSINT32* pvalue);
01131
01142 EXTERNPER int pd_UnconsLength (OSCTXT *pctxt, OSUINT32* pvalue);
01143
01154 #define pd_UnconsUnsigned(pctxt,pvalue) \
01155 pd_SemiConsUnsigned(pctxt, pvalue, 0U)
01156
01167 EXTERNPER int pd_UnconsInt64 (OSCTXT *pctxt, OSINT64* pvalue);
01168
01179 #define pd_UnconsUInt64(pctxt,pvalue) \
01180 pd_SemiConsUInt64(pctxt, pvalue, 0)
01181
01193 EXTERNPER int pd_VarWidthCharString (OSCTXT* pctxt, const char** pvalue);
01194
01204 EXTERNPER int pd_YearInt (OSCTXT* pctxt, OSINT32* pvalue);
01205
01219 EXTERNPER int pd_Real10 (OSCTXT *pctxt, const char** ppvalue);
01220
01226 EXTERNPER OSBOOL pd_isFragmented (OSCTXT* pctxt);
01227
01228 EXTERNPER void pd_OpenTypeStart
01229 (OSCTXT* pctxt, OSUINT32* pSavedSize, OSINT16* pSavedBitOff);
01230
01231 EXTERNPER int pd_OpenTypeEnd
01232 (OSCTXT* pctxt, OSUINT32 savedSize, OSINT16 savedBitOff);
01233
01236
01280 EXTERNPER int pe_16BitConstrainedString
01281 (OSCTXT* pctxt, Asn116BitCharString value, Asn116BitCharSet* pCharSet);
01282
01305 EXTERNPER int pe_32BitConstrainedString
01306 (OSCTXT* pctxt, Asn132BitCharString value, Asn132BitCharSet* pCharSet);
01307
01318 EXTERNPER int pe_2sCompBinInt
01319 (OSCTXT* pctxt, OSINT32 value);
01320
01331 EXTERNPER int pe_2sCompBinInt64 (OSCTXT* pctxt, OSINT64 value);
01332
01339 EXTERNPER int pe_aligned_octets
01340 (OSCTXT* pctxt, OSOCTET* pvalue, OSUINT32 nocts);
01341
01361 EXTERNPER int pe_BigInteger
01362 (OSCTXT* pctxt, const char* pvalue);
01363
01373
01374
01375 #define pe_bit(pctxt,value) rtxEncBit(pctxt,value)
01376
01387
01388
01389 #define pe_bits(pctxt,value,nbits) rtxEncBits(pctxt,value,nbits)
01390
01403 EXTERNPER int pe_bits64 (OSCTXT* pctxt, OSUINT64 value, OSUINT32 nbits);
01404
01418 EXTERNPER int pe_BitString
01419 (OSCTXT* pctxt, OSUINT32 numocts, const OSOCTET* data);
01420
01421 EXTERNPER int pe_BitString32
01422 (OSCTXT* pctxt, ASN1BitStr32* pbitstr, OSUINT32 lower, OSUINT32 upper);
01423
01447 EXTERNPER int pe_BMPString
01448 (OSCTXT* pctxt, ASN1BMPString value, Asn116BitCharSet* permCharSet);
01449
01473 EXTERNPER int pe_UniversalString
01474 (OSCTXT* pctxt, ASN1UniversalString value, Asn132BitCharSet* permCharSet);
01475
01487 EXTERNPER int pe_byte_align (OSCTXT* pctxt);
01488
01504
01505 #define pe_CheckBuffer(pctxt,nbytes) rtxCheckOutputBuffer(pctxt,nbytes)
01506
01518 EXTERNPER int pe_ChoiceTypeExt
01519 (OSCTXT* pctxt, OSUINT32 numocts, const OSOCTET* data);
01520
01533 EXTERNPER int pe_ConsInteger
01534 (OSCTXT* pctxt, OSINT32 value, OSINT32 lower, OSINT32 upper);
01535
01548 EXTERNPER int pe_ConsInt64 (OSCTXT* pctxt,
01549 OSINT64 value, OSINT64 lower, OSINT64 upper);
01550
01562 EXTERNPER int pe_ConstrainedString
01563 (OSCTXT* pctxt, const char* string, Asn1CharSet* pCharSet);
01564
01582 EXTERNPER int pe_ConstrainedStringEx
01583 (OSCTXT* pctxt, const char* string, const char* charSet,
01584 OSUINT32 abits, OSUINT32 ubits, OSUINT32 canSetBits);
01585
01601 EXTERNPER int pe_ConsUnsigned
01602 (OSCTXT* pctxt, OSUINT32 value, OSUINT32 lower, OSUINT32 upper);
01603
01623 EXTERNPER int pe_ConsUInt64 (OSCTXT* pctxt, OSUINT64 value,
01624 OSUINT64 lower, OSUINT64 upper);
01625
01641 EXTERNPER int pe_ConsWholeNumber
01642 (OSCTXT* pctxt, OSUINT32 adjusted_value, OSUINT32 range_value);
01643
01659 EXTERNPER int pe_ConsWholeNumber64
01660 (OSCTXT* pctxt, OSUINT64 adjusted_value, OSUINT64 range_value);
01661
01673 EXTERNPER int pe_DateStr (OSCTXT* pctxt, const char* string, OSUINT32 flags);
01674
01688 EXTERNPER int pe_DateTimeStr
01689 (OSCTXT* pctxt, const char* string, OSUINT32 flags);
01690
01702 EXTERNPER int pe_Duration (OSCTXT* pctxt, const char* string, OSBOOL rec);
01703
01707 EXTERNPER OSUINT32 pe_GetIntLen (OSUINT32 value);
01708
01714 EXTERNPER size_t pe_GetMsgBitCnt (OSCTXT* pctxt);
01715
01734 EXTERNPER OSOCTET* pe_GetMsgPtr (OSCTXT* pctxt, OSINT32* pLength);
01735
01746 EXTERNPER OSOCTET* pe_GetMsgPtrU (OSCTXT* pctxt, OSUINT32* pLength);
01747
01764 EXTERNPER int pe_Interval
01765 (OSCTXT* pctxt, const char* string, OSBOOL rec,
01766 OSUINT32 startFlags, OSUINT32 endFlags);
01767
01778 EXTERNPER int pe_Length (OSCTXT* pctxt, OSUINT32 value);
01779
01790 EXTERNPER int pe_NonNegBinInt (OSCTXT* pctxt, OSUINT32 value);
01791
01802 EXTERNPER int pe_NonNegBinInt64 (OSCTXT* pctxt, OSUINT64 value);
01803
01816 EXTERNPER int pe_ObjectIdentifier (OSCTXT* pctxt, ASN1OBJID* pvalue);
01817
01818 #ifndef _NO_INT64_SUPPORT
01819
01832 EXTERNPER int pe_oid64 (OSCTXT* pctxt, ASN1OID64* pvalue);
01833 #endif
01834
01847 EXTERNPER int pe_RelativeOID (OSCTXT* pctxt, ASN1OBJID* pvalue);
01848
01862
01863
01864 #define pe_octets(pctxt,pvalue,nbits) \
01865 rtxEncBitsFromByteArray(pctxt,pvalue,nbits)
01866
01879 EXTERNPER int pe_OctetString
01880 (OSCTXT* pctxt, OSUINT32 numocts, const OSOCTET* data);
01881
01897 EXTERNPER int pe_OpenType
01898 (OSCTXT* pctxt, OSUINT32 numocts, const OSOCTET* data);
01899
01915 EXTERNPER int pe_OpenTypeEnd (OSCTXT* pctxt, OSUINT32 pos, void* pPerField);
01916
01935 EXTERNPER int pe_OpenTypeExt
01936 (OSCTXT* pctxt, OSRTDList* pElemList);
01937
01947 EXTERNPER int pe_OpenTypeExtBits
01948 (OSCTXT* pctxt, OSRTDList* pElemList);
01949
01964 EXTERNPER int pe_OpenTypeStart
01965 (OSCTXT* pctxt, OSUINT32* pPos, void** ppPerField);
01966
01984 EXTERNPER int pe_Real (OSCTXT* pctxt, OSREAL value);
01985
02000 EXTERNPER int pe_SmallNonNegWholeNumber (OSCTXT* pctxt, OSUINT32 value);
02001
02013 EXTERNPER int pe_SemiConsInteger
02014 (OSCTXT* pctxt, OSINT32 value, OSINT32 lower);
02015
02016 #ifndef _NO_INT64_SUPPORT
02017
02028 EXTERNPER int pe_SemiConsInt64
02029 (OSCTXT* pctxt, OSINT64 value, OSINT64 lower);
02030 #endif
02031
02043 EXTERNPER int pe_SemiConsUnsigned
02044 (OSCTXT* pctxt, OSUINT32 value, OSUINT32 lower);
02045
02046 #ifndef _NO_INT64_SUPPORT
02047
02059 EXTERNPER int pe_SemiConsUInt64
02060 (OSCTXT* pctxt, OSUINT64 value, OSUINT64 lower);
02061 #endif
02062
02075 EXTERNPER int pe_TimeStr (OSCTXT* pctxt, const char* string, OSUINT32 flags);
02076
02086 EXTERNPER int pe_UnconsLength (OSCTXT* pctxt, OSUINT32 value);
02087
02097 EXTERNPER int pe_UnconsInteger (OSCTXT* pctxt, OSINT32 value);
02098
02099 #ifndef _NO_INT64_SUPPORT
02100
02109 EXTERNPER int pe_UnconsInt64 (OSCTXT* pctxt, OSINT64 value);
02110 #endif
02111
02121 EXTERNPER int pe_UnconsUnsigned (OSCTXT* pctxt, OSUINT32 value);
02122
02123 #ifndef _NO_INT64_SUPPORT
02124
02134 EXTERNPER int pe_UnconsUInt64 (OSCTXT* pctxt, OSUINT64 value);
02135 #endif
02136
02149 EXTERNPER int pe_VarWidthCharString (OSCTXT* pctxt, const char* value);
02150
02160 EXTERNPER int pe_YearInt (OSCTXT* pctxt, OSINT32 value);
02161
02175 EXTERNPER int pe_Real10 (OSCTXT* pctxt, const char* pvalue);
02176
02179
02180
02181
02202 EXTERNPER int pu_addSizeConstraint (OSCTXT* pctxt, const Asn1SizeCnst* pSize);
02203
02204 EXTERNPER OSBOOL pu_alignCharStr
02205 (OSCTXT* pctxt, OSUINT32 len, OSUINT32 nbits, Asn1SizeCnst* pSize);
02206
02207 EXTERNPER OSUINT32 pu_bitcnt (OSUINT32 value);
02208
02209 EXTERNPER Asn1SizeCnst* pu_checkSize
02210 (Asn1SizeCnst* pSizeList, OSUINT32 value, OSBOOL* pExtendable);
02211
02225 EXTERNPER int pu_checkSizeExt
02226 (Asn1SizeCnst* pSizeCnst, OSUINT32 value, OSBOOL* pExtendable,
02227 Asn1SizeValueRange* pSizeRange, OSBOOL* pExtSize);
02228
02242 EXTERNPER void pu_freeContext (OSCTXT* pctxt);
02243
02244 EXTERNPER size_t pu_getMaskAndIndex (size_t bitOffset, unsigned char* pMask);
02245
02260 EXTERNPER size_t pu_getMsgLen (OSCTXT* pctxt);
02261
02276 EXTERNPER size_t pu_getMsgLenBits (OSCTXT* pctxt);
02277
02286 EXTERNPER void pu_hexdump (OSCTXT* pctxt);
02287
02304 EXTERNPER int pu_setBuffer
02305 (OSCTXT* pctxt, OSOCTET* bufaddr, size_t bufsiz, OSBOOL aligned);
02306
02307 #define pd_setp(pctxt, bufaddr, bufsiz, aligned) \
02308 pu_setBuffer(pctxt, bufaddr, bufsiz, aligned)
02309
02310 #define pe_setp(pctxt, bufaddr, bufsiz, aligned) \
02311 pu_setBuffer(pctxt, bufaddr, bufsiz, aligned)
02312
02313 #define pe_resetp(pctxt) rtxResetContext(pctxt)
02314 #define pd_resetp(pctxt) rtxResetContext(pctxt)
02315
02316
02317
02345 EXTERNPER int pu_initContext
02346 (OSCTXT* pctxt, OSOCTET* bufaddr, OSUINT32 bufsiz, OSBOOL aligned);
02347
02364 EXTERNPER int pu_initContextBuffer (OSCTXT* pTarget, OSCTXT* pSource);
02365
02366 EXTERNPER const char* pu_getFullName
02367 (OSCTXT* pctxt, const char* suffix);
02368
02369 EXTERNPER void pu_init16BitCharSet
02370 (Asn116BitCharSet* pCharSet, OSUNICHAR first, OSUNICHAR last,
02371 OSUINT32 abits, OSUINT32 ubits);
02372
02379 EXTERNPER void pu_insLenField (OSCTXT* pctxt);
02380
02388 EXTERNPER OSBOOL pu_isExtendableSize (const Asn1SizeCnst* pSizeCnst);
02389
02397 EXTERNPER OSBOOL pu_isFixedSize (const Asn1SizeCnst* pSizeList);
02398
02423 EXTERNPER OSCTXT* pu_newContext
02424 (OSOCTET* bufaddr, OSUINT32 bufsiz, OSBOOL aligned);
02425
02426 EXTERNPER PERField* pu_newField
02427 (OSCTXT* pctxt, const char* nameSuffix);
02428
02429 EXTERNPER void pu_initFieldList (OSCTXT* pctxt, OSINT16 bitOffset);
02430
02434 EXTERNPER void pu_popName (OSCTXT* pctxt);
02435
02442 EXTERNPER void pu_pushElemName (OSCTXT* pctxt, int index);
02443
02448 EXTERNPER void pu_pushName (OSCTXT* pctxt, const char* name);
02449
02461 EXTERNPER void pu_setCharSet (Asn1CharSet* pCharSet, const char* permSet);
02462
02477 EXTERNPER void pu_set16BitCharSet
02478 (OSCTXT* pctxt, Asn116BitCharSet* pCharSet, Asn116BitCharSet* pAlphabet);
02479
02480
02489 EXTERNPER void pu_set16BitCharSetFromRange
02490 (Asn116BitCharSet* pCharSet, OSUINT16 firstChar, OSUINT16 lastChar);
02491
02492 EXTERNPER void pu_setFldBitCount (OSCTXT* pctxt);
02493
02494 EXTERNPER void pu_setFldBitOffset (OSCTXT* pctxt);
02495
02496 EXTERNPER void pu_setFldListFromCtxt (OSCTXT* pctxt, OSCTXT* srcctxt);
02497
02498 EXTERNPER void pu_setOpenTypeFldList (OSCTXT* pctxt, OSRTSList* plist);
02499
02500 EXTERNPER OSBOOL pu_setTrace (OSCTXT* pCtxt, OSBOOL value);
02501
02502 EXTERNPER void pu_setAligned (OSCTXT* pctxt, OSBOOL value);
02503
02518 EXTERNPER void pu_bindump (OSCTXT* pctxt, const char* varname);
02519
02520 EXTERNPER void pu_dumpField
02521 (OSCTXT* pctxt, PERField* pField, const char* varname,
02522 size_t nextBitOffset, BinDumpBuffer* pbuf);
02523
02524 EXTERNPER void pu_init32BitCharSet
02525 (Asn132BitCharSet* pCharSet, OS32BITCHAR first, OS32BITCHAR last,
02526 OSUINT32 abits, OSUINT32 ubits);
02527
02542 EXTERNPER void pu_set32BitCharSet
02543 (OSCTXT* pctxt, Asn132BitCharSet* pCharSet, Asn132BitCharSet* pAlphabet);
02544
02553 EXTERNPER void pu_set32BitCharSetFromRange
02554 (Asn132BitCharSet* pCharSet, OSUINT32 firstChar, OSUINT32 lastChar);
02555
02565 EXTERNPER int pu_GetLibVersion ();
02566
02574 EXTERNPER const char* pu_GetLibInfo ();
02575
02580 #ifdef __cplusplus
02581 }
02582 #endif
02583
02584
02585
02586 #define pd_bit(pctxt,pvalue) rtxDecBit(pctxt,pvalue)
02587
02588 #define pd_bits(pctxt,pvalue,nbits) rtxDecBits(pctxt,pvalue,nbits)
02589
02590 #define pd_octets(pctxt,pbuffer,bufsiz,nbits) \
02591 rtxDecBitsToByteArray(pctxt,pbuffer,bufsiz,nbits)
02592
02593 #define pe_GeneralString(pctxt,value,permCharSet) \
02594 pe_VarWidthCharString(pctxt, value)
02595
02596 #define pe_GraphicString(pctxt,value,permCharSet) \
02597 pe_VarWidthCharString(pctxt, value)
02598
02599 #define pe_T61String(pctxt,value,permCharSet) \
02600 pe_VarWidthCharString(pctxt, value)
02601
02602 #define pe_TeletexString(pctxt,value,permCharSet) \
02603 pe_VarWidthCharString(pctxt, value)
02604
02605 #define pe_VideotexString(pctxt,value,permCharSet) \
02606 pe_VarWidthCharString(pctxt, value)
02607
02608 #define pe_ObjectDescriptor(pctxt,value,permCharSet) \
02609 pe_VarWidthCharString(pctxt, value)
02610
02611 #define pe_UTF8String(pctxt,value,permCharSet) \
02612 pe_VarWidthCharString(pctxt, value)
02613
02614 #define pe_IA5String(pctxt,value,permCharSet) \
02615 pe_ConstrainedStringEx (pctxt, value, permCharSet, 8, 7, 7)
02616
02617 #define pe_NumericString(pctxt,value,permCharSet) \
02618 pe_ConstrainedStringEx (pctxt, value, \
02619 (permCharSet == 0)?NUM_CANSET:permCharSet, 4, 4, 4)
02620
02621 #define pe_PrintableString(pctxt,value,permCharSet) \
02622 pe_ConstrainedStringEx (pctxt, value, permCharSet, 8, 7, 7)
02623
02624 #define pe_VisibleString(pctxt,value,permCharSet) \
02625 pe_ConstrainedStringEx (pctxt, value, permCharSet, 8, 7, 7)
02626
02627 #define pe_ISO646String pe_IA5String
02628 #define pe_GeneralizedTime pe_IA5String
02629 #define pe_UTCTime pe_GeneralizedTime
02630
02631 #define pd_GeneralString(pctxt,pvalue,permCharSet) \
02632 pd_VarWidthCharString (pctxt, pvalue)
02633
02634 #define pd_GraphicString(pctxt,pvalue,permCharSet) \
02635 pd_VarWidthCharString (pctxt, pvalue)
02636
02637 #define pd_VideotexString(pctxt,pvalue,permCharSet) \
02638 pd_VarWidthCharString (pctxt, pvalue)
02639
02640 #define pd_TeletexString(pctxt,pvalue,permCharSet) \
02641 pd_VarWidthCharString (pctxt, pvalue)
02642
02643 #define pd_T61String(pctxt,pvalue,permCharSet) \
02644 pd_VarWidthCharString (pctxt, pvalue)
02645
02646 #define pd_ObjectDescriptor(pctxt,pvalue,permCharSet) \
02647 pd_VarWidthCharString (pctxt, pvalue)
02648
02649 #define pd_UTF8String(pctxt,pvalue,permCharSet) \
02650 pd_VarWidthCharString (pctxt, pvalue)
02651
02652 #define pd_IA5String(pctxt,pvalue,permCharSet) \
02653 pd_ConstrainedStringEx (pctxt, pvalue, permCharSet, 8, 7, 7)
02654
02655 #define pd_NumericString(pctxt,pvalue,permCharSet) \
02656 pd_ConstrainedStringEx (pctxt, pvalue, \
02657 (permCharSet == 0)?NUM_CANSET:permCharSet, 4, 4, 4)
02658
02659 #define pd_PrintableString(pctxt,pvalue,permCharSet) \
02660 pd_ConstrainedStringEx (pctxt, pvalue, permCharSet, 8, 7, 7)
02661
02662 #define pd_VisibleString(pctxt,pvalue,permCharSet) \
02663 pd_ConstrainedStringEx (pctxt, pvalue, permCharSet, 8, 7, 7)
02664
02665 #define pd_ISO646String pd_IA5String
02666 #define pd_GeneralizedTime pd_IA5String
02667 #define pd_UTCTime pd_GeneralizedTime
02668 #define pe_GetMsgLen pu_getMsgLen
02669
02670 #define pe_ExpandBuffer(pctxt,nbytes) rtxCheckOutputBuffer(pctxt,nbytes)
02671
02672
02673
02674
02675 #define pd_AnyCentury(pctxt,string) \
02676 pd_DateStr (pctxt, string, OSANY|OSCENTURY)
02677
02678
02679 #define pd_AnyCenturyInt(pctxt,pvalue) \
02680 pd_UnconsInteger (pctxt, pvalue)
02681
02682
02683 #define pd_AnyDate(pctxt,string) \
02684 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH|OSDAY)
02685
02686
02687 #define pd_AnyYear(pctxt,string) \
02688 pd_DateStr (pctxt, string, OSANY|OSYEAR)
02689
02690
02691 #define pd_AnyYearInt(pctxt,pvalue) \
02692 pd_UnconsInteger (pctxt, pvalue)
02693
02694
02695 #define pd_AnyYearDay(pctxt,string) \
02696 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSDAY)
02697
02698
02699 #define pd_AnyYearMonth(pctxt,string) \
02700 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH)
02701
02702
02703 #define pd_AnyYearMonthDay(pctxt,string) \
02704 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH|OSDAY)
02705
02706
02707 #define pd_AnyYearWeek(pctxt,string) \
02708 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSWEEK)
02709
02710
02711 #define pd_AnyYearWeekDay(pctxt,string) \
02712 pd_DateStr (pctxt, string, OSANY|OSYEAR|OSWEEK|OSDAY)
02713
02714
02715 #define pd_Century(pctxt,string) \
02716 pd_DateStr (pctxt, string, OSCENTURY)
02717
02718
02719 #define pd_CenturyInt(pctxt,pvalue) \
02720 pd_ConsUInt8 (pctxt, pvalue, 0, 99)
02721
02722
02723 #define pd_Date(pctxt,string) \
02724 pd_DateStr (pctxt, string, OSYEAR_BASIC|OSYEAR|OSMONTH|OSDAY);
02725
02726
02727 #define pd_DateTime(pctxt,string) \
02728 pd_DateTimeStr (pctxt, string, \
02729 OSYEAR_BASIC|OSYEAR|OSMONTH|OSDAY|OSHOURS|OSMINUTES|OSSECONDS);
02730
02731
02732 #define pd_DurationInterval(pctxt,string) \
02733 pd_Duration (pctxt, string, FALSE)
02734
02735
02736
02737 #define pd_DurationEndDateInterval(pctxt,string,flags) \
02738 pd_Interval (pctxt, string, FALSE, OSDURATION, flags)
02739
02740
02741
02742 #define pd_DurationEndTimeInterval(pctxt,string,flags) \
02743 pd_Interval (pctxt, string, FALSE, OSDURATION, flags)
02744
02745
02746
02747 #define pd_DurationEndDateTimeInterval(pctxt,string,flags) \
02748 pd_Interval (pctxt, string, FALSE, OSDURATION, flags)
02749
02750 #ifdef BINARY_HOURS
02751
02752 #define pd_Hours(pctxt,pvalue) \
02753 pd_ConsInt8 (pctxt, pvalue, 0, 24)
02754
02755 #define pd_HoursUtc(pctxt,pvalue) \
02756 pd_ConsInt8 (pctxt, pvalue, 0, 24)
02757
02758 #else
02759
02760
02761 #define pd_Hours(pctxt,string) \
02762 pd_TimeStr (pctxt, string, OSHOURS)
02763
02764
02765 #define pd_HoursUtc(pctxt,string) \
02766 pd_TimeStr (pctxt, string, OSHOURS|OSUTC)
02767
02768 #endif
02769
02770
02771 #define pd_HoursAndDiff(pctxt,string) \
02772 pd_TimeStr (pctxt, string, OSHOURS|OSDIFF)
02773
02774
02775 #define pd_HoursAndFraction(pctxt,string,n) \
02776 pd_TimeStr (pctxt, string, OSHOURS|(n))
02777
02778
02779
02780 #define pd_HoursUtcAndFraction(pctxt,string,n) \
02781 pd_TimeStr (pctxt, string, OSHOURS|OSUTC|(n))
02782
02783
02784
02785 #define pd_HoursAndDiffAndFraction(pctxt,string,n) \
02786 pd_TimeStr (pctxt, string, OSHOURS|OSDIFF|(n))
02787
02788
02789 #define pd_Minutes(pctxt,string) \
02790 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES)
02791
02792
02793 #define pd_MinutesUtc(pctxt,string) \
02794 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSUTC)
02795
02796
02797 #define pd_MinutesAndDiff(pctxt,string) \
02798 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSDIFF)
02799
02800
02801
02802 #define pd_MinutesAndFraction(pctxt,string,n) \
02803 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|(n))
02804
02805
02806
02807 #define pd_MinutesUtcAndFraction(pctxt,string,n) \
02808 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSUTC|(n))
02809
02810
02811
02812 #define pd_MinutesAndDiffAndFraction(pctxt,string,n) \
02813 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSDIFF|(n))
02814
02815
02816
02817 #define pd_RecStartEndDateInterval(pctxt,string,flags) \
02818 pd_Interval (pctxt, string, TRUE, flags, flags)
02819
02820
02821
02822 #define pd_RecStartEndTimeInterval(pctxt,string,flags) \
02823 pd_Interval (pctxt, string, TRUE, flags, flags)
02824
02825
02826
02827 #define pd_RecStartEndDateTimeInterval(pctxt,string,flags) \
02828 pd_Interval (pctxt, string, TRUE, flags, flags)
02829
02830
02831
02832 #define pd_RecDurationInterval(pctxt,string) \
02833 pd_Duration (pctxt, string, TRUE)
02834
02835
02836
02837 #define pd_RecStartDateDurationInterval(pctxt,string,flags) \
02838 pd_Interval (pctxt, string, TRUE, flags, OSDURATION)
02839
02840
02841
02842 #define pd_RecStartTimeDurationInterval(pctxt,string,flags) \
02843 pd_Interval (pctxt, string, TRUE, flags, OSDURATION)
02844
02845
02846
02847 #define pd_RecStartDateTimeDurationInterval(pctxt,string,flags) \
02848 pd_Interval (pctxt, string, TRUE, flags, OSDURATION)
02849
02850
02851
02852 #define pd_RecDurationEndDateInterval(pctxt,string,flags) \
02853 pd_Interval (pctxt, string, TRUE, OSDURATION, flags)
02854
02855
02856
02857 #define pd_RecDurationEndTimeInterval(pctxt,string,flags) \
02858 pd_Interval (pctxt, string, TRUE, OSDURATION, flags)
02859
02860
02861
02862 #define pd_RecDurationEndDateTimeInterval(pctxt,string,flags) \
02863 pd_Interval (pctxt, string, TRUE, OSDURATION, flags)
02864
02865
02866
02867 #define pd_StartEndDateInterval(pctxt,string,flags) \
02868 pd_Interval (pctxt, string, FALSE, flags, flags)
02869
02870
02871
02872 #define pd_StartEndTimeInterval(pctxt,string,flags) \
02873 pd_Interval (pctxt, string, FALSE, flags, flags)
02874
02875
02876
02877 #define pd_StartEndDateTimeInterval(pctxt,string,flags) \
02878 pd_Interval (pctxt, string, FALSE, flags, flags)
02879
02880
02881
02882 #define pd_StartDateDurationInterval(pctxt,string,flags) \
02883 pd_Interval (pctxt, string, FALSE, flags, OSDURATION)
02884
02885
02886
02887 #define pd_StartTimeDurationInterval(pctxt,string,flags) \
02888 pd_Interval (pctxt, string, FALSE, flags, OSDURATION)
02889
02890
02891
02892 #define pd_StartDateTimeDurationInterval(pctxt,string,flags) \
02893 pd_Interval (pctxt, string, FALSE, flags, OSDURATION)
02894
02895
02896 #define pd_TimeOfDay(pctxt,string) \
02897 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS)
02898
02899
02900 #define pd_TimeOfDayUtc(pctxt,string) \
02901 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSUTC)
02902
02903
02904 #define pd_TimeOfDayAndDiff(pctxt,string) \
02905 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSDIFF)
02906
02907
02908
02909 #define pd_TimeOfDayAndFraction(pctxt,string,n) \
02910 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|(n))
02911
02912
02913
02914 #define pd_TimeOfDayUtcAndFraction(pctxt,string,n) \
02915 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSUTC|(n))
02916
02917
02918
02919 #define pd_TimeOfDayAndDiffAndFraction(pctxt,string,n) \
02920 pd_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSDIFF|(n))
02921
02922
02923 #define pd_Year(pctxt,string) \
02924 pd_DateStr (pctxt, string, OSYEAR)
02925
02926
02927 #define pd_YearDay(pctxt,string) \
02928 pd_DateStr (pctxt, string, OSYEAR|OSDAY)
02929
02930
02931 #define pd_YearMonth(pctxt,string) \
02932 pd_DateStr (pctxt, string, OSYEAR|OSMONTH)
02933
02934
02935 #define pd_YearMonthDay(pctxt,string) \
02936 pd_DateStr (pctxt, string, OSYEAR|OSMONTH|OSDAY);
02937
02938
02939 #define pd_YearWeek(pctxt,string) \
02940 pd_DateStr (pctxt, string, OSYEAR|OSWEEK)
02941
02942
02943 #define pd_YearWeekDay(pctxt,string) \
02944 pd_DateStr (pctxt, string, OSYEAR|OSWEEK|OSDAY)
02945
02946
02947
02948
02949 #define pe_AnyCentury(pctxt,string) \
02950 pe_DateStr (pctxt, string, OSANY|OSCENTURY)
02951
02952
02953 #define pe_AnyCenturyInt(pctxt,value) \
02954 pe_UnconsInteger (pctxt, value)
02955
02956
02957 #define pe_AnyDate(pctxt,string) \
02958 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH|OSDAY)
02959
02960
02961 #define pe_AnyYear(pctxt,string) \
02962 pe_DateStr (pctxt, string, OSANY|OSYEAR)
02963
02964
02965 #define pe_AnyYearInt(pctxt,value) \
02966 pe_UnconsInteger (pctxt, value)
02967
02968
02969 #define pe_AnyYearDay(pctxt,string) \
02970 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSDAY)
02971
02972
02973 #define pe_AnyYearMonth(pctxt,string) \
02974 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH)
02975
02976
02977 #define pe_AnyYearMonthDay(pctxt,string) \
02978 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSMONTH|OSDAY)
02979
02980
02981 #define pe_AnyYearWeek(pctxt,string) \
02982 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSWEEK)
02983
02984
02985 #define pe_AnyYearWeekDay(pctxt,string) \
02986 pe_DateStr (pctxt, string, OSANY|OSYEAR|OSWEEK|OSDAY)
02987
02988
02989 #define pe_Century(pctxt,string) \
02990 pe_DateStr (pctxt, string, OSCENTURY)
02991
02992
02993 #define pe_CenturyInt(pctxt,value) \
02994 pe_ConsUnsigned (pctxt, value, 0, 99)
02995
02996
02997 #define pe_Date(pctxt,string) \
02998 pe_DateStr (pctxt, string, OSYEAR_BASIC|OSYEAR|OSMONTH|OSDAY)
02999
03000
03001 #define pe_DateTime(pctxt,string) \
03002 pe_DateTimeStr (pctxt, string, \
03003 OSYEAR_BASIC|OSYEAR|OSMONTH|OSDAY|OSHOURS|OSMINUTES|OSSECONDS)
03004
03005
03006 #define pe_DurationInterval(pctxt,string) \
03007 pe_Duration (pctxt, string, FALSE)
03008
03009
03010
03011 #define pe_DurationEndDateInterval(pctxt,string,flags) \
03012 pe_Interval (pctxt, string, FALSE, OSDURATION, flags)
03013
03014
03015
03016 #define pe_DurationEndTimeInterval(pctxt,string,flags) \
03017 pe_Interval (pctxt, string, FALSE, OSDURATION, flags)
03018
03019
03020
03021 #define pe_DurationEndDateTimeInterval(pctxt,string,flags) \
03022 pe_Interval (pctxt, string, FALSE, OSDURATION, flags)
03023
03024 #ifdef BINARY_HOURS
03025
03026 #define pe_Hours(pctxt,value) \
03027 pe_ConsUnsigned (pctxt, value, 0, 24)
03028
03029 #define pe_HoursUtc(pctxt,value) \
03030 pe_ConsUnsigned (pctxt, value, 0, 24)
03031
03032 #else
03033
03034
03035 #define pe_Hours(pctxt,string) \
03036 pe_TimeStr (pctxt, string, OSHOURS)
03037
03038
03039 #define pe_HoursUtc(pctxt,string) \
03040 pe_TimeStr (pctxt, string, OSHOURS|OSUTC)
03041
03042 #endif
03043
03044
03045 #define pe_Hours(pctxt,string) \
03046 pe_TimeStr (pctxt, string, OSHOURS)
03047
03048
03049 #define pe_HoursUtc(pctxt,string) \
03050 pe_TimeStr (pctxt, string, OSHOURS|OSUTC)
03051
03052
03053 #define pe_HoursAndDiff(pctxt,string) \
03054 pe_TimeStr (pctxt, string, OSHOURS|OSDIFF)
03055
03056
03057 #define pe_HoursAndFraction(pctxt,string,n) \
03058 pe_TimeStr (pctxt, string, OSHOURS|(n))
03059
03060
03061
03062 #define pe_HoursUtcAndFraction(pctxt,string,n) \
03063 pe_TimeStr (pctxt, string, OSHOURS|OSUTC|(n))
03064
03065
03066
03067 #define pe_HoursAndDiffAndFraction(pctxt,string,n) \
03068 pe_TimeStr (pctxt, string, OSHOURS|OSDIFF|(n))
03069
03070
03071 #define pe_Minutes(pctxt,string) \
03072 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES)
03073
03074
03075 #define pe_MinutesUtc(pctxt,string) \
03076 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSUTC)
03077
03078
03079 #define pe_MinutesAndDiff(pctxt,string) \
03080 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSDIFF)
03081
03082
03083
03084 #define pe_MinutesAndFraction(pctxt,string,n) \
03085 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|(n))
03086
03087
03088
03089 #define pe_MinutesUtcAndFraction(pctxt,string,n) \
03090 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSUTC|(n))
03091
03092
03093
03094 #define pe_MinutesAndDiffAndFraction(pctxt,string,n) \
03095 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSDIFF|(n))
03096
03097
03098
03099 #define pe_RecStartEndDateInterval(pctxt,string,flags) \
03100 pe_Interval (pctxt, string, TRUE, flags, flags)
03101
03102
03103
03104 #define pe_RecStartEndTimeInterval(pctxt,string,flags) \
03105 pe_Interval (pctxt, string, TRUE, flags, flags)
03106
03107
03108
03109 #define pe_RecStartEndDateTimeInterval(pctxt,string,flags) \
03110 pe_Interval (pctxt, string, TRUE, flags, flags)
03111
03112
03113
03114 #define pe_RecDurationInterval(pctxt,string) \
03115 pe_Duration (pctxt, string, TRUE)
03116
03117
03118
03119 #define pe_RecStartDateDurationInterval(pctxt,string,flags) \
03120 pe_Interval (pctxt, string, TRUE, flags, OSDURATION)
03121
03122
03123
03124 #define pe_RecStartTimeDurationInterval(pctxt,string,flags) \
03125 pe_Interval (pctxt, string, TRUE, flags, OSDURATION)
03126
03127
03128
03129 #define pe_RecStartDateTimeDurationInterval(pctxt,string,flags) \
03130 pe_Interval (pctxt, string, TRUE, flags, OSDURATION)
03131
03132
03133
03134 #define pe_RecDurationEndDateInterval(pctxt,string,flags) \
03135 pe_Interval (pctxt, string, TRUE, OSDURATION, flags)
03136
03137
03138
03139 #define pe_RecDurationEndTimeInterval(pctxt,string,flags) \
03140 pe_Interval (pctxt, string, TRUE, OSDURATION, flags)
03141
03142
03143
03144 #define pe_RecDurationEndDateTimeInterval(pctxt,string,flags) \
03145 pe_Interval (pctxt, string, TRUE, OSDURATION, flags)
03146
03147
03148
03149 #define pe_StartEndDateInterval(pctxt,string,flags) \
03150 pe_Interval (pctxt, string, FALSE, flags, flags)
03151
03152
03153
03154 #define pe_StartEndTimeInterval(pctxt,string,flags) \
03155 pe_Interval (pctxt, string, FALSE, flags, flags)
03156
03157
03158
03159 #define pe_StartEndDateTimeInterval(pctxt,string,flags) \
03160 pe_Interval (pctxt, string, FALSE, flags, flags)
03161
03162
03163
03164 #define pe_StartDateDurationInterval(pctxt,string,flags) \
03165 pe_Interval (pctxt, string, FALSE, flags, OSDURATION)
03166
03167
03168
03169 #define pe_StartTimeDurationInterval(pctxt,string,flags) \
03170 pe_Interval (pctxt, string, FALSE, flags, OSDURATION)
03171
03172
03173
03174 #define pe_StartDateTimeDurationInterval(pctxt,string,flags) \
03175 pe_Interval (pctxt, string, FALSE, flags, OSDURATION)
03176
03177
03178 #define pe_TimeOfDay(pctxt,string) \
03179 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS)
03180
03181
03182 #define pe_TimeOfDayUtc(pctxt,string) \
03183 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSUTC)
03184
03185
03186 #define pe_TimeOfDayAndDiff(pctxt,string) \
03187 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSDIFF)
03188
03189
03190
03191 #define pe_TimeOfDayAndFraction(pctxt,string,n) \
03192 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|(n))
03193
03194
03195
03196 #define pe_TimeOfDayUtcAndFraction(pctxt,string,n) \
03197 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSUTC|(n))
03198
03199
03200
03201 #define pe_TimeOfDayAndDiffAndFraction(pctxt,string,n) \
03202 pe_TimeStr (pctxt, string, OSHOURS|OSMINUTES|OSSECONDS|OSDIFF|(n))
03203
03204
03205 #define pe_Year(pctxt,string) \
03206 pe_DateStr (pctxt, string, OSYEAR)
03207
03208
03209 #define pe_YearDay(pctxt,string) \
03210 pe_DateStr (pctxt, string, OSYEAR|OSDAY)
03211
03212
03213 #define pe_YearMonth(pctxt,string) \
03214 pe_DateStr (pctxt, string, OSYEAR|OSMONTH)
03215
03216
03217 #define pe_YearMonthDay(pctxt,string) \
03218 pe_DateStr (pctxt, string, OSYEAR|OSMONTH|OSDAY)
03219
03220
03221 #define pe_YearWeek(pctxt,string) \
03222 pe_DateStr (pctxt, string, OSYEAR|OSWEEK)
03223
03224
03225 #define pe_YearWeekDay(pctxt,string) \
03226 pe_DateStr (pctxt, string, OSYEAR|OSWEEK|OSDAY)
03227
03228
03229
03230
03231 EXTERNPER int pu_checkSizeConstraint (OSCTXT* pctxt, int size);
03232 EXTERNPER Asn1SizeCnst* pu_getSizeConstraint (OSCTXT* pctxt, OSBOOL extbit);
03233 EXTERNPER int pu_getBitOffset (OSCTXT* pctxt);
03234 EXTERNPER void pu_setBitOffset (OSCTXT* pctxt, int bitOffset);
03235
03238 #endif