1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CRAZY_LINKER_ERROR_H 6#define CRAZY_LINKER_ERROR_H 7 8namespace crazy { 9 10// A class used to hold a fixed-size buffer to hold error messages 11// as well as perform assignment and formatting. 12// 13// Usage examples: 14// Error error; 15// error = "Unimplemented feature"; 16// error->Set("Unimplemented feature"); 17// error->Format("Feature %s is not implemented", feature_name); 18// error->Append(strerror(errno)); 19// error->AppendFormat("Error: %s", strerror(errno)); 20// 21class Error { 22 public: 23 Error() { buff_[0] = '\0'; } 24 25 Error(const char* message) { Set(message); } 26 27 Error(const Error& other) { Set(other.buff_); } 28 29 const char* c_str() const { return buff_; } 30 31 void Set(const char* message); 32 33 void Format(const char* fmt, ...); 34 35 void Append(const char* message); 36 37 void AppendFormat(const char* fmt, ...); 38 39 private: 40 char buff_[512]; 41}; 42 43} // namespace crazy 44 45#endif // CRAZY_LINKER_ERROR_H 46