Commit 8558a922 by lvzhengyang

add logger into MiniEda class

parent 5e477ed6
......@@ -34,7 +34,7 @@ set max_string_length 2000
set out_stream [open $encoded_filename w]
puts $out_stream "// TCL init file encoded by TclEncode.tcl"
puts $out_stream "namespace sta {"
puts $out_stream "namespace eda {"
puts $out_stream "const char *$init_var\[\] = {"
puts -nonewline $out_stream "\""
set encoded_length 0
......
......@@ -4,6 +4,10 @@ extern "C" {
struct Tcl_Interp;
}
namespace utl {
class Logger;
}
namespace eda {
class MiniEda
......@@ -11,7 +15,9 @@ class MiniEda
public:
static MiniEda* miniEda();
void init(Tcl_Interp* tcl_interp);
Tcl_Interp* tclInterp() { return tcl_interp_; }
utl::Logger* getLogger() { return logger_; }
protected:
~MiniEda();
......@@ -21,6 +27,7 @@ private:
MiniEda();
Tcl_Interp* tcl_interp_;
utl::Logger* logger_;
};
int tclAppInit(Tcl_Interp* interp);
......
......@@ -144,6 +144,7 @@ target_include_directories(minieda
target_link_libraries(minieda
minieda_swig
odb
utl
${CMAKE_THREAD_LIBS_INIT}
${TCL_LIBRARY}
)
......
......@@ -19,6 +19,8 @@
int cmd_argc;
char** cmd_argv;
const char* log_filename = nullptr;
const char* metrics_filename = nullptr;
/*
static void handler(int) {
......@@ -31,6 +33,7 @@ static void handler(int) {
int main(int argc, char* argv[])
{
/*
// cannot build on IPRC server
// Generate a stacktrace on crash
signal(SIGABRT, handler);
signal(SIGBUS, handler);
......@@ -40,6 +43,23 @@ int main(int argc, char* argv[])
*/
Tcl_Main(1, argv, eda::tclAppInit);
/*
// TODO: Implement findCmdLineKey here
log_filename = findCmdLineKey(argc, argv, "-log");
if (log_filename) {
remove(log_filename);
}
metrics_filename = findCmdLineKey(argc, argv, "-metrics");
if (metrics_filename) {
remove(metrics_filename);
}
*/
cmd_argc = argc;
cmd_argv = argv;
return 0;
}
......
#include <tcl.h>
#include "eda/MiniEda.hh"
#include "utl/MakeLogger.h"
#include "utl/Logger.h"
// Swig uses C linkage for init functions.
extern "C" {
extern int Minieda_swig_Init(Tcl_Interp *interp);
extern int Odbtcl_Init(Tcl_Interp *interp);
}
// Main.cc set by main()
// needed in makeLogger()
extern const char* log_filename;
extern const char* metrics_filename;
namespace eda {
MiniEda::MiniEda()
: tcl_interp_(nullptr)
: tcl_interp_(nullptr),
logger_(nullptr)
{
}
MiniEda::~MiniEda()
{
delete logger_;
}
void deleteAllMemory()
......@@ -39,6 +55,14 @@ void MiniEda::init(Tcl_Interp* interp)
// remove error from tcl result.
Tcl_ResetResult(interp);
}
logger_ = makeLogger(log_filename, metrics_filename);
// Init components.
Minieda_swig_Init(interp);
// defined in MakeModuleXX.h
initLogger(logger_, interp);
}
} // namespace eda
......@@ -20,16 +20,16 @@ MiniEda* getMiniEda()
return MiniEda::miniEda();
}
// utl::Logger* getLogger()
// {
// return MiniEda::miniEda()->getLogger();
// }
utl::Logger* getLogger()
{
return MiniEda::miniEda()->getLogger();
}
} // namespace eda
using eda::MiniEda;
using eda::getMiniEda;
// using eda::getLogger;
using eda::getLogger;
%}
......
......@@ -43,7 +43,7 @@ extern "C" {
struct Tcl_Interp;
}
namespace ord {
namespace eda {
utl::Logger *
makeLogger(const char *log_filename,
......
......@@ -39,8 +39,7 @@
namespace eda {
// Defined in MiniEda.i
utl::Logger *
getLogger();
utl::Logger* getLogger();
}
using utl::ToolId;
......
......@@ -42,7 +42,7 @@ extern "C" {
extern int Utl_Init(Tcl_Interp *interp);
}
namespace ord {
namespace eda {
using utl::Logger;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment