Пример #1
0
        public static CosmosElement Dispatch(
            IJsonNavigator jsonNavigator,
            IJsonNavigatorNode jsonNavigatorNode)
        {
            JsonNodeType jsonNodeType = jsonNavigator.GetNodeType(jsonNavigatorNode);

            return(jsonNodeType switch
            {
                JsonNodeType.Null => CosmosNull.Create(),
                JsonNodeType.False => CosmosBoolean.Create(false),
                JsonNodeType.True => CosmosBoolean.Create(true),
                JsonNodeType.Number64 => CosmosNumber64.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.FieldName => CosmosString.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.String => CosmosString.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Array => CosmosArray.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Object => CosmosObject.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Int8 => CosmosInt8.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Int16 => CosmosInt16.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Int32 => CosmosInt32.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Int64 => CosmosInt64.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.UInt32 => CosmosUInt32.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Float32 => CosmosFloat32.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Float64 => CosmosFloat64.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Guid => CosmosGuid.Create(jsonNavigator, jsonNavigatorNode),
                JsonNodeType.Binary => CosmosBinary.Create(jsonNavigator, jsonNavigatorNode),
                _ => throw new ArgumentException($"Unknown {nameof(JsonNodeType)}: {jsonNodeType}")
            });
Пример #2
0
        public int CompareTo(CosmosArray cosmosArray)
        {
            UInt128 hash1 = DistinctHash.GetHash(this);
            UInt128 hash2 = DistinctHash.GetHash(cosmosArray);

            return(hash1.CompareTo(hash2));
        }
Пример #3
0
        public int CompareTo(CosmosArray cosmosArray)
        {
            UInt128 hash1 = DistinctHash.GetHash(this);
            UInt128 hash2 = DistinctHash.GetHash(cosmosArray);

            return(UInt128BinaryComparer.Singleton.Compare(hash1, hash2));
        }
Пример #4
0
        public bool Equals(CosmosArray cosmosArray1, CosmosArray cosmosArray2)
        {
            if (cosmosArray1.Count != cosmosArray2.Count)
            {
                return(false);
            }

            IEnumerable <Tuple <CosmosElement, CosmosElement> > pairwiseElements = cosmosArray1
                                                                                   .Zip(cosmosArray2, (first, second) => new Tuple <CosmosElement, CosmosElement>(first, second));
            bool deepEquals = true;

            foreach (Tuple <CosmosElement, CosmosElement> pairwiseElement in pairwiseElements)
            {
                deepEquals &= this.Equals(pairwiseElement.Item1, pairwiseElement.Item2);
            }

            return(deepEquals);
        }
Пример #5
0
        public static CosmosElement Dispatch(
            IJsonNavigator jsonNavigator,
            IJsonNavigatorNode jsonNavigatorNode)
        {
            JsonNodeType  jsonNodeType = jsonNavigator.GetNodeType(jsonNavigatorNode);
            CosmosElement item;

            switch (jsonNodeType)
            {
            case JsonNodeType.Null:
                item = CosmosNull.Create();
                break;

            case JsonNodeType.False:
                item = CosmosBoolean.Create(false);
                break;

            case JsonNodeType.True:
                item = CosmosBoolean.Create(true);
                break;

            case JsonNodeType.Number:
                item = CosmosNumber.Create(jsonNavigator, jsonNavigatorNode);
                break;

            case JsonNodeType.FieldName:
            case JsonNodeType.String:
                item = CosmosString.Create(jsonNavigator, jsonNavigatorNode);
                break;

            case JsonNodeType.Array:
                item = CosmosArray.Create(jsonNavigator, jsonNavigatorNode);
                break;

            case JsonNodeType.Object:
                item = CosmosObject.Create(jsonNavigator, jsonNavigatorNode);
                break;

            default:
                throw new ArgumentException($"Unknown {nameof(JsonNodeType)}: {jsonNodeType}");
            }

            return(item);
        }
Пример #6
0
        public bool Equals(CosmosArray cosmosArray)
        {
            if (this.Count != cosmosArray.Count)
            {
                return(false);
            }

            IEnumerable <(CosmosElement, CosmosElement)> itemPairs = this.Zip(cosmosArray, (first, second) => (first, second));

            foreach ((CosmosElement thisItem, CosmosElement otherItem) in itemPairs)
            {
                if (thisItem != otherItem)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #7
0
 public static bool TryParse(string json, out CosmosArray cosmosArray) => CosmosElement.TryParse <CosmosArray>(json, out cosmosArray);
Пример #8
0
 public static bool TryCreateFromBuffer(
     ReadOnlyMemory <byte> buffer,
     out CosmosArray cosmosArray) => CosmosElement.TryCreateFromBuffer <CosmosArray>(buffer, out cosmosArray);
Пример #9
0
 public static bool TryParse(string json, out CosmosArray cosmosArray)
 {
     return(CosmosElement.TryParse <CosmosArray>(json, out cosmosArray));
 }