예제 #1
0
        public T[,] ReadArray2 <T>(string Key, T[,] Default) where T : IArchiveInfo, new()
        {
            if (!CacheList_.ContainsKey(Key))
            {
                return(Default);
            }

            if (CacheList_[Key] is object[,] ArrayObj)
            {
                var Width       = ArrayObj.GetLength(0);
                var Height      = ArrayObj.GetLength(1);
                var OutputArray = new T[Width, Height];
                for (var X = 0; X < Width; ++X)
                {
                    for (var Y = 0; Y < Height; ++Y)
                    {
                        OutputArray[X, Y] = (T)ArrayObj[X, Y];
                    }
                }
                return(OutputArray);
            }

            LLogger.LWarning($"archive type error : {Key} - {typeof(T)}");
            return(Default);
        }
        public void VisualizeGraphWithArray()
        {
            var   visualizer = new ObjectGraphVisualizer();
            IData data;

            var root = new ArrayObj();

            root.array = new LeafObj[] { new LeafObj(), new LeafObj() };

            var dot = visualizer.Visualize(root, out data);

            Assert.That(dot, Does.Contain(
                            "1 [ label=\"YetiCommon.Tests.Util.ArrayObj\" id=\"dark googlegreen\" ];"));
            Assert.That(dot, Does.Contain(
                            "2 [ label=\"YetiCommon.Tests.Util.LeafObj\" id=\"dark googlered\" ];"));
            Assert.That(dot, Does.Contain(
                            "3 [ label=\"YetiCommon.Tests.Util.LeafObj\" id=\"dark googlered\" ];"));

            Assert.That(dot, Does.Contain("1 -> 2 [ label=\"array[0]\" ];"));
            Assert.That(dot, Does.Contain("1 -> 3 [ label=\"array[1]\" ];"));

            Assert.That(data.RootObject, Is.EqualTo(root));
            Assert.That(data.InternalNodes, Is.EquivalentTo(new object[] { root }));
            Assert.That(data.TruncatedNodes, Is.Empty);
            Assert.That(data.LeafNodes,
                        Is.EquivalentTo(new object[] { root.array[0], root.array[1] }));
        }
예제 #3
0
        public override string ToString()
        {
            int           id = RuntimeHelpers.GetHashCode(ArrayObj);
            StringBuilder sb = new StringBuilder();

            sb.Append("array");
            sb.Append(id);
            sb.Append("<");
            sb.Append(ArrayObj.GetType());
            sb.Append(">[");
            sb.Append(Indices == null ? "?" : string.Join(",", Indices));
            sb.Append("]");
            return(sb.ToString());
        }
예제 #4
0
 public override int GetHashCode()
 {
     return(ArrayObj.GetHashCode() ^
            (Indices == null ? 0 : Indices.GetSequenceHashCode()));
 }