Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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));
        }