Exemple #1
0
        private void parseBooleanPlaceholder(string[] formatTokens,
                                             ref PlaceholderInfo outInfo)
        {
            var m0 = new NumericMapping {
                minValue = 0, maxValue = 0
            };
            var m1 = new NumericMapping {
                minValue = 1, maxValue = 1
            };

            switch (formatTokens.Length)
            {
            case 1:
                switch (formatTokens[0].Length)
                {
                case 1:
                    // nothing to do
                    break;

                case 3:
                    m0.representation = formatTokens[0][1].ToString();
                    m1.representation = formatTokens[0][2].ToString();
                    break;

                default:
                    outInfo.result.HasError = true;
                    outInfo.result.Message  = "PlaceholderBinLengthInvalid";
                    return;
                }
                break;

            case 3:
                m0.representation = formatTokens[1];
                m1.representation = formatTokens[2];
                break;

            default:
                outInfo.result.HasError = true;
                outInfo.result.Message  = "PlaceholderBinLengthInvalid";
                return;
            }
            if ((null != m0.representation) && (null != m1.representation))
            {
                outInfo.numericMappings = new List <NumericMapping>();
                outInfo.numericMappings.Add(m0);
                outInfo.numericMappings.Add(m1);

                if (!isBinTextValid(m0.representation) || !isBinTextValid(m1.representation))
                {
                    outInfo.result.HasError = true;
                    outInfo.result.Message  = "PlaceholderBinInvalidAssign";
                }

                if (m0.representation == m1.representation)
                {
                    outInfo.result.HasError = true;
                    outInfo.result.Message  = "PlaceholderBinSameText";
                }
            }
        }
Exemple #2
0
        private void parseExplicitNumericMapping(string[] valueRepresentation,
                                                 ref PlaceholderInfo outInfo)
        {
            System.Diagnostics.Trace.Assert(valueRepresentation.Length == 2);

            string[] rangeStrings = valueRepresentation[0].Split('.');
            if (rangeStrings.Length == 1)
            {
                DoubleVal value = parseValue(rangeStrings[0]);
                if (value.isValid)
                {
                    NumericMapping mapping = new NumericMapping  {
                        minValue       = value.value,
                        maxValue       = value.value,
                        representation = valueRepresentation[1]
                    };
                    outInfo.numericMappings.Add(mapping);
                }
                else
                {
                    outInfo.result.HasError = true;
                    outInfo.result.Message  = "ExplicitMappingInvalidValue";
                    return;
                }
            }
            else if ((rangeStrings.Length == 3) && (rangeStrings[1].Length == 0))
            {
                DoubleVal minValue = parseRangeValue(rangeStrings[0], /* isMin = */ true);
                DoubleVal maxValue = parseRangeValue(rangeStrings[2], /* isMin = */ false);
                if (minValue.isValid && maxValue.isValid)
                {
                    if (minValue.value < maxValue.value)
                    {
                        NumericMapping mapping = new NumericMapping {
                            minValue           = minValue.value,
                            isMinValueExcluded = minValue.isExcluded,
                            maxValue           = maxValue.value,
                            isMaxValueExcluded = maxValue.isExcluded,
                            representation     = valueRepresentation[1]
                        };
                        outInfo.numericMappings.Add(mapping);
                    }
                    else
                    {
                        outInfo.result.HasError = true;
                        outInfo.result.Message  = "ExplicitMappingInvertedRange";
                        return;
                    }
                }
                else
                {
                    outInfo.result.HasError = true;
                    outInfo.result.Message  = "ExplicitMappingInvRngVal";
                    return;
                }
            }
            else
            {
                outInfo.result.HasError = true;
                outInfo.result.Message  = "ExplicitMappingInvalidRange";
                return;
            }
        }
Exemple #3
0
        private void parseNumericMappings(bool allowImplicitValues,
                                          string[] formatTokens,
                                          ref PlaceholderInfo outInfo)
        {
            outInfo.numericMappings = null;
            if (formatTokens.Length > 1)
            {
                bool allowExplicitValues = true; // until an implicit value has been found
                int  implicitValue       = 0;
                // Ignore entry at index 0 (type/precision processed by caller)
                outInfo.numericMappings = new List <NumericMapping>(formatTokens.Length - 1);
                for (int i = 1; i < formatTokens.Length; i++)
                {
                    string[] valueRepresentation = formatTokens[i].Split('=');
                    switch (valueRepresentation.Length)
                    {
                    case 1:
                        if (allowImplicitValues)
                        {
                            NumericMapping mapping = new NumericMapping
                            {
                                minValue       = implicitValue,
                                maxValue       = implicitValue,
                                representation = valueRepresentation[0]
                            };
                            if (0 == mapping.representation.Length)
                            {
                                outInfo.result.HasError = true;
                                outInfo.result.Message  = "MappingEmptyImplicitValue";
                                return;
                            }

                            outInfo.numericMappings.Add(mapping);
                            allowExplicitValues = false;
                            implicitValue++;
                        }
                        else
                        {
                            outInfo.result.HasError = true;
                            outInfo.result.Message  = "MappingNoImplicitValues";
                            return;
                        }
                        break;

                    case 2:
                        if (allowExplicitValues)
                        {
                            parseExplicitNumericMapping(valueRepresentation, ref outInfo);
                            if (outInfo.result.HasError)
                            {
                                return;
                            }
                            allowImplicitValues = false;
                        }
                        else
                        {
                            outInfo.result.HasError = true;
                            outInfo.result.Message  = "MappingNoExplicitValues";
                            return;
                        }
                        break;

                    default:
                        outInfo.result.HasError = true;
                        outInfo.result.Message  = "MappingWrongAssignment";
                        return;
                    }
                }
            }
        }