Ich schreibe ein EDA-Dienstprogramm, das auf einer TCL 8.6-konforme API beruht. Meine Herausforderung ist wie folgt:
Mein Dienstprogramm läuft auf Transistoren Modelle in der Datenbank und führt einige Analyse, mit einem TCL-API-Befehl eines EDA-Lieferanten. Ich kann den TCL-Befehlen einen TCL-Prozedurnamen/-zeiger übergeben, und die Analyse wird sich eher auf meinen Code als auf den Code der EDA-Hersteller stützen. Die interne geschriebene Prozedur akzeptiert als ein Argument einen Zeiger auf die spezifische Transistorinstanz in der Datenbank des EDA-Anbieters. Jetzt ermöglicht der EDA-Hersteller TCL 8.6, was bedeutet, dass ich lieber als einen globalen proc-Namen oder einen Namensraum proc-Namen, den Namen/Zeiger des spezifischen Objekts den Namen übergeben möchte. Wie mache ich das? Im Codebeispiel:Übergeben Sie eine Methode eines bestimmten Objekts als Eingabeargument in Tcl
oo:class create foo {
constructor {} {
variable numy 2
}
method fooshta { mos_pointer } {
puts "now in mosy [get name $mos_pointer ]"
}
destructor {}
}
foo create bar
analyse_tx -proc < how do I refer to bar's method fooshta?>
In einem nicht OOP Zusammenhang würde der Code wie folgt aussehen:
proc fooshta { mos_pointer } {
puts "now in mosy [get name $mos_pointer ]"
}
analyse_tx -proc fooshta
Wie man sehen kann, ich bin auf der Suche nach der Antwort für < how do I refer to bar's method fooshta, so that the EDA tool will invoke it for each transistors' instance? and pass the parameter?>
Dank.
1. wow 2.Danke, ich werde den EDA-Anbieter bitten, die Schnittstelle zu erweitern – user1134991
Da Sie die Delegaten-Aliase leicht genug machen können, brauchen Sie den Anbieter nicht zu kooperieren. ;-) –
tue ich nicht. Aber wenn ich den Verkäufer härter arbeiten lassen kann, könnte es auch ... wir zahlen ihm genug. – user1134991