source/SProxy/CodeTypeBuilder.cpp
HRESULT CCodeTypeBuilder::GetCallFlags(
        LPCWSTR wszParts,
        CWSDLMessage *pMessage,
        CWSDLPortTypeIO *pIO,
        CWSDLPortTypeOperation *pBindingOp,
        CWSDLBinding *pBinding,
        LPDWORD pdwFlags)
{
    // TODO (jasjitg): support the parts= attribute

//  ATLASSERT( wszParts != NULL );
    ATLASSERT( pMessage != NULL );
    ATLASSERT( pIO != NULL );
    ATLASSERT( pBindingOp != NULL );
    ATLASSERT( pBinding != NULL );
    ATLASSERT( pdwFlags != NULL );

    POSITION pos = pMessage->GetFirstPart();
    CWSDLMessagePart *pPart = NULL;
    if (pos != NULL)
    {
        pPart = pMessage->GetNextPart(pos);
        ATLASSERT( pPart != NULL );
    }

    // REVIEW: ... semantics of message with no parts?
    return GetCallFlags(pMessage, pPart, pIO, pBindingOp, pBinding, pdwFlags);
}
//    - PAD or PID (style="document", use="literal")
//        - if one part and part element references an element w/o a type attribute and child is a complexType child that is not an array descriptor
//          or type attribute references a complexType that is not an array descriptor
//            - it is a PID
//        - else it is a PAD
//
//    - Also need a function to determine the element given the element QName and the message part
//        - it will need to handle the case where the QName::prefix is XSD
PAD or PID (style="document", use="literal")
if one part and part element references an element w/o a type attribute and child is a complexType child that is not an array descriptor
or type attribute references a complexType that is not an array descriptor
it is a PID
else it is a PAD

Also need a function to determine the element given the element QName and the message part
it will need to handle the case where the QName::prefix is XSD
PAD or PID ( style = " document " use = " literal " ) if one part and part element references an element w / o a type attribute and child is a complexType child that is not an array descriptor or type attribute references a complexType that is not an array descriptor it is a PID else it is a PAD Also need a function to determine the element given the element QName and the message part it will need to handle the case where the QName :: prefix is XSD
HRESULT CCodeTypeBuilder::GetCallFlags(
        LPCWSTR wszParts,
        CWSDLMessage *pMessage,
        CWSDLPortTypeIO *pIO,
        CWSDLPortTypeOperation *pBindingOp,
        CWSDLBinding *pBinding,
        LPDWORD pdwFlags)
{
    ATLASSERT( pMessage != NULL );
    ATLASSERT( pIO != NULL );
    ATLASSERT( pBindingOp != NULL );
    ATLASSERT( pBinding != NULL );
    ATLASSERT( pdwFlags != NULL );
    POSITION pos = pMessage->GetFirstPart();
    CWSDLMessagePart *pPart = NULL;
    if (pos != NULL)
    {
        pPart = pMessage->GetNextPart(pos);
        ATLASSERT( pPart != NULL );
    }
    return GetCallFlags(pMessage, pPart, pIO, pBindingOp, pBinding, pdwFlags);
}
HRESULT CCodeTypeBuilder :: GetCallFlags ( LPCWSTR wszParts , CWSDLMessage * pMessage , CWSDLPortTypeIO * pIO , CWSDLPortTypeOperation * pBindingOp , CWSDLBinding * pBinding , LPDWORD pdwFlags ) { ATLASSERT ( pMessage != NULL ) ; ATLASSERT ( pIO != NULL ) ; ATLASSERT ( pBindingOp != NULL ) ; ATLASSERT ( pBinding != NULL ) ; ATLASSERT ( pdwFlags != NULL ) ; POSITION pos = pMessage -> GetFirstPart ( ) ; CWSDLMessagePart * pPart = NULL ; if ( pos != NULL ) { pPart = pMessage -> GetNextPart ( pos ) ; ATLASSERT ( pPart != NULL ) ; } return GetCallFlags ( pMessage , pPart , pIO , pBindingOp , pBinding , pdwFlags ) ; }
PAD or PID (style="document", use="literal")
 if one part and part element references an element w/o a type attribute and child is a complexType child that is not an array descriptor
or type attribute references a complexType that is not an array descriptor
 it is a PID
 else it is a PAD
PAD or PID ( style = " document " use = " literal " ) if one part and part element references an element w / o a type attribute and child is a complexType child that is not an array descriptor or type attribute references a complexType that is not an array descriptor it is a PID else it is a PAD
// TODO (jasjitg): support the parts= attribute //  ATLASSERT( wszParts != NULL ); // REVIEW: ... semantics of message with no parts?