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}") });
public int CompareTo(CosmosArray cosmosArray) { UInt128 hash1 = DistinctHash.GetHash(this); UInt128 hash2 = DistinctHash.GetHash(cosmosArray); return(hash1.CompareTo(hash2)); }
public int CompareTo(CosmosArray cosmosArray) { UInt128 hash1 = DistinctHash.GetHash(this); UInt128 hash2 = DistinctHash.GetHash(cosmosArray); return(UInt128BinaryComparer.Singleton.Compare(hash1, hash2)); }
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); }
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); }
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); }
public static bool TryParse(string json, out CosmosArray cosmosArray) => CosmosElement.TryParse <CosmosArray>(json, out cosmosArray);
public static bool TryCreateFromBuffer( ReadOnlyMemory <byte> buffer, out CosmosArray cosmosArray) => CosmosElement.TryCreateFromBuffer <CosmosArray>(buffer, out cosmosArray);
public static bool TryParse(string json, out CosmosArray cosmosArray) { return(CosmosElement.TryParse <CosmosArray>(json, out cosmosArray)); }