/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Copyright 1993 Microsoft Corporation Module Name : endianp.h Abtract : Contains private sizing routine definitions. Author : David Kays dkays December 1993 Revision History : --------------------------------------------------------------------*/ #ifndef _ENDIANP_ #define _ENDIANP_ // // These are no-exported APIs. // void NdrSimpleTypeConvert( PMIDL_STUB_MESSAGE pStubMsg, unsigned char FormatChar ); void NdrPointerConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Structures */ void NdrSimpleStructConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrConformantStructConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrHardStructConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrComplexStructConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Arrays */ void NdrFixedArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrConformantArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrConformantVaryingArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrVaryingArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrComplexArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Strings */ void NdrNonConformantStringConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrConformantStringConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Unions */ void NdrEncapsulatedUnionConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrNonEncapsulatedUnionConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Byte count pointer */ void NdrByteCountPointerConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* Transmit as and represent as convert */ void NdrXmitOrRepAsConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); /* User_marshall convert */ void NdrUserMarshalConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrInterfacePointerConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); void NdrContextHandleConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, unsigned char fConvertPointersOnly ); // // Other helper routines. // void NdrpPointerConvert( PMIDL_STUB_MESSAGE pStubMsg, uchar * pBufferMark, PFORMAT_STRING pFormat ); void NdrpStructConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, PFORMAT_STRING pFormatPointers, uchar fConvertPointersOnly ); void NdrpConformantArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, uchar fConvertPointersOnly ); void NdrpConformantVaryingArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, uchar fConvertPointersOnly ); void NdrpComplexArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, uchar fConvertPointersOnly ); void NdrpArrayConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, long Elements, uchar fConvertPointersOnly ); void NdrpUnionConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, uchar SwitchType, uchar fConvertPointersOnly ); void NdrpEmbeddedPointerConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); PFORMAT_STRING NdrpEmbeddedRepeatPointerConvert( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat ); typedef void (* PCONVERT_ROUTINE)( PMIDL_STUB_MESSAGE, PFORMAT_STRING, uchar ); typedef void (* PPRIVATE_CONVERT_ROUTINE)( PMIDL_STUB_MESSAGE, PFORMAT_STRING, uchar ); // function table defined in endian.c extern const PCONVERT_ROUTINE * pfnConvertRoutines; // // Conversion stuff. // extern const unsigned char EbcdicToAscii[]; #define NDR_FLOAT_INT_MASK (unsigned long)0X0000FFF0L #define NDR_BIG_IEEE_REP (unsigned long)0X00000000L #define NDR_LITTLE_IEEE_REP (unsigned long)0X00000010L #define NDR_LOCAL_ENDIAN_IEEE_REP NDR_LITTLE_IEEE_REP // // Masks defined for short byte swapping: // #define MASK_A_ (unsigned short)0XFF00 #define MASK__B (unsigned short)0X00FF // // Masks defined for long byte swapping: // #define MASK_AB__ (unsigned long)0XFFFF0000L #define MASK___CD (unsigned long)0X0000FFFFL #define MASK_A_C_ (unsigned long)0XFF00FF00L #define MASK__B_D (unsigned long)0X00FF00FFL #endif