コード例 #1
0
        private MsgTypedValue ConstantToTypedValue(ConstantValue c)
        {
            var tv = new MsgTypedValue();

            // TODO - c.TypeName?
            switch (c.Type)
            {
            case IRConstantType.Integer:
                tv.TypeId = (UInt32)Value.Type.Integer;
                tv.Intval = c.IntegerValue;
                break;

            case IRConstantType.Float:
                tv.TypeId   = (UInt32)Value.Type.Float;
                tv.Floatval = c.FloatValue;
                break;

            case IRConstantType.String:
                tv.TypeId    = (UInt32)Value.Type.String;
                tv.Stringval = c.StringValue;
                break;

            case IRConstantType.Name:
                tv.TypeId    = (UInt32)Value.Type.GuidString;
                tv.Stringval = c.StringValue;
                break;

            default:
                throw new ArgumentException("Constant has unknown type");
            }

            return(tv);
        }
コード例 #2
0
        public string ValueToString(MsgTypedValue value)
        {
            string valueStr;

            switch ((Value.Type)value.TypeId)
            {
            case Value.Type.None:
                valueStr = "(None)";
                break;

            case Value.Type.Integer:
            case Value.Type.Integer64:
                valueStr = value.Intval.ToString();
                break;

            case Value.Type.Float:
                valueStr = value.Floatval.ToString();
                break;

            case Value.Type.String:
            case Value.Type.GuidString:
            default:
                valueStr = value.Stringval;
                break;
            }

            return(valueStr);
        }
コード例 #3
0
        private MsgTypedValue VariableToTypedValue(LocalVar lvar, CoalescedFrame frame)
        {
            // TODO - lvar.Type?
            if (lvar.Name == "_")
            {
                var tv = new MsgTypedValue();
                tv.TypeId = (UInt32)Value.Type.None;
                return(tv);
            }
            else
            {
                var frameVar = frame.Variables.FirstOrDefault(v => v.Name == lvar.Name);
                if (frameVar == null)
                {
                    throw new RequestFailedException($"Variable does not exist: \"{lvar.Name}\"");
                }

                return(frameVar.TypedValue);
            }
        }