// This file is part of YamlDotNet - A .NET library for YAML. // Copyright (c) Antoine Aubry and contributors // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is furnished to do // so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; namespace YamlDotNet.Core { /// /// Specifies the version of the YAML language. /// public sealed class Version { /// /// Gets the major version number. /// public int Major { get; } /// /// Gets the minor version number. /// public int Minor { get; } /// /// Initializes a new instance of the class. /// /// The major version number. /// The minor version number. public Version(int major, int minor) { Major = major >= 0 ? major : throw new ArgumentOutOfRangeException(nameof(major), $"{major} should be >= 0"); Minor = minor >= 0 ? minor : throw new ArgumentOutOfRangeException(nameof(minor), $"{minor} should be >= 0"); } /// /// Determines whether the specified System.Object is equal to the current System.Object. /// /// The System.Object to compare with the current System.Object. /// /// true if the specified System.Object is equal to the current System.Object; otherwise, false. /// public override bool Equals(object? obj) { return obj is Version other && Major == other.Major && Minor == other.Minor; } /// /// Serves as a hash function for a particular type. /// /// /// A hash code for the current . /// public override int GetHashCode() { return HashCode.CombineHashCodes(Major.GetHashCode(), Minor.GetHashCode()); } } }