/// <summary> /// Converts the value provided as an EFS value /// </summary> /// <returns></returns> public override IValue ConvertBack(Type type) { IValue retVal = null; Collection collectionType = type as Collection; if (collectionType != null) { List<IValue> values = new List<IValue>(); foreach (Value item in Value) { values.Add(item.ConvertBack(collectionType.Type)); } retVal = new DataDictionary.Values.ListValue(collectionType, values); } CheckReturnValue(retVal, type); return retVal; }
/// <summary> /// Converts the value provided as an EFS value /// </summary> /// <returns></returns> public override IValue ConvertBack(Type type) { IValue retVal = null; Collection collectionType = type as Collection; if (collectionType != null) { List <IValue> values = new List <IValue>(); foreach (Value item in Value) { values.Add(item.ConvertBack(collectionType.Type)); } retVal = new DataDictionary.Values.ListValue(collectionType, values); } CheckReturnValue(retVal, type); return(retVal); }
/// <summary> /// Converts a DataDictionary.Values.IValue into an EFSIPCInterface.Value /// </summary> /// <param name="value"></param> /// <returns></returns> public Value ConvertOut(IValue value) { // Handles the boolean case { BoolValue v = value as BoolValue; if (v != null) { return(new Values.BoolValue(v.Val)); } } // Handles the integer case { IntValue v = value as IntValue; if (v != null) { return(new Values.IntValue(v.Val)); } } // Handles the double case { DoubleValue v = value as DoubleValue; if (v != null) { return(new Values.DoubleValue(v.Val)); } } // Handles the string case { StringValue v = value as StringValue; if (v != null) { return(new Values.StringValue(v.Val)); } } // Handles the state case { State v = value as State; if (v != null) { return(new StateValue(v.FullName)); } } // Handles the enumeration value case { EnumValue v = value as EnumValue; if (v != null) { return(new Values.EnumValue(v.FullName)); } } // Handles the list case { ListValue v = value as ListValue; if (v != null) { List <Value> list = new List <Value>(); foreach (IValue item in v.Val) { list.Add(ConvertOut(item)); } return(new Values.ListValue(list)); } } // Handles the structure case { StructureValue v = value as StructureValue; if (v != null) { Dictionary <string, Value> record = new Dictionary <string, Value>(); foreach (KeyValuePair <string, INamable> pair in v.Val) { IVariable variable = pair.Value as IVariable; if (variable != null) { record.Add(variable.Name, ConvertOut(variable.Value)); } } return(new Values.StructureValue(record)); } } // Handles the function case { DataDictionary.Functions.Function v = value as DataDictionary.Functions.Function; if (v != null) { List <Segment> segments = new List <Segment>(); if (v.FormalParameters.Count == 1) { Graph graph = v.CreateGraph(new InterpretationContext(), (Parameter)v.FormalParameters[0], null); if (graph != null) { foreach (Graph.Segment segment in graph.Segments) { double length = segment.End - segment.Start; segments.Add(new Segment { A = segment.Expression.A, V0 = segment.Expression.V0, D0 = segment.Start, Length = length }); } } } return(new FunctionValue(segments)); } } // Handles the 'empty' value { EmptyValue emptyValue = value as EmptyValue; if (emptyValue != null) { return(null); } } throw new FaultException <EFSServiceFault>(new EFSServiceFault("Cannot convert value " + value)); }