14c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar//===- Error.cxx - system_error extensions for llvm-cxxdump -----*- C++ -*-===// 237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// 337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// The LLVM Compiler Infrastructure 437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// 537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// This file is distributed under the University of Illinois Open Source 637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// License. See LICENSE.TXT for details. 737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// 837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines//===----------------------------------------------------------------------===// 937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// 104c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar// This defines a new error_category for the llvm-cxxdump tool. 1137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// 1237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines//===----------------------------------------------------------------------===// 1337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#include "Error.h" 1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#include "llvm/Support/ErrorHandling.h" 1637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesusing namespace llvm; 1837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 1937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesnamespace { 204c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarclass cxxdump_error_category : public std::error_category { 2137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinespublic: 224c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar const char *name() const LLVM_NOEXCEPT override { return "llvm.cxxdump"; } 2337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines std::string message(int ev) const override { 244c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar switch (static_cast<cxxdump_error>(ev)) { 254c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar case cxxdump_error::success: 2637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines return "Success"; 274c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar case cxxdump_error::file_not_found: 2837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines return "No such file."; 294c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar case cxxdump_error::unrecognized_file_format: 3037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines return "Unrecognized file type."; 3137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines } 3237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines llvm_unreachable( 334c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar "An enumerator of cxxdump_error does not have a message defined."); 3437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines } 3537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines}; 3637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} // namespace 3737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines 3837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesnamespace llvm { 394c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarconst std::error_category &cxxdump_category() { 404c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar static cxxdump_error_category o; 4137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines return o; 4237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} 4337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines} // namespace llvm 44