public static StructureDescription Decode(Stream inputStream) { if (inputStream == null || !inputStream.CanRead) { return(null); } StructureDescription instance = new StructureDescription(); instance.DataTypeId = NodeID.Decode(inputStream); instance.Name = QualifiedName.Decode(inputStream); instance.DefaultEncoding = NodeID.Decode(inputStream); instance.BaseDataType = NodeID.Decode(inputStream); int?readInt32 = BaseType.ReadInt32(inputStream); if (readInt32 != null) { instance.StructureType = readInt32.Value; } int?int32 = BaseType.ReadInt32(inputStream); if (int32 == null) { return(instance); } instance.Fields = new List <StructureField>(); int fieldsLength = int32.Value; for (int i = 0; i < fieldsLength; i++) { instance.Fields.Add(StructureField.Decode(inputStream)); } return(instance); }
public static EnumDescription Decode(Stream inputStream) { if (inputStream == null) { return(null); } EnumDescription instance = new EnumDescription(); instance.DataTypeID = NodeID.Decode(inputStream); instance.Name = QualifiedName.Decode(inputStream); int?arraySize = BaseType.ReadInt32(inputStream); if (!arraySize.HasValue) { return(null); } if (arraySize.Value < 0) { return(instance); } instance.Fields = new List <EnumField>(arraySize.Value + 1); for (int i = 0; i < arraySize.Value; i++) { instance.Fields.Add(EnumField.Decode(inputStream)); } instance.Type = (BuiltinType)inputStream.ReadByte(); return(instance); }
public static KeyValuePair Decode(Stream inputStream) { KeyValuePair instance = new KeyValuePair(); instance.Name = QualifiedName.Decode(inputStream); instance.ValueType = (BuiltinType)inputStream.ReadByte(); if (!ReadBuiltinTypeValue(instance.ValueType, inputStream, out object parsedValue)) { return(null); } if (instance.ValueType == BuiltinType.String) { // strings always as UADP.String types in Value of KeyValuePair instance.Value = new String(parsedValue as string); } else { instance.Value = parsedValue; } return(instance); }