/*
 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 "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 
    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,                   ERROR,   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,             ERROR,   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");
  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,                   ERROR,   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;
}

