public Parse ( Context context ) : void | ||
context | Context | The value of Context |
Résultat | void |
public override void Parse(Context context)
{
// Clear PropertyValues to store parsing result
this.propertyValues.Clear();
// Flag indicates the Type of PropertyRow
this.flag = context.PropertyBytes[context.CurIndex++];
foreach (Property prop in context.Properties)
{
if (context.IsEnd())
{
throw new ParseException("End prematurely");
}
PropertyValue valueNode = null;
if (this.flag == 0)
{
// StandardPropertyRow
if (prop.Type == PropertyType.PtypUnspecified)
{
valueNode = new TypedPropertyValue();
}
else
{
valueNode = new PropertyValue();
}
}
else
{
// FlaggedPropertyRow
if (prop.Type == PropertyType.PtypUnspecified)
{
valueNode = new FlaggedPropertyValueWithType();
}
else
{
valueNode = new FlaggedPropertyValue();
}
}
context.CurProperty = new Property((PropertyType)prop.Type);
valueNode.Parse(context);
this.propertyValues.Add(valueNode);
}
}
}
/// <summary> /// Parse bytes in context into a PropertyRowSetNode /// </summary> /// <param name="context">The value of Context</param> public override void Parse(Context context) { // No PropertyRowNode to parse if (this.count <= 0) { return; } // Clear PropretyRows list to store parsing result context.PropertyRows.Clear(); // Parse PropertyRow one by one for (int i = 0; i < this.count; i++) { if (context.IsEnd()) { throw new ParseException("End prematurely"); } PropertyRow propertyRow = new PropertyRow(); propertyRow.Parse(context); context.PropertyRows.Add(propertyRow); } // Assign parsing result to PropertyRows this.propertyRows = context.PropertyRows; }