====== Language plugins : Implementation ====== ===== Simple query functions ===== ==== ~LANGUAGE() ==== C++ rules require a virtual destructor when there are virtual functions. You need to define one as a tracing aid. It can be an empty function. ~LANG_VERILOG() {itested();} ==== std::string name()const ==== Return the name to use as a key to enable this language. std::string name()const {return "verilog";} ==== bool case_insensitive()const ==== Return false if the language is case sensitive, true if case insensitive. bool case_insensitive()const {return false;} ==== UNITS units()const ==== This function determines how numeric strings with multiplier suffixes such as "10m" are parsed. It should return ''uSI'' for standard SI units. (M = meg = 10^6, m = milli = 10^-3) or ''uSPICE'' for SPICE syntax (M = milli = 10^-3, Meg = meg = 10^6). UNITS units()const {return uSI;} ===== Used by obsolete_callback ===== These functions describe the syntax for parameter assignment statements. For example, the most common syntax is ''x=value'', but Verilog uses ''.x(value)''. You need to specify the front, mid, and back strings. For ''x=value'' the code is: std::string arg_front()const {return " ";} std::string arg_mid()const {return "=";} std::string arg_back()const {return "";} For ''.x(value)'' the code is: std::string arg_front()const {return ".";} std::string arg_mid()const {return "(";} std::string arg_back()const {return ")";}