// -------------------------------------------------------------------------------------- // Assumes the buffer is sized correctly for the given plaintext length. // NOTE: Use PadLen to allocate the memory. // -------------------------------------------------------------------------------------- void PadWrite( int ptLen, int blocksize, BYTE *pt ) { int padLen = PadLen( ptLen, blocksize ); BYTE pad = padLen - ptLen; for(int i=ptLen; i<padLen; i++) { pt[i] = pad; } }
LFSubField* LFOneMethod::Construct( const char* ptr ) /***************************************************/ { uint nameLen = PrefixStrLen(ptr+sizeof(lf_onemethod)); return new LFOneMethod( * (lf_onemethod *) ptr, ptr + sizeof(lf_onemethod), nameLen+PadLen(ptr+sizeof(lf_onemethod)+nameLen)); }
LFSubField* LFNestedType::Construct( const char* ptr ) /****************************************************/ { uint nameLen = PrefixStrLen(ptr+sizeof(lf_nestedtype)); return new LFNestedType( * (lf_nestedtype *) ptr, ptr + sizeof(lf_nestedtype), nameLen+PadLen(ptr+sizeof(lf_nestedtype)+nameLen)); }
LFSubField* LFMember::Construct2( const char* ptr ) /*************************************************/ { uint nameLen = PrefixStrLen(ptr+sizeof(lf_member)); return new LFMember( * (lf_member *) ptr, ptr + sizeof(lf_member), nameLen + PadLen(ptr+sizeof(lf_member)+nameLen)); }
LFSubField* LFFriendFcn::Construct( const char* ptr ) /***************************************************/ { uint nameLen = ::PrefixStrLen(ptr+sizeof(lf_friendfcn)); return new LFFriendFcn( * (lf_friendfcn *) ptr, ptr + sizeof(lf_friendfcn), nameLen + PadLen(ptr+sizeof(lf_friendfcn)+nameLen)); }
LFSubField* LFBClass::Construct( const char* ptr ) /************************************************/ { uint offsetLen = ::NumLeafLength(ptr+sizeof(lf_bclass)); return new LFBClass( * (lf_bclass *) ptr, ptr + sizeof(lf_bclass), offsetLen + PadLen(ptr+sizeof(lf_bclass)+offsetLen)); }
LFSubField* LFMember::Construct1( const char* ptr ) /*************************************************/ { uint offsetLen = ::NumLeafLength( ptr + sizeof(lf_member) ); uint nameLen = ::PrefixStrLen(ptr+sizeof(lf_member)+offsetLen); return new LFMember( * (lf_member *) ptr, ptr + sizeof(lf_member), offsetLen + nameLen + PadLen(ptr+sizeof(lf_member)+offsetLen+nameLen)); }
LFSubField* LFEnumerate::Construct( const char* ptr ) /***************************************************/ { uint valueLen = ::NumLeafLength( ptr + sizeof(lf_enumerate) ); uint nameLen = ::PrefixStrLen(ptr+sizeof(lf_enumerate)+valueLen); return new LFEnumerate( * (lf_enumerate *) ptr, ptr + sizeof(lf_enumerate), valueLen + nameLen + PadLen(ptr+sizeof(lf_enumerate)+valueLen+nameLen)); }
LFSubField* LFVBClass::Construct( const char* ptr ) /*************************************************/ { uint vbpoffLen = ::NumLeafLength( ptr+sizeof(lf_vbclass) ); uint vboffLen = ::NumLeafLength( ptr+sizeof(lf_vbclass)+vbpoffLen ); return new LFVBClass( * (lf_vbclass *) ptr, ptr + sizeof(lf_vbclass), vbpoffLen + vboffLen + PadLen(ptr+sizeof(lf_vbclass)+vbpoffLen+vboffLen)); }