|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecthades.simulator.SimObject
hades.models.Design
Design: a SimObject that represents a circuit built from a collection of other simulation models.
A Design may have a graphical representation (schematic) and may contain other Design objects, thereby allowing hierarchy. Usually, only the top-level Design object has a schematic. A Design has a reference to a simulator and the editor.
Field Summary |
Fields inherited from class hades.simulator.SimObject |
classloader, console, debug, editor, name, ports, propertySheet, symbol, visible |
Constructor Summary | |
Design()
|
|
Design(Design parent,
SimKernel simulator,
java.lang.String name)
Construct a Design object called 'name' as a subdesign of 'parent' |
Method Summary | |
void |
addComponent(SimObject simobj)
add a SimObject (a 'component') to this Design, using its own name. |
void |
addComponent(SimObject simobj,
java.lang.String name)
add a SimObject (a 'component') called 'name' to this Design If 'name' is already used in this Design, we automatically create a new unique name for the component. |
void |
addSignal(Signal signal)
add a Signal under its own name to this Design |
void |
addSignal(Signal signal,
java.lang.String name)
add a Signal called 'name' to this Design |
java.lang.String |
changeComponentName(SimObject obj,
java.lang.String newName)
change a component's name. |
int |
checkDesign(boolean highlightErrors)
check the current Design for typical errors and return the number of errors. |
void |
configure()
create and display a 'ConfigDialog' to set the parameters for a SimObject. |
java.lang.String |
constructUniqueComponentName(java.lang.String name)
construct a unique component name from given argument 'name'. |
java.lang.String |
constructUniqueSignalName(java.lang.String name)
construct a unique signal name from given argument 'name'. |
SimObject |
copy()
get a copy of the current Design. |
Symbol |
createSymbol()
create a default Symbol for the current Design object. |
void |
deleteComponent(SimObject tmp)
delete the SimObject 'tmp' from this Design. |
void |
deleteComponent(java.lang.String name)
delete the SimObject (a 'component') called 'name' from this Design. |
void |
deleteSignal(Signal tmp)
delete the Signal 'tmp' from this Design. |
void |
deleteSignal(java.lang.String name)
|
void |
elaborate(java.lang.Object arg)
elaborate(): This method is called by the simulation engine to initialize the simulation object. |
SimObject |
getComponent(java.lang.String name)
get a reference to a component (SimObject) of this Design object via the components (short) name. |
java.util.Enumeration |
getComponents()
get an Enumeration of all components of this Design |
java.lang.String |
getEscapedResourceName()
return an encoded version of the resource name for this Design. |
java.lang.String[] |
getExternalResources()
return a String[] array of length 1 with our current Hades design name |
Port |
getPort(java.lang.String name)
get a reference to a port called 'name' if any |
Port[] |
getPorts()
get a list of Ports on this SimObject |
java.io.InputStream |
getResourceAsStream(java.lang.String s)
for Design, we want a slightly different algorithm to find resources. |
java.lang.String |
getResourceName()
|
Signal |
getSignal(java.lang.String name)
get a reference to a signal called 'name' in this Design |
java.util.Enumeration |
getSignals()
get an Enumeration of all signals in this Design |
SimKernel |
getSimulator()
return a reference to our simulation engine |
java.lang.String |
getSymbolResourceName()
get the .sym Symbol resource name for this Design. |
static Design |
getTestDesign(int n_inverters)
|
java.lang.String |
getToolTip(java.awt.Point position,
long millis)
construct a (short) tool tip message for a SimObject. |
long |
getVersionId()
|
boolean |
initialize(java.lang.String s)
initialize a (Sub)Design from a String. |
static void |
main(java.lang.String[] argv)
main(): simple self test with inverter chain |
boolean |
needsExternalResources()
we use one external resource: the Hades file to initialize us. |
void |
printAllComponents(java.lang.String indent)
|
void |
printAllSignals(java.lang.String indent)
|
void |
printComponents()
|
void |
printToplevelSignals(java.lang.String indent)
|
void |
read()
read a Design object with subdesigns and components and signals from an InputStream. |
void |
setDesign(Design parent)
set a new parent Design (together with it's SimKernel) |
void |
setDesignName(java.lang.String name)
set a new name for this Design |
void |
setEditor(Editor editor)
set the Editor for this Design |
void |
setResourceName(java.lang.String _name)
|
void |
setSimulator(SimKernel simulator)
set a new simulation engine for this Design |
void |
setSymbol(Symbol tmp)
set a new Symbol for this Design |
void |
tearDown()
tearDown(): called at the end of a simulation to clear up all references held by the SimObject. |
java.lang.String |
toString()
toString() - the usual info method |
java.lang.StringBuffer |
toStringComponents(java.lang.StringBuffer sb,
java.lang.String indent)
|
static void |
usage()
usage(): explain the parameters for main(). |
void |
write(java.io.PrintWriter ps)
write a Design object to a PrintWriter |
Methods inherited from class hades.simulator.SimObject |
constructDynamicSymbol, evaluate, getBindkey, getClassLoader, getDebug, getEditor, getFullName, getName, getParent, getPropertySheet, getSymbol, isVisible, keyPressed, message, mousePressed, needsDynamicSymbol, setClassLoader, setConsole, setDebug, setName, setParent, setPorts, setVersionId, setVisible |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public Design(Design parent, SimKernel simulator, java.lang.String name)
public Design()
Method Detail |
public boolean needsExternalResources()
needsExternalResources
in class SimObject
public java.lang.String[] getExternalResources()
getExternalResources
in class SimObject
public java.io.InputStream getResourceAsStream(java.lang.String s)
getResourceAsStream
in class SimObject
public boolean initialize(java.lang.String s)
instancename xpos ypos versionid resourcename
resourcename
The method returns true once all required data has been read.
initialize
in class SimObject
public void configure()
SimObject
configure
in class SimObject
public void setDesign(Design parent)
public final SimKernel getSimulator()
getSimulator
in class SimObject
public void setSimulator(SimKernel simulator)
setSimulator
in class SimObject
public void setEditor(Editor editor)
setEditor
in class SimObject
public void setDesignName(java.lang.String name)
public void setSymbol(Symbol tmp)
setSymbol
in class SimObject
public long getVersionId()
getVersionId
in class SimObject
public java.lang.String getSymbolResourceName()
getSymbolResourceName
in class SimObject
public java.lang.String getResourceName()
public void setResourceName(java.lang.String _name)
public java.lang.String getEscapedResourceName()
While the resource name, as a standard Java string, may contain any Unicode characters, several parsers inside of HADES don't like special chars like spaces, tabs, etc. To avoid rewriting all those parsers, this method returns a 'Unicode escape' version of the resource Name, e.g. ' ' is replaced by ' '.
public void elaborate(java.lang.Object arg)
SimObject
elaborate
in interface Simulatable
elaborate
in class SimObject
public void addComponent(SimObject simobj)
public void addComponent(SimObject simobj, java.lang.String name)
public java.lang.String constructUniqueComponentName(java.lang.String name)
public java.lang.String changeComponentName(SimObject obj, java.lang.String newName)
This is not so easy as it might seem, because this method is also called by SimObject.setName(), to avoid duplicate component names.
In order to avoid endless calling sequences between SimObject.setName() and changeComponentName(), we do the construction of an unique name and the deletion/insertion into the componentTable of this Design by hand (instead of caling addComponent).
public void deleteComponent(java.lang.String name)
public void deleteComponent(SimObject tmp)
public SimObject getComponent(java.lang.String name)
public java.util.Enumeration getComponents()
public void addSignal(Signal signal)
public void addSignal(Signal signal, java.lang.String name)
public java.lang.String constructUniqueSignalName(java.lang.String name)
public void deleteSignal(java.lang.String name)
public void deleteSignal(Signal tmp)
public Signal getSignal(java.lang.String name)
public java.util.Enumeration getSignals()
public Port[] getPorts()
SimObject
getPorts
in class SimObject
public Port getPort(java.lang.String name)
SimObject
getPort
in class SimObject
public void printComponents()
public void printAllComponents(java.lang.String indent)
public java.lang.StringBuffer toStringComponents(java.lang.StringBuffer sb, java.lang.String indent)
public void printToplevelSignals(java.lang.String indent)
public void printAllSignals(java.lang.String indent)
public int checkDesign(boolean highlightErrors)
public void tearDown()
SimObject
tearDown
in class SimObject
public void read()
// comment [hades.models.Design] TheNameOfThisDesign [components] hades.models.Design subdesignName pos_x pos_y ... hades.models.gates.Inv inverterName pos_x pos_y ... [end components] [signals] [end signals] ... [reserved] [end]Nested designs/models use indentation.
public void write(java.io.PrintWriter ps)
write
in class SimObject
public SimObject copy()
copy
in class SimObject
public Symbol createSymbol()
public java.lang.String getToolTip(java.awt.Point position, long millis)
getToolTip
in interface ContextToolTip
getToolTip
in class SimObject
public java.lang.String toString()
toString
in class SimObject
public static void usage()
public static void main(java.lang.String[] argv)
public static Design getTestDesign(int n_inverters)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |