/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/ /* vim: set ts=2 sw=2 et tw=79: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * A struct for tracking exceptions that need to be thrown to JS. */ #ifndef mozilla_ErrorResult_h #define mozilla_ErrorResult_h #include "nscore.h" #include "mozilla/Assertions.h" namespace mozilla { class ErrorResult { public: ErrorResult() { mResult = NS_OK; } void Throw(nsresult rv) { MOZ_ASSERT(NS_FAILED(rv), "Please don't try throwing success"); mResult = rv; } // In the future, we can add overloads of Throw that take more // interesting things, like strings or DOM exception types or // something if desired. // Backwards-compat to make conversion simpler. We don't call // Throw() here because people can easily pass success codes to // this. void operator=(nsresult rv) { mResult = rv; } bool Failed() const { return NS_FAILED(mResult); } nsresult ErrorCode() const { return mResult; } private: nsresult mResult; // Not to be implemented, to make sure people always pass this by // reference, not by value. ErrorResult(const ErrorResult&) MOZ_DELETE; }; } // namespace mozilla #endif /* mozilla_ErrorResult_h */