internal void FinishChildren(String prefix, String name, String urn)
{
#if _DEBUG
InternalST.Soap( this,SerTraceString("FinishChildren Begin ", (ParseRecord)stack.Peek(), name, prefix, urn, currentState, headerState));
#endif
ParseRecord pr = null;
switch (currentState)
{
case InternalParseStateE.Member:
pr = (ParseRecord)stack.Peek();
currentState = pr.PRparseStateEnum;
// For an object which has a value such as top level System.String
pr.PRvalue = textValue;
textValue = "";
break;
case InternalParseStateE.MemberChild:
pr = (ParseRecord)stack.Peek();
currentState = pr.PRparseStateEnum;
ParseRecord objectPr = (ParseRecord)stack.PeekPeek();
pr.PRvalue = textValue; // Non-primitive type need to filter
textValue = "";
break;
case InternalParseStateE.Object:
pr = (ParseRecord)stack.Peek();
if (pr.PRarrayTypeEnum == InternalArrayTypeE.Base64)
{
pr.PRvalue = textValue;
textValue = "";
}
// Only occur for top object, returning to SerializedStreamHeader object
break;
default:
MarshalError("FinishChildren", (ParseRecord)stack.Peek(), name, currentState);
break;
}
#if _DEBUG
InternalST.Soap( this,SerTraceString("FinishChildren End ", (ParseRecord)stack.Peek(), name, currentState, headerState));
#endif
}