/*
 Copyright 2019 Alain Dargelas

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

/*
 * File:   ErrorDefinition.cpp
 * Author: alain
 *
 * Created on March 5, 2017, 11:25 PM
 */
#include "Utils/StringUtils.h"
#include "ErrorReporting/ErrorDefinition.h"

using namespace SURELOG;

std::map<ErrorDefinition::ErrorType, ErrorDefinition::ErrorInfo>
    ErrorDefinition::m_errorInfoMap;

void ErrorDefinition::rec(ErrorType type, ErrorSeverity severity,
                          ErrorCategory category, std::string text,
                          std::string extraText) {
  ErrorInfo info(severity, category, text, extraText);
  m_errorInfoMap.insert(std::make_pair(type, info));
}

void ErrorDefinition::setSeverity(ErrorDefinition::ErrorType type,
                                  ErrorDefinition::ErrorSeverity severity) {
  std::map<ErrorDefinition::ErrorType, ErrorDefinition::ErrorInfo>::iterator
      itr = m_errorInfoMap.find(type);
  if (itr != m_errorInfoMap.end()) {
    ErrorDefinition::ErrorInfo& info = (*itr).second;
    info.m_severity = severity;
  }
}

ErrorDefinition::ErrorType ErrorDefinition::getErrorType(std::string errorId) {
  errorId = StringUtils::rtrim(errorId, ']');
  errorId = StringUtils::ltrim(errorId, '[');
  errorId = errorId.erase(0, 8);
  unsigned int id = atoi(errorId.c_str());
  return (ErrorDefinition::ErrorType)id;
}

ErrorDefinition::ErrorSeverity ErrorDefinition::getErrorSeverity(
    std::string errorSeverity) {
  if (errorSeverity == "FATAL")
    return FATAL;
  else if (errorSeverity == "ERROR")
    return ERROR;
  else if (errorSeverity == "WARNI" || errorSeverity == "WARNING")
    return WARNING;
  else if (errorSeverity == "INFO" || errorSeverity == "INFO ")
    return INFO;
  else if (errorSeverity == "NOTE" || errorSeverity == "NOTE ")
    return NOTE;
  else if (errorSeverity == "SYNTX" || errorSeverity == "SYNTAX")
    return NOTE;
  else
    return FATAL;
}

std::string ErrorDefinition::getCategoryName(
    ErrorDefinition::ErrorCategory category) {
  std::string cat;
  switch (category) {
    case ErrorDefinition::CMD:
      cat = "CM";
      break;
    case ErrorDefinition::PP:
      cat = "PP";
      break;
    case ErrorDefinition::PARSE:
      cat = "PA";
      break;
    case ErrorDefinition::PYTH:
      cat = "PY";
      break;
    case ErrorDefinition::LANG:
      cat = "LA";
      break;
    case ErrorDefinition::SEMA:
      cat = "SM";
      break;
    case ErrorDefinition::COMP:
      cat = "CP";
      break;
    case ErrorDefinition::ELAB:
      cat = "EL";
      break;
    case ErrorDefinition::LIB:
      cat = "LIB";
      break;
    case ErrorDefinition::LINT:
      cat = "LN";
      break;
    case ErrorDefinition::USER:
      cat = "US";
      break;
  }
  return cat;
}

ErrorDefinition::ErrorCategory ErrorDefinition::getCategory(std::string cat) {
  if (cat == "CM")
    return ErrorDefinition::CMD;
  else if (cat == "PP")
    return ErrorDefinition::PP;
  else if (cat == "PA")
    return ErrorDefinition::PARSE;
  else if (cat == "PY")
    return ErrorDefinition::PYTH;
  else if (cat == "LA")
    return ErrorDefinition::LANG;
  else if (cat == "SM")
    return ErrorDefinition::SEMA;
  else if (cat == "CP")
    return ErrorDefinition::COMP;
  else if (cat == "EL")
    return ErrorDefinition::ELAB;
  else if (cat == "LIB")
    return ErrorDefinition::LIB;
  else if (cat == "LN")
    return ErrorDefinition::LINT;
  else if (cat == "US")
    return ErrorDefinition::USER;
  return ErrorDefinition::USER;
}

bool ErrorDefinition::init() {
  rec(CMD_FILE_DOES_NOT_EXIST, FATAL, CMD, "File \"%s\" does not exist");
  rec(CMD_CANNOT_OPEN_FILE_FOR_READ, FATAL, CMD,
      "Cannot open file \"%s\" for read operation");
  rec(CMD_CANNOT_OPEN_FILE_FOR_WRITE, FATAL, CMD,
      "Cannot open file \"%s\" for write operation");
  rec(CMD_DASH_F_FILE_DOES_NOT_EXIST, FATAL, CMD,
      "Command file (-f) \"%s\" does not exist");
  rec(CMD_INCLUDE_PATH_DOES_NOT_EXIST, WARNING, CMD,
      "Include path \"%s\" does not exist");
  rec(CMD_LIBRARY_FILE_DOES_NOT_EXIST, FATAL, CMD,
      "Library file \"%s\" does not exist");
  rec(CMD_LIBRARY_PATH_DOES_NOT_EXIST, WARNING, CMD,
      "Library path \"%s\" does not exist");
  rec(CMD_VERILOG_FILE_DOES_NOT_EXIST, FATAL, CMD,
      "Verilog File \"%s\" does not exist");
  rec(CMD_PLUS_ARG_IGNORED, NOTE, CMD, "Command line argument \"%s\" ignored");
  rec(CMD_MINUS_ARG_IGNORED, WARNING, CMD,
      "Command line argument \"%s\" ignored");
  rec(CMD_DEBUG_MISSING_LEVEL, ERROR, CMD,
      "Option -d is missing the debug level <level>");
  rec(CMD_DEBUG_INCORRECT_LEVEL, WARNING, CMD,
      "Option -d received incorrect level: \"%s\", level should be 0-3");
  rec(CMD_LIBRARY_FILE_MISSING_FILE, ERROR, CMD,
      "Library File option \"%s\" is missing the file name");
  rec(CMD_LIBRARY_PATH_MISSING_PATH, ERROR, CMD,
      "Library Path option \"%s\" is missing the path name");
  rec(CMD_LOG_FILE_MISSING_FILE, ERROR, CMD,
      "Log file option \"%s\" is missing the path name");
  rec(CMD_PP_FILE_MISSING_FILE, ERROR, CMD,
      "Output file option \"%s\" is missing the path name");
  rec(CMD_MT_MISSING_LEVEL, ERROR, CMD,
      "Option -mt is missing the number of threads <max_threads>");
  rec(CMD_MT_INCORRECT_LEVEL, ERROR, CMD,
      "Option -mt received incorrect level: \"%s\", level should be 0-64");
  rec(CMD_SEPARATE_COMPILATION_UNIT_ON, INFO, CMD,
      "Separate compilation-unit mode is on");
  rec(CMD_PP_FILE_MISSING_ODIR, FATAL, CMD,
      "Missing output directory argument for -odir option");
  rec(CMD_PP_CANNOT_CREATE_OUTPUT_DIR, FATAL, CMD,
      "Cannot create output directory \"%s\"");
  rec(CMD_CREATING_LOG_FILE, INFO, CMD, "Creating log file %s");
  rec(CMD_NUMBER_THREADS, INFO, CMD, "Executing with %s threads");
  rec(CMD_PP_CANNOT_CREATE_CACHE_DIR, FATAL, CMD,
      "Cannot create cache directory \"%s\"");
  rec(CMD_TIMESCALE_MISSING_SETTING, FATAL, CMD, "Missing timescale setting");
  rec(CMD_SPLIT_FILE_MISSING_SIZE, FATAL, CMD, "Missing file splitting size");
  rec(CMD_UNDEFINED_CONFIG, ERROR, CMD, "Undefined configuration: \"%s\"");
  rec(CMD_USING_GLOBAL_TIMESCALE, INFO, CMD, "Using global timescale: \"%s\"");
  rec(PP_CANNOT_OPEN_FILE, ERROR, PP, "Cannot open file \"%s\"");
  rec(PP_CANNOT_OPEN_INCLUDE_FILE, ERROR, PP,
      "Cannot open include file \"%s\"");
  rec(PP_UNKOWN_MACRO, ERROR, PP, "Unknown macro \"%s\"");
  rec(PP_UNDEF_UNKOWN_MACRO, WARNING, PP, "Undefining an unknown macro \"%s\"");
  rec(PP_OPEN_FILE_FOR_WRITE, FATAL, PP,
      "Cannot open file \"%s\" for write operation");
  rec(PP_MULTIPLY_DEFINED_MACRO, NOTE, PP, "Multiply defined macro \"%s\"",
      "%exloc previous definition");
  rec(PP_SYNTAX_ERROR, SYNTAX, PP, "Syntax error: %s", "%exobj");
  rec(PP_TOO_MANY_ARGS_MACRO, ERROR, PP,
      "Too many arguments (%exobj) for macro \"%s\"",
      "%exloc macro definition takes %exobj");
  rec(PP_MACRO_SYNTAX_ERROR, SYNTAX, PP, "Syntax error in macro: %s",
      "%exloc macro instantiation");
  rec(PP_MACRO_NO_DEFAULT_VALUE, ERROR, PP,
      "Macro instantiation omits argument %exobj for \"%s\"",
      "%exloc No default value for argument %exobj in macro definition");
  rec(PP_MACRO_PARENTHESIS_NEEDED, ERROR, PP,
      "Macro instantiation omits parenthesis for \"%s\"",
      "%exloc macro definition has arguments");
  rec(PP_MACRO_NAME_RESERVED, ERROR, PP,
      "Illegally redefining compiler directive \"`%s\" as a macro name");
  rec(PP_MACRO_HAS_SPACE_BEFORE_ARGS, ERROR, PP,
      "Illegal space in between macro name \"%s\" and open parenthesis");
  rec(PP_MACRO_UNUSED_ARGUMENT, WARNING, PP, "Unused macro argument \"%s\"");
  rec(PP_MACRO_UNDEFINED_ARGUMENT, WARNING, PP,
      "Undefined macro argument \"%s\"");
  rec(PP_RECURSIVE_MACRO_DEFINITION, ERROR, PP,
      "Recursive macro definition for \"%s\"",
      "%exloc macro used in macro \"%exobj\"");
  rec(PP_UNTERMINATED_STRING, ERROR, PP, "Illegal unterminated string: >>%s<<", 
      "%exloc macro instance");
  rec(PP_UNESCAPED_CHARACTER_IN_STRING, ERROR, PP,
      "Illegal un-escaped character '%s' in string");
  rec(PP_UNRECOGNIZED_ESCAPED_SEQUENCE, ERROR, PP,
      "Unknown escaped sequence '%s'");
  rec(PP_INVALID_INCLUDE_FILENAME, ERROR, PP, "Invalid include filename");
  rec(PP_ILLEGAL_DIRECTIVE_IN_DESIGN_ELEMENT, ERROR, PP,
      "Illegal directive in design element \"%s\"", "%exloc macro instance");
  rec(PP_CANNOT_CREATE_DIRECTORY, FATAL, PP, "Cannot create directory \"%s\"");
  rec(PP_PROCESSING_SOURCE_FILE, INFO, PP, "Preprocessing source file \"%s\"");
  rec(PP_PROCESSING_INCLUDE_FILE, INFO, PP,
      "Preprocessing include file \"%s\"");
  rec(PP_ILLEGAL_DIRECTIVE_ELSEIF, ERROR, PP,
      "Illegal directive `elseif, correct directive is `elsif");
  rec(PP_CANNOT_READ_FILE_CONTENT, ERROR, PP,
      "Cannot read the file's content \"%s\". Only UTF-8 is supported");
  rec(PP_RECURSIVE_INCLUDE_DIRECTIVE, FATAL, PP,
      "Recursive include directive for file \"%s\"");
  rec(PA_CANNOT_SPLIT_FILE, WARNING, PARSE, "Cannot split large file \"%s\"");
  rec(PA_PROCESSING_SOURCE_FILE, INFO, PARSE, "Parsing source file \"%s\"");
  rec(PA_CANNOT_OPEN_FILE, FATAL, PARSE, "Cannot open file \"%s\"");
  rec(PA_UNKOWN_MACRO, ERROR, PARSE, "Unknown macro \"%s\"");
  rec(PA_MAX_LENGTH_IDENTIFIER, ERROR, PARSE,
      "Indentifier exceeds max length \"%s\"");
  rec(PA_NOTIMESCALE_INFO, WARNING, PARSE, "No timescale set for \"%s\"");
  rec(PA_MISSING_TIMEUNIT, ERROR, PARSE,
      "Missing timeunit/timeprecision for \"%s\"");
  rec(PA_SYNTAX_ERROR, SYNTAX, PARSE, "Syntax error: %s", "%exobj");
  rec(PA_RESERVED_KEYWORD, ERROR, PARSE, "Reserved keyword: %s");
  rec(PA_UNSUPPORTED_KEYWORD_LIST, ERROR, PARSE, "Unsupported keyword set: %s");
  rec(COMP_COMPILE, INFO, COMP, "Compilation..");
  rec(COMP_COMPILE_PACKAGE, INFO, COMP, "Compile package \"%s\"");
  rec(COMP_COMPILE_CLASS, INFO, COMP, "Compile class \"%s\"");
  rec(COMP_COMPILE_MODULE, INFO, COMP, "Compile module \"%s\"");
  rec(COMP_COMPILE_UDP, INFO, COMP, "Compile udp \"%s\"");
  rec(COMP_COMPILE_PROGRAM, INFO, COMP, "Compile program \"%s\"");
  rec(COMP_COMPILE_CHECKER, INFO, COMP, "Compile checker \"%s\"");
  rec(COMP_COMPILE_INTERFACE, INFO, COMP, "Compile interface \"%s\"");
  rec(COMP_UNDEFINED_INTERFACE, ERROR, COMP, "Undefined interface \"%s\"");
  rec(COMP_PORT_MISSING_TYPE, NOTE, COMP,
      "Implicit port type (wire) for \"%s\"",
      "there are %exobj more instances of this message");
  rec(COMP_PORT_MISSING_DIRECTION, WARNING, COMP,
      "Port \"%s\" definition missing its direction (input, output, inout)",
      "there are %exobj more instances of this message");
  rec(COMP_MODPORT_UNDEFINED_PORT, ERROR, COMP,
      "Undefined port used in modport: \"%s\"");
  rec(COMP_MODPORT_UNDEFINED_CLOCKING_BLOCK, ERROR, COMP,
      "Undefined clocking block used in modport: \"%s\"");
  rec(COMP_NO_MODPORT_IN_GENERATE, ERROR, COMP,
      "Illegal modport in generate statement");
  rec(COMP_PROGRAM_OBSOLETE_USAGE, WARNING, COMP,
      "Using programs is discouraged \"%s\", programs are obsoleted by UVM");
  rec(COMP_UNDEFINED_CLASS, ERROR, COMP, "Undefined class \"%s\"");
  rec(COMP_UNDEFINED_PACKAGE, ERROR, COMP, "Undefined package \"%s\"");
  rec(COMP_UNDEFINED_TYPE, ERROR, COMP, "Undefined type \"%s\"");
  rec(COMP_MULTIPLY_DEFINED_PROPERTY, ERROR, COMP,
      "Multiply defined property \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_CLASS, WARNING, COMP,
      "Multiply defined class \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_FUNCTION, ERROR, COMP,
      "Multiply defined function \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_TASK, ERROR, COMP, "Multiply defined task \"%s\"",
      "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_CONSTRAINT, ERROR, COMP,
      "Multiply defined constraint \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_TYPEDEF, ERROR, COMP,
      "Multiply defined typedef \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_INNER_CLASS, ERROR, COMP,
      "Multiply defined inner class \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_COVERGROUP, ERROR, COMP,
      "Multiply defined covergroup \"%s\"", "%exloc previous definition");
  rec(COMP_MULTIPLY_DEFINED_PARAMETER, ERROR, COMP,
      "Multiply defined parameter \"%s\"", "%exloc previous definition");
  rec(COMP_UNDEFINED_VARIABLE, ERROR, COMP, "Undefined variable \"%s\"");
  rec(COMP_UNDEFINED_BASE_CLASS, ERROR, COMP,
      "Undefined base class \"%s\" extended by \"%exobj\"");
  rec(COMP_MULTIPLY_DEFINED_PACKAGE, ERROR, COMP,
      "Multiply defined package: \"%s\"", "%exloc previous definition");
  rec(COMP_INCOMPATIBLE_TYPES, ERROR, COMP,
      "Incompatible types: \"%s\" is assigned \"%exobj\"");
  rec(COMP_MULTIPLY_DEFINED_VARIABLE, ERROR, COMP,
      "Multiply defined variable \"%s\"", "%exloc previous definition");
  rec(COMP_NO_METHOD_FOR_TYPE, ERROR, COMP,
      "Function \"%exobj\" is not defined for variable %s",
      "%exloc type definition");
  rec(COMP_UNDEFINED_SYSTEM_FUNCTION, ERROR, COMP,
      "Undefined system task/function \"$%s\"");
  rec(COMP_MULTIPLY_DEFINED_DESIGN_UNIT, ERROR, COMP,
      "Colliding compilation unit name: \"%s\"", "%exloc previous usage");
  rec(PY_PROCESSING_SOURCE_FILE, INFO, PYTH, "Processing source file \"%s\"");
  rec(PY_NO_PYTHON_LISTENER_FOUND, FATAL, PYTH,
      "No Python listener found (slSV3_1aPythonListener.py)");
  rec(ELAB_NO_MODULE_DEFINITION, WARNING, ELAB,
      "Cannot find a module definition for \"%s\"");
  rec(ELAB_NO_UDP_DEFINITION, WARNING, ELAB,
      "Cannot find a Udp definition for \"%s\"");
  rec(ELAB_NO_INTERFACE_DEFINITION, WARNING, ELAB,
      "Cannot find an interface definition for \"%s\"");
  rec(ELAB_TOP_LEVEL_MODULE, NOTE, ELAB, "Top level module \"%s\"");
  rec(ELAB_MULTIPLE_TOP_LEVEL_MODULES, NOTE, ELAB,
      "Multiple top level modules in design");
  rec(ELAB_MULTIPLY_DEFINED_MODULE, WARNING, ELAB,
      "Multiply defined module \"%s\"", "%exloc previous definition");
  rec(ELAB_NO_TOP_LEVEL_MODULE, ERROR, ELAB, "No top level module in design");
  rec(ELAB_INSTANTIATION_LOOP, ERROR, ELAB, "Instantiation loop for \"%s\"",
      "%exloc previous instantiation");
  rec(ELAB_NB_TOP_LEVEL_MODULES, NOTE, ELAB, "Nb Top level modules: %s");
  rec(ELAB_MAX_INSTANCE_DEPTH, NOTE, ELAB, "Max instance depth: %s");
  rec(ELAB_NB_INSTANCES, NOTE, ELAB, "Nb instances: %s");
  rec(ELAB_NB_LEAF_INSTANCES, NOTE, ELAB, "Nb leaf instances: %s");
  rec(ELAB_NB_UNDEF_MODULES, WARNING, ELAB, "Nb undefined modules: %s");
  rec(ELAB_NB_UNDEF_INSTANCES, WARNING, ELAB, "Nb undefined instances: %s");
  rec(ELAB_UNDEF_VARIABLE, ERROR, ELAB, "Undefined variable: %s");
  rec(ELAB_UNMATCHED_DEFPARAM, WARNING, ELAB,
      "Defparam does not match any design object: \"%s\"");
  rec(ELAB_DEFPARAM_OUTSIDE_SCOPE, ERROR, ELAB,
      "Defparam sets an object outside its generate scope: \"%s\"");
  rec(ELAB_MULTI_DEFPARAM_ON_OBJECT, WARNING, ELAB,
      "Multiple defparam on object: \"%s\"", "%exloc previous setting");
  rec(ELAB_UNDEFINED_CONFIG, ERROR, ELAB, "Undefined configuration: \"%s\"");
  rec(ELAB_CONFIGURATION_USED, NOTE, ELAB, "Using configuration \"%s\"");
  rec(ELAB_CONFIGURATION_IGNORED, NOTE, ELAB, "Ignoring configuration \"%s\"");
  rec(ELAB_USE_CLAUSE_IGNORED, WARNING, ELAB,
      "Use clause has no effect, no matching design object found \"%s\"");
  rec(ELAB_SCOPE_PATH, NOTE, ELAB, "Scope \"%s\"");
  rec(ELAB_INSTANCE_PATH, NOTE, ELAB, "Instance \"%s\"");
  rec(ELAB_INTERFACE_INSTANCE_PATH, NOTE, ELAB, "Interface Instance \"%s\"");
  rec(ELAB_PROGRAM_INSTANCE_PATH, NOTE, ELAB, "Program Instance \"%s\"");
  rec(ELAB_ELABORATING_DESIGN, INFO, ELAB, "Design Elaboration..");
  rec(ELAB_ELABORATING_TESTBENCH, INFO, ELAB, "Testbench Elaboration..");
  rec(ELAB_UNDEFINED_PACKAGE, ERROR, ELAB,
      "Undefined imported package: \"%s\"");
  rec(ELAB_OUT_OF_RANGE_PARAM_INDEX, ERROR, ELAB,
      "Out of range parameter index: \"%s\"");
  rec(LIB_FILE_MAPS_TO_MULTIPLE_LIBS, ERROR, LIB,
      "File \"%exobj\" maps to multiple libraries: \"%s\"");
  return true;
}
