WIP: Fixed Spice reader/writer delegate, tests.

This commit is contained in:
Matthias Koefferlein 2019-06-23 00:08:49 +02:00
parent a1a0b62a10
commit 717e7ca0ab
3 changed files with 12 additions and 23 deletions

View File

@ -1486,34 +1486,23 @@ public:
db::NetlistSpiceWriterDelegate::write_device (dev); db::NetlistSpiceWriterDelegate::write_device (dev);
} }
void org_write_header () const
{
db::NetlistSpiceWriterDelegate::write_header ();
}
gsi::Callback cb_write_header; gsi::Callback cb_write_header;
gsi::Callback cb_write_device_intro; gsi::Callback cb_write_device_intro;
gsi::Callback cb_write_device; gsi::Callback cb_write_device;
}; };
static void write_header_fb (const db::NetlistSpiceWriterDelegate *delegate)
{
delegate->write_header ();
}
static void write_device_intro_fb (const db::NetlistSpiceWriterDelegate *delegate, const db::DeviceClass &ccls)
{
delegate->write_device_intro (ccls);
}
static void write_device_fb (const db::NetlistSpiceWriterDelegate *delegate, const db::Device &cdev)
{
delegate->write_device (cdev);
}
Class<NetlistSpiceWriterDelegateImpl> db_NetlistSpiceWriterDelegate ("db", "NetlistSpiceWriterDelegate", Class<NetlistSpiceWriterDelegateImpl> db_NetlistSpiceWriterDelegate ("db", "NetlistSpiceWriterDelegate",
gsi::method_ext ("write_header", &write_header_fb, "@hide") + gsi::method ("write_header", &NetlistSpiceWriterDelegateImpl::org_write_header, "@hide") +
gsi::method_ext ("write_device_intro", &write_device_intro_fb, "@hide") +
gsi::method_ext ("write_device", &write_device_fb, "@hide") +
gsi::callback ("write_header", &NetlistSpiceWriterDelegateImpl::write_header, &NetlistSpiceWriterDelegateImpl::cb_write_header, gsi::callback ("write_header", &NetlistSpiceWriterDelegateImpl::write_header, &NetlistSpiceWriterDelegateImpl::cb_write_header,
"@brief Writes the text at the beginning of the SPICE netlist\n" "@brief Writes the text at the beginning of the SPICE netlist\n"
"Reimplement this method to insert your own text at the beginning of the file" "Reimplement this method to insert your own text at the beginning of the file"
) + ) +
gsi::method ("write_device_intro", &NetlistSpiceWriterDelegateImpl::org_write_device_intro, "@hide") +
gsi::callback ("write_device_intro", &NetlistSpiceWriterDelegateImpl::reimpl_write_device_intro, &NetlistSpiceWriterDelegateImpl::cb_write_device_intro, gsi::arg ("device_class"), gsi::callback ("write_device_intro", &NetlistSpiceWriterDelegateImpl::reimpl_write_device_intro, &NetlistSpiceWriterDelegateImpl::cb_write_device_intro, gsi::arg ("device_class"),
"@brief Inserts a text for the given device class\n" "@brief Inserts a text for the given device class\n"
"Reimplement this method to insert your own text at the beginning of the file for the given device class" "Reimplement this method to insert your own text at the beginning of the file for the given device class"

View File

@ -30,7 +30,7 @@ module RBA
end end
end end
class MyDelegate < RBA::NetlistSpiceReaderDelegate class MyNetlistSpiceReaderDelegate < RBA::NetlistSpiceReaderDelegate
def start(netlist) def start(netlist)
netlist.description = "Read by MyDelegate" netlist.description = "Read by MyDelegate"
@ -82,7 +82,7 @@ class DBNetlistReaderTests_TestClass < TestBase
input = File.join($ut_testsrc, "testdata", "algo", "nreader6.cir") input = File.join($ut_testsrc, "testdata", "algo", "nreader6.cir")
mydelegate = MyDelegate::new mydelegate = MyNetlistSpiceReaderDelegate::new
reader = RBA::NetlistSpiceReader::new(mydelegate) reader = RBA::NetlistSpiceReader::new(mydelegate)
# the delegate is kept by the SPICE writer .. # the delegate is kept by the SPICE writer ..
mydelegate = nil mydelegate = nil
@ -113,7 +113,7 @@ END
input = File.join($ut_testsrc, "testdata", "algo", "nreader6.cir") input = File.join($ut_testsrc, "testdata", "algo", "nreader6.cir")
mydelegate = MyDelegate::new mydelegate = MyNetlistSpiceReaderDelegate::new
def mydelegate.element(circuit, el, name, model, value, nets, params) def mydelegate.element(circuit, el, name, model, value, nets, params)
self.error("Nothing implemented") self.error("Nothing implemented")

View File

@ -23,7 +23,7 @@ end
load("test_prologue.rb") load("test_prologue.rb")
class MyDelegate < RBA::NetlistSpiceWriterDelegate class MyNetlistSpiceWriterDelegate < RBA::NetlistSpiceWriterDelegate
def write_header def write_header
emit_line("*** My special header") emit_line("*** My special header")
@ -114,7 +114,7 @@ class DBNetlistWriterTests_TestClass < TestBase
input = File.join($ut_testsrc, "testdata", "algo", "nwriter_rba2_au.txt") input = File.join($ut_testsrc, "testdata", "algo", "nwriter_rba2_au.txt")
mydelegate = MyDelegate::new mydelegate = MyNetlistSpiceWriterDelegate::new
writer = RBA::NetlistSpiceWriter::new(mydelegate) writer = RBA::NetlistSpiceWriter::new(mydelegate)
# the delegate is kept by the SPICE writer .. # the delegate is kept by the SPICE writer ..
mydelegate = nil mydelegate = nil