|
|
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 1989-1999 Microsoft Corporation
Module Name: output.hxx
Abstract:
Prototypes for all output routines.
Notes:
History:
Sep-18-1993 VibhasC Created.
----------------------------------------------------------------------------*/ #ifndef __OUTPUT_HXX__
#define __OUTPUT_HXX__
#include "nodeskl.hxx"
#include "ccb.hxx"
#include "analysis.hxx"
#include "expr.hxx"
#include "makexpr.hxx"
#include "prttype.hxx"
#include "sdesc.hxx"
#include "misccls.hxx"
/*****************************************************************************
local defines and includes. *****************************************************************************/
#define STANDARD_STUB_TAB (4)
#define NC_SIZE_RTN_NAME 0
#define NC_MARSHALL_RTN_NAME 1
#define NC_UNMARSHALL_RTN_NAME 2
#define NC_MEMSIZE_RTN_NAME 3
#define NC_FREE_RTN_NAME 4
enum GUIDFORMAT { GUIDFORMAT_RAW = 0, // Raw values (e.g. 0x0000,0x0000,...)
GUIDFORMAT_STRUCT = 1 // Struct init (e.g. {0x0000,0x0000,...})
};
/*****************************************************************************
prototypes. *****************************************************************************/
inline void Out_IndentInc( CCB * pCCB ) { pCCB->GetStream()->IndentInc(); }
inline void Out_IndentDec( CCB * pCCB ) { pCCB->GetStream()->IndentDec(); }
void Out_AddToBufferPointer( CCB * pCCB, expr_node * pResource, expr_node * pAmountExpr );
void Out_MarshallSimple( CCB * pCCB, RESOURCE * pResource, node_skl * pType, expr_node * pSource, BOOL fIncr, unsigned short Size ); void Out_ClientProcedureProlog( CCB * pCCB, node_skl * pType );
void Out_ServerProcedureProlog( CCB * pCCB, node_skl * pType, ITERATOR& LocalsList, ITERATOR& ParamsList, ITERATOR& TransientList );
void Out_ProcedureProlog( CCB * pCCB, PNAME pProcName, node_skl * pType, ITERATOR& LocalsList, ITERATOR& ParamsList, ITERATOR& TransientList );
void Out_CallManager( CCB * pCCB, expr_proc_call * pExpr, expr_node * pReturn, BOOL fIsCallback );
inline void Out_ProcClosingBrace( CCB * pCCB ) { pCCB->GetStream()->NewLine(); pCCB->GetStream()->Write( '}' ); pCCB->GetStream()->NewLine(); }
void Out_StubDescriptor( CG_HANDLE * pImplicitHandle, CCB * pCCB );
void Out_ClientLocalVariables( CCB * pCCB, ITERATOR& LocalVarList );
void Out_HandleInitialize( CCB * pCCB, ITERATOR& BindingParamList, expr_node * pAssignExpr, BOOL fAuto, unsigned short OpBits );
void Out_AutoHandleSendReceive( CCB * pCCB, expr_node * pDest, expr_node * pProc );
void Out_NormalSendReceive( CCB * pCCB, BOOL fAnyOuts );
void Out_NormalFreeBuffer( CCB * pCCB );
void Out_IncludeOfFile( CCB * pCCB, PFILENAME p, BOOL fAngleBracket );
void Out_EP_Info( CCB * pCCB, ITERATOR * I );
void Out_MKTYPLIB_Guid( CCB *pCCB, GUID_STRS & GStrs, char * szPrefix, char * szName );
void Out_Guid( CCB *pCCB, GUID_STRS & GStrs, GUIDFORMAT format = GUIDFORMAT_STRUCT );
void Out_IFInfo( CCB * pCCB, char * pCIntInfoTypeName, char * pCIntInfoVarName, char * pCIntInfoSizeOfString, GUID_STRS & UserGuidStrs,
unsigned short UserMajor, unsigned short UserMinor,
// GUID_STRS & XferGuidStrs,
// unsigned short XferSynMajor,
// unsigned short XferSynMinor,
char * pCallbackDispatchTable, int ProtSeqEpCount, char * ProtSeqEPTypeName, char * ProtSeqEPVarName, BOOL fNoDefaultEpv, BOOL fSide, BOOL fHasPipes );
void Out_OneSyntaxInfo( CCB * pCCB, BOOL IsForCallback, SYNTAX_ENUM syntaxType );
void Out_TransferSyntax( CCB *pCCB, GUID_STRS & XferGuidStr, unsigned short XferSynMajor, unsigned short XferSynMinor );
void Out_DispatchTableStuff( CCB * pCCB, ITERATOR& ProcList, short CountOfProcs );
void Out_ManagerEpv( CCB * pCCB, PNAME InterfaceName, ITERATOR& ProcList, short Count);
void Out_ServerStubMessageInit( CCB * pCCB );
void Out_FormatInfoExtern( CCB * pCCB ); void Out_TypeFormatStringExtern( CCB * pCCB ); void Out_ProcFormatStringExtern( CCB * pCCB );
void Out_StubDescriptorExtern( CCB * pCCB );
void Out_ProxyInfoExtern( CCB * pCCB );
void Out_InterpreterServerInfoExtern( CCB * pCCB );
void Out_NdrInitStackTop( CCB * pCCB );
void Out_NdrMarshallCall( CCB * pCCB, char * pRoutineName, char * pParamName, long FormatStringOffset, BOOL fTakeAddress, BOOL fDereference );
void Out_NdrUnmarshallCall( CCB * pCCB, char * pRoutineName, char * pParamName, long FormatStringOffset, BOOL fTakeAddress, BOOL fMustAllocFlag );
void Out_NdrBufferSizeCall( CCB * pCCB, char * pRoutineName, char * pParamName, long FormatStringOffset, BOOL fTakeAddress, BOOL fDereference, BOOL fPtrToStubMsg );
void Out_NdrFreeCall( CCB * pCCB, char * pRoutineName, char * pParamName, long FormatStringOffset, BOOL fTakeAddress, BOOL fDereference );
void Out_NdrConvert( CCB * pCCB, long FormatStringOffset, long ParamTotal, unsigned short ProcOptimFlags );
void Out_NdrNsGetBuffer( CCB * pCCB ); void Out_NdrGetBuffer( CCB * pCCB ); void Out_NdrNsSendReceive( CCB * pCCB ); void Out_NdrSendReceive( CCB * pCCB ); void Out_NdrFreeBuffer( CCB * pCCB );
void Out_FreeParamInline( CCB * pCCB );
void Out_CContextHandleMarshall( CCB * pCCB, char * pName, BOOL IsPointer );
void Out_SContextHandleMarshall( CCB * pCCB, char * pName, char * pRundownRoutineName );
void Out_SContextHandleNewMarshall( CCB * pCCB, char * pName, char * pRundownRoutineName, long TypeOffset );
void Out_CContextHandleUnmarshall( CCB * pCCB, char * pName, BOOL IsPointer, BOOL IsReturn );
void Out_SContextHandleUnmarshall( CCB * pCCB, char * pName, BOOL IsOutOnly );
void Out_SContextHandleNewUnmarshall( CCB * pCCB, char * pName, BOOL IsOutOnly, long TypeOffset );
void Out_DispatchTableTypedef( CCB * pCCB, PNAME pInterfaceName, ITERATOR &ProcNodeList, int flag );
void Out_GenHdlPrototypes( CCB * pCCB, ITERATOR& List );
void Out_CtxtHdlPrototypes( CCB * pCCB, ITERATOR& List );
void Out_PatchReference( CCB * pCCB, expr_node * pDest, expr_node * pSource, BOOL fIncr );
void Out_If( CCB * pCCB, expr_node * pExpr );
void Out_Else( CCB * pCCB );
void Out_Endif( CCB * pCCB );
void Out_UniquePtrMarshall( CCB * pCCB, expr_node * pDest, expr_node * pSrc );
void Out_IfUniquePtrInBuffer( CCB * pCCB, expr_node * pSrc );
void Out_Assign( CCB * pCCB, expr_node * pDest, expr_node * pSrc );
void Out_Memcopy( CCB * pCCB, expr_node * pDest, expr_node * pSrc, expr_node * pLength );
void Out_strlen( CCB * pCCB, expr_node * pDest, expr_node * pSource, unsigned short Size );
void Out_For( CCB * pCCB, expr_node * pIndexExpr, expr_node * pInitialExpr, expr_node * pFinalExpr, expr_node * pIncrExpr );
void Out_EndFor( CCB * pCCB );
void Out_UPDecision( CCB * pCCB, expr_node * pPtrInBuffer, expr_node * pPtrInMemory ); void Out_TLUPDecision( CCB * pCCB, expr_node * pPtrInBuffer, expr_node * pPtrInMemory );
void Out_IfAlloc( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_If_IfAlloc( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_If_IfAllocRef( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_Alloc( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_IfAllocSet( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_AllocSet( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_IfCopy( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_Copy( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount, expr_node * pAssign );
void Out_IfAllocCopy( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_AllocCopy( CCB * pCCB, expr_node * pPtrInMemory, expr_node * pBuffer, expr_node * pExprCount );
void Out_ConfStringHdr( CCB * pCCB, expr_node * pDest, expr_node * pExprSize, expr_node * pExprLength, BOOL fMarsh );
void Out_Copy( CCB * pCCB, expr_node * pDest, expr_node * pSource, expr_node * pExprCount, expr_node * pAssign );
void Out_CContextMarshall( CCB * pCCB, expr_node * pDest, expr_node * pSource );
void Out_CContextUnMarshall( CCB * pCCB, expr_node * pDest, expr_node * pSource, expr_node * pHandle, expr_node * pDRep ); void Out_SContextMarshall( CCB * pCCB, expr_node * pDest, expr_node * pSource, expr_node * pRDRtn );
void Out_SContextUnMarshall( CCB * pCCB, expr_node * pDest, expr_node * pSource, expr_node * pDRep );
void Out_RaiseException( CCB * pCCB, PNAME pExceptionNameVarExpression );
void Out_PlusEquals( CCB * pCCB, expr_node * pLHS, expr_node * pRHS );
void Out_IfFree( CCB * pCCB, expr_node * pSrc );
void Out_RpcTryFinally( CCB * pCCB );
void Out_RpcFinally( CCB * pCCB );
void Out_RpcEndFinally( CCB * pCCB );
void Out_RpcTryExcept( CCB * pCCB );
void Out_RpcExcept( CCB * pCCB, char * pFilterString );
void Out_RpcEndExcept( CCB * pCCB );
void Out_CallNdrMapCommAndFaultStatus( CCB * pCCB, expr_node * pAddOfStubMsg, expr_node * StatRes, expr_node * pCommExpr, expr_node * pFaultExpr ); void Out_CallToXmit( CCB * pCCB, PNAME PresentedName, expr_node * pPresented, expr_node * pTransmitted );
void Out_CallFreeXmit( CCB * pCCB, PNAME PresentedName, expr_node * Xmitted );
void Out_CallFromXmit( CCB * pCCB, PNAME PresentedName, expr_node * pPresented, expr_node * pXmitted );
void Out_CallFreeInst( CCB * pCCB, PNAME PresentedName, expr_node * pPresented );
void Out_TransmitAsPrototypes( CCB * pCCB, ITERATOR& ListOfPresentedTypes );
void Out_RepAsPrototypes( CCB * pCCB, ITERATOR& ListOfPresentedTypes );
void Out_UserMarshalPrototypes( CCB * pCCB, ITERATOR& ListOfPresentedTypes );
void Out_CSSizingAndConversionPrototypes( CCB * pCCB, ITERATOR& ListOfCSTypes );
void Out_Comment( CCB * pCCB, char * pComment );
void Out_TLUPDecisionBufferOnly( CCB * pCCB, expr_node * pPtrInBuffer, expr_node * pPtrInMemory );
void Out_StringMarshall( CCB * pCCB, expr_node * pMemory, expr_node * pCount, expr_node * pSize );
void Out_StringUnMarshall( CCB * pCCB, expr_node * pMemory, expr_node * pSize );
void Out_StructSizingCall( CCB * pCCB, expr_node * pSource, expr_node * pLengthVar );
void Out_StructMarshallCall( CCB * pCCB, expr_node * pSrc, expr_node * pPtrInBuffer );
void Out_FullPointerInit( CCB * pCCB );
void Out_FullPointerFree( CCB * pCCB );
char * MakeRtnName( char * pBuffer, char * pName, int Code );
void Out_RpcSSEnableAllocate( CCB * pCCB );
void Out_RpcSSDisableAllocate( CCB * pCCB );
void Out_RpcSSSetClientToOsf( CCB * pCCB );
void Out_MemsetToZero( CCB * pCCB, expr_node * pDest, expr_node * pSize );
void Out_IID(CCB *pCCB);
void Out_CLSID(CCB *pCCB);
void Out_CallAsProxyPrototypes(CCB *pCCB, ITERATOR & ListOfCallAsRoutines); void Out_CallAsServerPrototypes(CCB *pCCB, ITERATOR & ListOfCallAsRoutines); void Out_CallMemberFunction( CCB * pCCB, expr_proc_call * pProcExpr, expr_node * pRet, BOOL fThunk );
void Out_SetOperationBits( CCB * pCCB, unsigned int OpBits);
void Out_TypeAlignSizePrototypes( CCB * pCCB, ITERATOR& List );
void Out_TypeEncodePrototypes( CCB * pCCB, ITERATOR& List );
void Out_TypeDecodePrototypes( CCB * pCCB, ITERATOR& List );
void Out_TypeFreePrototypes( CCB * pCCB, ITERATOR& List );
void OutputNdrAlignment( CCB * pCCB, unsigned short Align );
void Out_NotifyPrototypes( CCB * pCCB, ITERATOR& ListOfNotifyRoutines );
void Out_MultiDimVars( CCB * pCCB, CG_PARAM * pParam );
void Out_MultiDimVarsInit( CCB * pCCB, CG_PARAM * pParam );
void Out_CheckUnMarshallPastBufferEnd( CCB * pCCB, ulong size = 0 ); void Out_NotifyTable ( CCB* pCCB ); void Out_NotifyTableExtern ( CCB* pCCB );
void Out_TypePicklingInfo( CCB* pCCB);
void Out_PartialIgnoreClientMarshall( CCB *pCCB, char *pParamName );
void Out_PartialIgnoreServerUnmarshall( CCB *pCCB, char *pParamName );
void Out_PartialIgnoreClientBufferSize( CCB *pCCB, char *pParamName );
void Out_PartialIgnoreServerInitialize( CCB *pCCB, char *pParamName, long FormatStringOffset );
#endif // __OUTPUT_HXX__
|