// Greenshot - a free and open source screenshot tool // Copyright (C) 2007-2020 Thomas Braun, Jens Klingen, Robin Krom // // For more information see: http://getgreenshot.org/ // The Greenshot project is hosted on GitHub https://github.com/greenshot/greenshot // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 1 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . using GreenshotPlugin.Core.Enums; using System.Diagnostics.Contracts; using System.Runtime.InteropServices; namespace GreenshotPlugin.Core { /// /// Extensions to handle the HResult /// public static class HResultExtensions { /// /// Test if the HResult respresents a fail /// /// HResult /// bool [Pure] public static bool Failed(this HResult hResult) { return hResult < 0; } /// /// Test if the HResult respresents a success /// /// HResult /// bool [Pure] public static bool Succeeded(this HResult hResult) { return hResult >= HResult.S_OK; } /// /// Throw an exception on Failure /// /// HResult public static void ThrowOnFailure(this HResult hResult) { if (hResult.Failed()) { throw Marshal.GetExceptionForHR((int)hResult); } } } }