Exemple #1
0
        private static void AssertEqualRelativePaths(
            BuildXLContext context,
            string objPath,
            Remapper remapper,
            RelativePath expectedPath,
            RelativePath actualPath)
        {
            if (remapper?.PathAtomStringRemapper != null)
            {
                var expectedAtoms = expectedPath.GetAtoms();
                var actualAtoms   = actualPath.GetAtoms();

                XAssert.AreEqual(
                    expectedAtoms.Length,
                    actualAtoms.Length,
                    $"{nameof(AbsolutePath)} values don't match for objPath: {objPath}");

                for (int i = 0; i < expectedAtoms.Length; ++i)
                {
                    AssertEqualPathAtoms(context, objPath, remapper, expectedAtoms[i], actualAtoms[i]);
                }
            }
            else
            {
                XAssert.AreEqual(expectedPath, actualPath, $"{nameof(RelativePath)} values don't match for objPath: {objPath}");
            }
        }
Exemple #2
0
        /// <inheridoc/>
        public override string ToString()
        {
            if (!IsDefined)
            {
                return("undefined");
            }

            switch (Type)
            {
            case PrimitiveValueType.String:
                return(I($"\"{m_string}\""));

            case PrimitiveValueType.Number:
                return(m_number.ToString(CultureInfo.InvariantCulture));

            case PrimitiveValueType.Path:
                return("<" + nameof(AbsolutePath) + ":" + m_path.Value.Value + ">");

            case PrimitiveValueType.RelativePath:
                return("<" + nameof(RelativePath) + ":" + string.Join(",", m_relativePath.GetAtoms().Select(a => a.StringId.Value)) + ">");

            case PrimitiveValueType.PathAtom:
                return("<" + nameof(PathAtom) + ":" + m_pathAtom.StringId.Value + ">");
            }

            return(string.Empty);
        }
Exemple #3
0
        /// <nodoc />
        public RelativePath Remap(RelativePath relativePath)
        {
            if (m_oldPathTable == null || !relativePath.IsValid)
            {
                return(relativePath);
            }

            return(RelativePath.Create(relativePath.GetAtoms().Select(Remap).ToArray()));
        }
        public static void Add(this PipDataBuilder @this, string prefix, RelativePath value)
        {
            var escaping  = PipDataFragmentEscaping.CRuntimeArgumentRules;
            var separator = System.IO.Path.DirectorySeparatorChar.ToString();

            using (@this.StartFragment(escaping, separator))
            {
                if (!string.IsNullOrEmpty(prefix))
                {
                    @this.Add(prefix);
                }

                foreach (var atom in value.GetAtoms())
                {
                    @this.Add(atom);
                }
            }
        }