本文整理汇总了C++中CodeErrors类的典型用法代码示例。如果您正苦于以下问题:C++ CodeErrors类的具体用法?C++ CodeErrors怎么用?C++ CodeErrors使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CodeErrors类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DECLARE_BOOST_TYPES
namespace HPHP { namespace Compiler {
///////////////////////////////////////////////////////////////////////////////
DECLARE_BOOST_TYPES(ErrorInfo);
class ErrorInfo : public JSON::CodeError::ISerializable {
public:
ErrorType m_error;
ConstructPtr m_construct1;
ConstructPtr m_construct2;
std::string m_data;
/**
* Implements JSON::CodeError::ISerializable.
*/
virtual void serialize(JSON::CodeError::OutputStream &out) const;
};
///////////////////////////////////////////////////////////////////////////////
class CodeErrors : public JSON::CodeError::ISerializable {
public:
CodeErrors();
void clear();
/**
* Implements JSON::CodeError::ISerializable.
*/
virtual void serialize(JSON::CodeError::OutputStream &out) const;
void record(ErrorInfoPtr errorInfo);
bool exists(ErrorType type) const;
bool exists() const;
void saveToFile(AnalysisResultPtr ar,
const char *filename, bool varWrapper) const;
private:
static std::vector<const char *> ErrorTexts;
static std::vector<const char *> &getErrorTexts();
typedef std::map<ConstructPtr, ErrorInfoPtr> ErrorInfoMap;
std::vector<ErrorInfoMap> m_errors;
Mutex m_mutex;
};
static CodeErrors s_code_errors;
///////////////////////////////////////////////////////////////////////////////
// class CodeErrors
std::vector<const char *> CodeErrors::ErrorTexts;
std::vector<const char *> &CodeErrors::getErrorTexts() {
if (ErrorTexts.empty()) {
ErrorTexts.resize(ErrorCount);
#define CODE_ERROR_ENTRY(x) ErrorTexts[x] = #x;
#include "compiler/analysis/code_error.inc"
#undef CODE_ERROR_ENTRY
}
return ErrorTexts;
}
CodeErrors::CodeErrors() {
m_errors.resize(ErrorCount);
}
void CodeErrors::clear() {
m_errors.clear();
m_errors.resize(ErrorCount);
}
void CodeErrors::record(ErrorInfoPtr errorInfo) {
ASSERT(errorInfo->m_error >= 0 && errorInfo->m_error < ErrorCount);
Lock lock(m_mutex);
m_errors[errorInfo->m_error][errorInfo->m_construct1] = errorInfo;
}
bool CodeErrors::exists(ErrorType type) const {
return !m_errors[type].empty();
}
bool CodeErrors::exists() const {
for (unsigned int i = 0; i < m_errors.size(); i++) {
const ErrorInfoMap &errorMap = m_errors[i];
if (!errorMap.empty()) return true;
}
return false;
}
void ErrorInfo::serialize(JSON::CodeError::OutputStream &out) const {
JSON::CodeError::MapStream ms(out);
if (m_construct1) {
ms.add("c1", m_construct1);
}
if (m_construct2) {
ms.add("c2", m_construct2);
}
if (!m_data.empty()) {
ms.add("d", m_data);
}
ms.done();
//.........这里部分代码省略.........
示例2: Error
void Error(ErrorType error, ConstructPtr construct, const std::string &data) {
if (hhvm) return;
ErrorInfoPtr errorInfo(new ErrorInfo());
errorInfo->m_error = error;
errorInfo->m_construct1 = construct;
errorInfo->m_data = data;
s_code_errors.record(errorInfo);
}
示例3: Error
void Error(ErrorType error, ConstructPtr construct1, ConstructPtr construct2) {
if (!Option::RecordErrors) return;
ErrorInfoPtr errorInfo(new ErrorInfo());
errorInfo->m_error = error;
errorInfo->m_construct1 = construct1;
errorInfo->m_construct2 = construct2;
errorInfo->m_data = construct1->getText();
s_code_errors.record(errorInfo);
}
示例4: HasError
bool HasError() {
return s_code_errors.exists();
}
示例5: DumpErrors
void DumpErrors(AnalysisResultPtr ar) {
JSON::CodeError::OutputStream o(std::cerr, ar);
s_code_errors.serialize(o);
}
示例6: SaveErrors
void SaveErrors(AnalysisResultPtr ar,
const char *filename,
bool varWrapper /* = false */) {
s_code_errors.saveToFile(ar, filename, varWrapper);
}
示例7: ClearErrors
void ClearErrors() {
s_code_errors.clear();
}