#include "odin_types.h"

const char *signedness_STR[] =
{
	"SIGNED",
	"UNSIGNED"
};

const char *edge_type_e_STR[] =
{
	"FALLING_EDGE_SENSITIVITY",
	"RISING_EDGE_SENSITIVITY",
	"ACTIVE_HIGH_SENSITIVITY",
	"ACTIVE_LOW_SENSITIVITY",
	"ASYNCHRONOUS_SENSITIVITY",
	"UNDEFINED_SENSITIVITY"
};

const char *_ZERO_GND_ZERO[] = 
{
	"ZERO_GND_ZERO","ZGZ"
};

const char *_ONE_VCC_CNS[] = 
{
	"ONE_VCC_CNS","OVC",
};

const char *_ZERO_PAD_ZERO[] = 
{
	"ZERO_PAD_ZERO","ZPZ"
};

const char *_SINGLE_PORT_RAM_string[] = 
{
	"single_port_ram","SPR"
};

const char *_DUAL_PORT_RAM_string[] = 
{
	"dual_port_ram","DPR"
};

const char *ZERO_GND_ZERO = _ZERO_GND_ZERO[ODIN_STRING_TYPE];
const char *ONE_VCC_CNS = _ONE_VCC_CNS[ODIN_STRING_TYPE];
const char *ZERO_PAD_ZERO = _ZERO_PAD_ZERO[ODIN_STRING_TYPE];

const char *SINGLE_PORT_RAM_string = _SINGLE_PORT_RAM_string[ODIN_STRING_TYPE];
const char *DUAL_PORT_RAM_string = _DUAL_PORT_RAM_string[ODIN_STRING_TYPE];

const char *operation_list_STR[][2] = 
{
	{"NO_OP",           "nOP"},
	{"MULTI_PORT_MUX",  "nMUX"}, // port 1 = control, port 2+ = mux options
	{"FF_NODE",         "FF"},
	{"BUF_NODE",        "BUF"},
	{"INPUT_NODE",      "IN"},
	{"OUTPUT_NODE",     "OUT"},
	{"GND_NODE",        "GND"},
	{"VCC_NODE",        "VCC"},
	{"CLOCK_NODE",      "CLK"},
	{"ADD",             "ADD"}, // +
	{"MINUS",           "MIN"}, // -
	{"BITWISE_NOT",     "bNOT"}, // ~
	{"BITWISE_AND",     "bAND"}, // &
	{"BITWISE_OR",      "bOR"}, // |
	{"BITWISE_NAND",    "bNAND"}, // ~&
	{"BITWISE_NOR",     "bNOR"}, // ~|
	{"BITWISE_XNOR",    "bXNOR"}, // ~^
	{"BITWISE_XOR",     "bXOR"}, // ^
	{"LOGICAL_NOT",     "lNOT"}, // !
	{"LOGICAL_OR",      "lOR"}, // ||
	{"LOGICAL_AND",     "lAND"}, // &&
	{"LOGICAL_NAND",    "lNAND"}, // No Symbol
	{"LOGICAL_NOR",     "lNOR"}, // No Symbol
	{"LOGICAL_XNOR",    "lXNOR"}, // No symbol
	{"LOGICAL_XOR",     "lXOR"}, // No Symbol
	{"MULTIPLY",        "MUL"}, // *
	{"DIVIDE",          "DIV"}, // /
	{"MODULO",          "MOD"}, // %
	{"OP_POW",          "POW"}, // **
	{"LT",              "LT"}, // <
	{"GT",              "GT"}, // >
	{"LOGICAL_EQUAL",   "lEQ"}, // ==
	{"NOT_EQUAL",       "lNEQ"}, // !=
	{"LTE",             "LTE"}, // <=
	{"GTE",             "GTE"}, // >=
	{"SR",              "SR"}, // >>
	{"ASR",             "ASR"}, // >>>
	{"SL",              "SL"}, // <<
	{"CASE_EQUAL",      "cEQ"}, // ===
	{"CASE_NOT_EQUAL",  "cNEQ"}, // !==
	{"ADDER_FUNC",      "ADDER"},
	{"CARRY_FUNC",      "CARRY"},
	{"MUX_2",           "MUX_2"},
	{"BLIF_FUNCTION",   "BLIFf"},
	{"NETLIST_FUNCTION","NETf"},
	{"MEMORY",          "MEM"},
	{"PAD_NODE",        "PAD"},
	{"HARD_IP",         "HARD"},
	{"GENERIC",         "GEN"}, /*added for the unknown node type */
	{"FULLADDER",       "FlADD"},
	{"CLOG2",			"CL2"} // $clog2
};

const char *ids_STR []= 
{
	"NO_ID",
	/* top level things */
	"FILE_ITEMS",
	"MODULE",
	/* VARIABLES */
	"INPUT",
	"OUTPUT",
	"INOUT",
	"WIRE",
	"REG",
	"INTEGER",
	"PARAMETER",
	"INITIALS",
	"PORT",
	/* OTHER MODULE ITEMS */
	"MODULE_ITEMS",
	"VAR_DECLARE",
	"VAR_DECLARE_LIST",
	"ASSIGN",
   	/* OTHER MODULE AND FUNCTION ITEMS */
	"FUNCTION",
   	/* OTHER FUNCTION ITEMS */
  	"FUNCTION_ITEMS",
	/* primitives */
	"GATE",
	"GATE_INSTANCE",
	"ONE_GATE_INSTANCE",
	/* Module instances */
	"MODULE_CONNECT_LIST",
	"MODULE_CONNECT",
	"MODULE_PARAMETER_LIST",
	"MODULE_PARAMETER",
	"MODULE_NAMED_INSTANCE",
	"MODULE_INSTANCE",
	"MODULE_MASTER_INSTANCE",
	"ONE_MODULE_INSTANCE",
	/* Function instances*/
	"FUNCTION_NAMED_INSTANCE",
	"FUNCTION_INSTANCE",
	"SPECIFY_PAL_CONNECTION_STATEMENT",
	"SPECIFY_PAL_CONNECT_LIST",
	/* statements */
	"BLOCK",
	"NON_BLOCKING_STATEMENT",
	"BLOCKING_STATEMENT",
	"ASSIGNING_LIST",
	"CASE",
	"CASE_LIST",
	"CASE_ITEM",
	"CASE_DEFAULT",
	"ALWAYS",
	"IF",
	"IF_Q",
	"FOR",
	"WHILE",
	/* Delay Control */
	"DELAY_CONTROL",
	"POSEDGE",
	"NEGEDGE",
	/* expressions */
	"BINARY_OPERATION",
	"UNARY_OPERATION",
	/* basic primitives */
	"ARRAY_REF",
	"RANGE_REF",
	"CONCATENATE",
	/* basic identifiers */
	"IDENTIFIERS",
	"NUMBERS",
	/* Hard Blocks */
	"HARD_BLOCK",
	"HARD_BLOCK_NAMED_INSTANCE",
	"HARD_BLOCK_CONNECT_LIST",
	"HARD_BLOCK_CONNECT",
	// EDDIE: new enum value for ids to replace MEMORY from operation_t
	"RAM"
};