/* any's and these are the ONLY any's that should call this function. */ void AsnAny::BDecContent (const AsnBuf &b, AsnTag tag, AsnLen len, AsnLen &bytesDecoded) { long lBytesToUnget = 0; lBytesToUnget += BytesInLen(len); lBytesToUnget += BytesInTag(tag); b.UnGetBytes(lBytesToUnget); anyBuf = new AsnBuf; b.GrabAny(*anyBuf, bytesDecoded); }
// BDec() // // Decoded ANY DEFINED BY or UNKNOWN ANY from 'b'. If an ANY DEFINED // BY is found it's will be decoded into value. If an UNKNOWN ANY is // found it's binary values will be copied into 'anyBuf'. // void AsnAny::BDec (const AsnBuf &b, AsnLen &bytesDecoded) { FUNC("AsnAny::BDec"); // ai will be NULL if this is an ANY (not an ANY DEFINED BY) if (ai == NULL) { anyBuf = new AsnBuf; b.GrabAny(*anyBuf, bytesDecoded); } else { // the type is already known clone it and use it's BDec to decode the // ASN.1 // value = ai->typeToClone->Clone(); if (value == NULL) { throw SnaccException(STACK_ENTRY, "typeToClone->Clone() failed", INVALID_ANY); } else value->BDec (b, bytesDecoded); } }