/// <summary> /// Exports a DataTypeDefinition /// </summary> private Opc.Ua.Export.DataTypeDefinition Export(Opc.Ua.DataTypeDefinition2 source, NamespaceTable namespaceUris) { if (source == null) { return(null); } DataTypeDefinition definition = new DataTypeDefinition(); definition.Name = Export(source.Name, namespaceUris); definition.SymbolicName = source.SymbolicName; definition.BaseType = Export(source.BaseType, namespaceUris); if (source.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); foreach (DataTypeDefinitionField field in source.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.SymbolicName = field.SymbolicName; output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); if (NodeId.IsNull(field.DataType)) { output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris); } else { output.DataType = Export(field.DataType, namespaceUris); } output.ValueRank = field.ValueRank; output.Value = field.Value; output.Definition = Export(field.Definition, namespaceUris); fields.Add(output); } definition.Field = fields.ToArray(); } return(definition); }
/// <summary> /// Exports a DataTypeDefinition /// </summary> private Opc.Ua.Export.DataTypeDefinition Export( DataTypeState dataType, ExtensionObject source, NamespaceTable namespaceUris, bool outputRedundantNames) { if (source == null || source.Body == null) { return(null); } DataTypeDefinition definition = new DataTypeDefinition(); if (outputRedundantNames || dataType.BrowseName != null) { definition.Name = Export(dataType.BrowseName, namespaceUris); } if (dataType.BrowseName.Name != dataType.SymbolicName) { definition.SymbolicName = dataType.SymbolicName; } switch (dataType.DataTypeModifier) { case DataTypeModifier.Union: { definition.IsUnion = true; break; } case DataTypeModifier.OptionSet: { definition.IsOptionSet = true; break; } } StructureDefinition structureDefinition = source.Body as StructureDefinition; if (structureDefinition != null) { if (structureDefinition.StructureType == StructureType.Union) { definition.IsUnion = true; } if (structureDefinition.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); foreach (StructureField field in structureDefinition.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); output.IsOptional = field.IsOptional; if (NodeId.IsNull(field.DataType)) { output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris); } else { output.DataType = Export(field.DataType, namespaceUris); } output.ValueRank = field.ValueRank; fields.Add(output); } definition.Field = fields.ToArray(); } } EnumDefinition enumDefinition = source.Body as EnumDefinition; if (enumDefinition != null) { if (enumDefinition.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); foreach (EnumField field in enumDefinition.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.DisplayName = Export(new Opc.Ua.LocalizedText[] { field.Name }); output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); output.ValueRank = ValueRanks.Scalar; output.Value = (int)field.Value; fields.Add(output); } definition.Field = fields.ToArray(); } } return(definition); }
/// <summary> /// Exports a DataTypeDefinition /// </summary> private Opc.Ua.Export.DataTypeDefinition Export(Opc.Ua.DataTypeDefinition source, NamespaceTable namespaceUris) { if (source == null) { return null; } DataTypeDefinition definition = new DataTypeDefinition(); definition.Name = Export(source.Name, namespaceUris); definition.SymbolicName = source.SymbolicName; definition.BaseType = Export(source.BaseType, namespaceUris); if (source.Fields != null) { List<Opc.Ua.Export.DataTypeField> fields = new List<DataTypeField>(); foreach (DataTypeDefinitionField field in source.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.SymbolicName = field.SymbolicName; output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); if (NodeId.IsNull(field.DataType)) { output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris); } else { output.DataType = Export(field.DataType, namespaceUris); } output.ValueRank = field.ValueRank; output.Value = field.Value; output.Definition = Export(field.Definition, namespaceUris); fields.Add(output); } definition.Field = fields.ToArray(); } return definition; }
/// <summary> /// Exports a DataTypeDefinition /// </summary> private Opc.Ua.Export.DataTypeDefinition Export( DataTypeState dataType, ExtensionObject source, NamespaceTable namespaceUris, bool outputRedundantNames) { if (source == null || source.Body == null) { return(null); } DataTypeDefinition definition = new DataTypeDefinition(); if (outputRedundantNames || dataType.BrowseName != null) { definition.Name = Export(dataType.BrowseName, namespaceUris); } if (dataType.BrowseName.Name != dataType.SymbolicName) { definition.SymbolicName = dataType.SymbolicName; } StructureDefinition sd = source.Body as StructureDefinition; if (sd != null) { if (sd.StructureType == StructureType.Union || sd.StructureType == (StructureType)4) // StructureType.UnionWithSubtypedValues) { definition.IsUnion = true; } if (sd.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); for (int ii = sd.FirstExplicitFieldIndex; ii < sd.Fields.Count; ii++) { StructureField field = sd.Fields[ii]; Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); if (sd.StructureType == StructureType.StructureWithOptionalFields) { output.IsOptional = field.IsOptional; output.AllowSubTypes = false; } else if (sd.StructureType == (StructureType)3 || // StructureType.StructureWithSubtypedValues || sd.StructureType == (StructureType)4) // StructureType.UnionWithSubtypedValues) { output.IsOptional = false; output.AllowSubTypes = field.IsOptional; } else { output.IsOptional = false; output.AllowSubTypes = false; } if (NodeId.IsNull(field.DataType)) { output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris); } else { output.DataType = Export(field.DataType, namespaceUris); } output.ValueRank = field.ValueRank; fields.Add(output); } definition.Field = fields.ToArray(); } } EnumDefinition ed = source.Body as EnumDefinition; if (ed != null) { definition.IsOptionSet = ed.IsOptionSet; if (ed.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); foreach (EnumField field in ed.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; if (field.DisplayName != null && output.Name != field.DisplayName.Text) { output.DisplayName = Export(new Opc.Ua.LocalizedText[] { field.DisplayName }); } else { output.DisplayName = Array.Empty <LocalizedText>(); } output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); output.ValueRank = ValueRanks.Scalar; output.Value = (int)field.Value; fields.Add(output); } definition.Field = fields.ToArray(); } } return(definition); }
/// <summary> /// Exports a DataTypeDefinition /// </summary> private Opc.Ua.Export.DataTypeDefinition Export( DataTypeState dataType, Opc.Ua.DataTypeDefinition2 source, NamespaceTable namespaceUris, bool outputRedundantNames) { if (source == null) { return(null); } DataTypeDefinition definition = new DataTypeDefinition(); if (outputRedundantNames || dataType.BrowseName != source.Name) { definition.Name = Export(source.Name, namespaceUris); } if (source.Name.Name != source.SymbolicName) { definition.SymbolicName = source.SymbolicName; } switch (source.DataTypeModifier) { case DataTypeModifier.Union: { definition.IsUnion = true; break; } case DataTypeModifier.OptionSet: { definition.IsOptionSet = true; break; } } if (source.Fields != null) { List <Opc.Ua.Export.DataTypeField> fields = new List <DataTypeField>(); foreach (DataTypeDefinitionField field in source.Fields) { Opc.Ua.Export.DataTypeField output = new Opc.Ua.Export.DataTypeField(); output.Name = field.Name; output.SymbolicName = field.SymbolicName; output.Description = Export(new Opc.Ua.LocalizedText[] { field.Description }); if (NodeId.IsNull(field.DataType)) { output.DataType = Export(DataTypeIds.BaseDataType, namespaceUris); } else { output.DataType = Export(field.DataType, namespaceUris); } output.ValueRank = field.ValueRank; output.Value = field.Value; fields.Add(output); } definition.Field = fields.ToArray(); } return(definition); }