Ejemplo n.º 1
0
        public void Generate_ValueAccessStep(ValueAccessStep parentStep, ValueAccessStep accessStep)
        {
            if (!accessStep.IsFirstComponent)
            {
                Log.Append(".");
            }

            Log.Append(accessStep.GetName(parentStep));
        }
Ejemplo n.º 2
0
        public override void Visit(LanguageValueAccess valAccess)
        {
            ValueAccessStep parentStep = null;

            foreach (var compAccess in valAccess.AccessSteps)
            {
                Generate_ValueAccessStep(parentStep, compAccess);

                parentStep = compAccess;
            }
        }
        public static string GetName(this ValueAccessStep accessStep, ValueAccessStep parentStep)
        {
            var stepAsRoot = accessStep as ValueAccessStepAsRootSymbol;

            if (stepAsRoot != null)
            {
                return(stepAsRoot.AccessSymbol.SymbolAccessName);
            }

            //if (access_step is ValueAccessStepBySymbol)
            //{
            //    return ((ValueAccessStepBySymbol)access_step).ComponentSymbol.SymbolAccessName;
            //}

            var stepByKey = accessStep as ValueAccessStepByKey <int>;

            if (stepByKey != null)
            {
                var c = stepByKey;

                var frame = ((GMacFrameMultivector)parentStep.AccessStepType).ParentFrame;

                return("#" + frame.BasisBladeName(c.AccessKey) + "#");
            }

            var stepByKeyList = accessStep as ValueAccessStepByKeyList <int>;

            if (stepByKeyList != null)
            {
                var c = stepByKeyList;

                var frame = ((GMacFrameMultivector)parentStep.AccessStepType).ParentFrame;

                var s = new StringBuilder();

                foreach (var id in c.AccessKeyList)
                {
                    s.Append(frame.BasisBladeName(id)).Append(", ");
                }

                s.Length = s.Length - 2;

                return("@" + s + "@");
            }

            var accessStepByKey = accessStep as ValueAccessStepByKey <string>;

            return
                (accessStepByKey != null
                ? accessStepByKey.AccessKey
                : "<unknown component>");
        }
        public static string GetName(this LanguageValueAccess valueAccess)
        {
            var s = new StringBuilder();

            ValueAccessStep parentStep = null;

            foreach (var accessStep in valueAccess.AccessSteps)
            {
                if (!accessStep.IsFirstComponent)
                {
                    s.Append(".");
                }

                s.Append(GetName(accessStep, parentStep));

                parentStep = accessStep;
            }

            return(s.ToString());
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Change a partial value inside the source value using the given value access step
 /// </summary>
 /// <param name="sourceValue"></param>
 /// <param name="valueAccessStep"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 protected abstract ILanguageValue WritePartialValue(ILanguageValue sourceValue, ValueAccessStep valueAccessStep, ILanguageValue value);
Ejemplo n.º 6
0
 /// <summary>
 /// Read a partial value from the source value using the given value access step
 /// </summary>
 /// <param name="sourceValue"></param>
 /// <param name="valueAccessStep"></param>
 /// <returns></returns>
 protected abstract ILanguageValue ReadPartialValue(ILanguageValue sourceValue, ValueAccessStep valueAccessStep);
Ejemplo n.º 7
0
        protected override ILanguageValue WritePartialValue(ILanguageValue sourceValue, ValueAccessStep valueAccessStep, ILanguageValue value)
        {
            if (sourceValue.ExpressionType is GMacStructure)
            {
                var structureValue = (ValueStructureSparse)sourceValue;

                structureValue[((ValueAccessStepByKey <string>)valueAccessStep).AccessKey] = value;

                return(value);
            }

            if (!(sourceValue.ExpressionType is GMacFrameMultivector))
            {
                throw new InvalidOperationException("Invalid source value type");
            }

            var mvValue = (GMacValueMultivector)sourceValue;

            var stepByKey = valueAccessStep as ValueAccessStepByKey <int>;

            if (stepByKey != null)
            {
                mvValue[stepByKey.AccessKey] = (ValuePrimitive <MathematicaScalar>)value;
            }

            else
            {
                var stepByKeyList = valueAccessStep as ValueAccessStepByKeyList <int>;

                if (stepByKeyList == null)
                {
                    throw new InvalidOperationException("Invalid access step for a multivector");
                }

                mvValue[stepByKeyList.AccessKeyList] = (GMacValueMultivector)value;
            }

            return(value);
        }
Ejemplo n.º 8
0
        protected override ILanguageValue ReadPartialValue(ILanguageValue sourceValue, ValueAccessStep valueAccessStep)
        {
            if (sourceValue.ExpressionType is GMacStructure)
            {
                var structureValue = (ValueStructureSparse)sourceValue;

                return(structureValue[((ValueAccessStepByKey <string>)valueAccessStep).AccessKey]);
            }

            if (!(sourceValue.ExpressionType is GMacFrameMultivector))
            {
                throw new InvalidOperationException("Invalid source value type");
            }

            var mvValue = (GMacValueMultivector)sourceValue;

            var stepByKey = valueAccessStep as ValueAccessStepByKey <int>;

            if (stepByKey != null)
            {
                return(mvValue[stepByKey.AccessKey]);
            }

            var stepByKeyList = valueAccessStep as ValueAccessStepByKeyList <int>;

            if (stepByKeyList != null)
            {
                return(mvValue[stepByKeyList.AccessKeyList]);
            }

            throw new InvalidOperationException("Invalid access step for a multivector");
        }
Ejemplo n.º 9
0
 public void SetComponentValue(ValueAccessStep accessStep, ILanguageValue value)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 10
0
 public ILanguageValue GetComponentValue(ValueAccessStep accessStep)
 {
     throw new NotImplementedException();
 }