public abstract class Pin_FBcl
extends java.lang.Object
implements org.vishia.util.ToStringBuilder
Modifier and Type | Class and Description |
---|---|
static class |
Pin_FBcl.XXXXXEKind |
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,PinConnect_FBcl> |
connectDst |
protected java.util.Map<java.lang.String,PinConnect_FBcl> |
connectSrc
Opposite pin(s) for connection.
|
FBlock_FBcl |
fb
The block which this connection is member of.
|
private long |
mEvMdlChain
Association of the pin on a FBlock instance or the module's evinMdl for one or more event chains from the module's evin.
|
private long |
mEvoutMdlChain
Association of the pin on a FBlock instance or the module's evoutMdl for one or more event chains
from the module's evout It is a
Evin_FBcl ). |
java.lang.String |
name
The name is the same as
pint : PinType_FBcl.nameType
or it is the name of a multiple pin instance, then the name in PinType should end of "0999" or "1999" |
PinType_FBcl |
pint |
private java.lang.String |
spec
This is a free usable 'specification' or 'special' String.
|
static java.lang.String |
version
Version, history and license.
|
private java.util.List<Evchain_FBcl.Wr> |
XXXevChainShow
Note whether this pin is a member of a event chain.
|
private long |
xxxmEvChains
Up to 64 evChain can tangent this pin. 1 bit per chain.
|
private long |
xxxmEvChainsDep
Up to 64 evChain which's data and outputs are depending from this pin.
|
XY_FBcl |
xy |
Constructor and Description |
---|
Pin_FBcl(PinType_FBcl pint,
FBlock_FBcl fb,
XY_FBcl xy)
If not null then it contains the generation rule to execute the data access operation.
|
Pin_FBcl(PinType_FBcl pint,
java.lang.String name,
FBlock_FBcl fb,
XY_FBcl xy) |
Modifier and Type | Method and Description |
---|---|
void |
addEvchain(Evchain_FBcl.Wr evchain)
Returns the connection info as String without the information about
fb info. |
void |
addEvchainDepending(int ixEvChainInMdl) |
java.lang.Iterable<PinConnect_FBcl> |
connDst() |
boolean |
connectFrom(Pin_FBcl fromPin)
Sets the connection between this and any destination, it is an in pin of any other
FBlock_FBcl
If the same toPin is already connected, nothing is done. |
boolean |
connectFrom(Pin_FBcl fromPin,
java.lang.String sElemSrc,
java.lang.String sElemDst,
java.lang.String sVariant) |
private boolean |
connectFrom(Pin_FBcl fromPinArg,
java.lang.String sElemSrc,
java.lang.String sElemDst,
java.lang.String sVariant,
int recursion)
The recursive callable implementation of
connectFrom(Pin_FBcl) |
java.lang.Iterable<PinConnect_FBcl> |
connSrc() |
boolean |
containsEvchain(Evchain_FBcl evchain) |
boolean |
containsOtherEvchain(Evchain_FBcl evchain) |
DinType_FBcl |
dinType()
Gets the din from the Type of the given FBlock.
|
DoutType_FBcl |
doutType()
Gets the dout from the Type of the given FBlock.
|
java.lang.String |
evChainHex() |
EvinType_FBcl |
evinType()
Gets the evin from the Type of the given FBlock.
|
EvoutType_FBcl |
evoutType()
Gets the evout from the Type of the given FBlock.
|
java.lang.String |
fbtypeName()
Returns the name of the type as it can be used for code generation.
|
Pin_FBcl |
getFirstConnDst()
If the connection has at least one partner, returns the first or only one.
|
Pin_FBcl |
getFirstConnSrc()
If the connection has at least one partner, returns the first or only one.
|
long |
getMaskEvinMdlChainDriven() |
long |
getMaskEvoutMdlBackChainDriven() |
Pin_FBcl |
getOneConnSrc()
If the ev input has exactly one source, returns it.
|
PinConnect_FBcl |
getOneConnSrc(long[] condBits) |
boolean |
isEventBackChainDriven()
Checks whether this pin is included in any event chain.
|
boolean |
isEventBackChainDriven(Evin_FBcl evoutMdl)
Checks whether this pin is driven by the propagated event chain from the module's evin.
|
boolean |
isEventChainDriven()
Checks whether this pin is included in any event chain.
|
boolean |
isEventChainDriven(Evout_FBcl evinMdl)
Checks whether this pin is driven by the propagated event chain from the module's evin.
|
boolean |
isEventChainDriven(long maskEvout) |
boolean |
isEventChainDriven(PinType_FBcl evinMdl) |
boolean |
isKind(java.lang.String kindChars)
Simple operation to quest whether the pin has the
PinType_FBcl.kind adequate one of the given characters
see PinKind_FBcl . |
boolean |
isNotKind(java.lang.String kindChars)
Simple operation to quest whether the pin has not the
PinType_FBcl.kind adequate one of the given characters
see PinKind_FBcl . |
boolean |
isUpdatePin()
True if this pin is one of the update pins, read from
pint and PinType_FBcl.kind
PinKind_FBcl.evUpdin , PinKind_FBcl.evUpdout , PinKind_FBcl.EvUpdinMdl , PinKind_FBcl.EvUpdoutMdl
but also PinKind_FBcl.ZoutMdl and PinKind_FBcl.zout for data pins |
java.lang.Iterable<PinConnect_FBcl> |
iterConnDst() |
java.lang.Iterable<PinConnect_FBcl> |
iterConnSrc() |
java.lang.Iterable<Evchain_FBcl> |
iterEvchainDep(Module_FBcl mdl) |
java.lang.Iterable<Evchain_FBcl.Wr> |
iterEvchainShow() |
java.lang.String |
nameFBpin()
Gets a String with the FBLock name and the pin name.
|
java.lang.String |
nameFBpin(char sep)
Gets a String with the FBLock name and the pin name maybe as identifier.
|
int |
nrofConnDst() |
int |
nrofConnSrc() |
PinType_FBcl |
pinType()
Gets the evin from the Type of the given FBlock.
|
boolean |
removeConnectDst(PinConnect_FBcl conn) |
boolean |
removeConnectSrc(Pin_FBcl pinSrc) |
void |
removeConnSrcAll()
Removes all connections from this pin.
|
boolean |
removePinSimpleInConnDst(Pin_FBcl pin)
Remove only the pin in the connection.
|
long |
setEventBackChainDriven(Evin_FBcl evoutMdl)
Set the fact that this pin is driven by the propagated event chain from the module's evin.
|
long |
setEventChainDriven(Evout_FBcl evinMdl)
Set the fact that this pin is driven by the propagated event chain from the module's evin.
|
java.lang.String |
spec()
See
spec |
void |
spec(java.lang.String spec)
See
spec |
protected void |
throwError(java.lang.String txt,
DinoutType_FBcl src) |
java.lang.String |
toString() |
java.lang.StringBuilder |
toString(java.lang.StringBuilder app,
java.lang.String... cond) |
boolean |
XXXremoveConnectSrc(java.util.Iterator<Pin_FBcl> iterConnSrc,
Pin_FBcl pinSrc) |
boolean |
XXXremoveConnSrc(Pin_FBcl pin)
Remove the connection and its opposite
|
public static final java.lang.String version
Pin_FBcl
can have more connections to the same other pin
via different PinConnect_FBcl
(for example same src pin to different elements of destination array pin,
the key in connectSrc
and connectDst
should not the other nameFBpin()
,
it should be the combination of the other pin and its connection conditions,
mean what's contained also in PinConnect_FBcl
.
PinConnect_FBcl.getKeySrc()
and PinConnect_FBcl.getKeySrc()
were created and used here as key inside connectFrom(Pin_FBcl, String, String, String, int)
.
PinConnect_FBcl
as element in connectSrc
and connectDst
public final java.lang.String name
pint
: PinType_FBcl.nameType
or it is the name of a multiple pin instance, then the name in PinType should end of "0999" or "1999"private java.lang.String spec
FBoper_FBcl
it describes which source event from the aggregated FBlock_FBcl
should be used.private java.util.List<Evchain_FBcl.Wr> XXXevChainShow
private long xxxmEvChains
private long xxxmEvChainsDep
private long mEvMdlChain
org.vishia.fbcl.readSource.Dataflow2Eventchain_FBrd
propagation..
If the proper bit is set, the Pin is driven in the event chain already.
currently used 2024-07private long mEvoutMdlChain
Evin_FBcl
).
This is used during DataFlow2EvChainBackward_FBrd
propagation..
If the proper bit is set, the Pin is captured in the back propagation already.
currently used 2024-11public final XY_FBcl xy
public final FBlock_FBcl fb
public PinType_FBcl pint
protected final java.util.Map<java.lang.String,PinConnect_FBcl> connectSrc
FBlock_FBcl.fbPinDst
may be referred.protected final java.util.Map<java.lang.String,PinConnect_FBcl> connectDst
public Pin_FBcl(PinType_FBcl pint, FBlock_FBcl fb, XY_FBcl xy)
public Pin_FBcl(PinType_FBcl pint, java.lang.String name, FBlock_FBcl fb, XY_FBcl xy)
public java.lang.String spec()
spec
public void spec(java.lang.String spec)
spec
public boolean connectFrom(Pin_FBcl fromPin)
FBlock_FBcl
If the same toPin is already connected, nothing is done. Twice trying connection is allowed.
It is asserted if the same toPin is not connected , this is not connected in toPin too.
It is called in preparation process.
Pin_FBcl
( PinKind_FBcl.bOutput
== false)
instead of the correct output pin.
The problem is solved here: Either the real source is found in the immediately connected Din_FBcl by the existing source connection,
or the source connection is caught up if the connection from the real source is processed. Then all indirect connections are resolved.
fromPin
- the partner, there the connection is added too.public boolean connectFrom(Pin_FBcl fromPin, java.lang.String sElemSrc, java.lang.String sElemDst, java.lang.String sVariant)
private boolean connectFrom(Pin_FBcl fromPinArg, java.lang.String sElemSrc, java.lang.String sElemDst, java.lang.String sVariant, int recursion)
connectFrom(Pin_FBcl)
fromPin
- recursion
- Used if a given input->input2 connection will be resolved to the fromPin ->input2 because fromPin is the real output.public java.lang.Iterable<PinConnect_FBcl> connSrc()
public java.lang.Iterable<PinConnect_FBcl> connDst()
public int nrofConnSrc()
public int nrofConnDst()
public PinConnect_FBcl getOneConnSrc(long[] condBits)
public Pin_FBcl getOneConnSrc()
#getMultipleSrcEv()
to check all event sources if this operation returns null.public Pin_FBcl getFirstConnSrc()
public Pin_FBcl getFirstConnDst()
public boolean removeConnectSrc(Pin_FBcl pinSrc)
public boolean XXXremoveConnectSrc(java.util.Iterator<Pin_FBcl> iterConnSrc, Pin_FBcl pinSrc)
public boolean removeConnectDst(PinConnect_FBcl conn)
public boolean removePinSimpleInConnDst(Pin_FBcl pin)
pin
- The pin is searched in connectDst
public boolean XXXremoveConnSrc(Pin_FBcl pin)
pin
- public void removeConnSrcAll()
public java.lang.Iterable<PinConnect_FBcl> iterConnSrc()
public java.lang.Iterable<PinConnect_FBcl> iterConnDst()
public boolean isUpdatePin()
pint
and PinType_FBcl.kind
PinKind_FBcl.evUpdin
, PinKind_FBcl.evUpdout
, PinKind_FBcl.EvUpdinMdl
, PinKind_FBcl.EvUpdoutMdl
but also PinKind_FBcl.ZoutMdl
and PinKind_FBcl.zout
for data pinspublic PinType_FBcl pinType()
public EvinType_FBcl evinType()
public EvoutType_FBcl evoutType()
public DinType_FBcl dinType()
public DoutType_FBcl doutType()
public java.lang.String nameFBpin()
public java.lang.String nameFBpin(char sep)
sep
- separator character between FBlock name and pin name.public boolean isKind(java.lang.String kindChars)
PinType_FBcl.kind
adequate one of the given characters
see PinKind_FBcl
.kindChars
- due to PinKind_FBcl.cKind
public boolean isNotKind(java.lang.String kindChars)
PinType_FBcl.kind
adequate one of the given characters
see PinKind_FBcl
. It means it is just not one of the quest kinds.kindChars
- due to PinKind_FBcl.cKind
public void addEvchain(Evchain_FBcl.Wr evchain)
fb
info.
It is especially for out connections in the netlist. The FBlock info is written already in the head information.public void addEvchainDepending(int ixEvChainInMdl)
public boolean containsEvchain(Evchain_FBcl evchain)
public boolean containsOtherEvchain(Evchain_FBcl evchain)
public java.lang.Iterable<Evchain_FBcl> iterEvchainDep(Module_FBcl mdl)
public java.lang.Iterable<Evchain_FBcl.Wr> iterEvchainShow()
public java.lang.String evChainHex()
public long setEventChainDriven(Evout_FBcl evinMdl)
org.vishia.fbcl.readSource.Dataflow2Eventchain_FBrd
propagation.evinMdl
- A modules evin as start of the event chain.mEvMdlChain
only for log/debugpublic boolean isEventChainDriven(Evout_FBcl evinMdl)
org.vishia.fbcl.readSource.Dataflow2Eventchain_FBrd
propagation.evinMdl
- A modules evin as start of the event chain.public boolean isEventChainDriven()
public boolean isEventChainDriven(PinType_FBcl evinMdl)
public boolean isEventChainDriven(long maskEvout)
public long getMaskEvinMdlChainDriven()
public long setEventBackChainDriven(Evin_FBcl evoutMdl)
org.vishia.fbcl.readSource.Dataflow2Eventchain_FBrd
propagation.evoutMdl
- A modules evout as end of the event chain.mEvMdlChain
only for log/debugpublic boolean isEventBackChainDriven(Evin_FBcl evoutMdl)
org.vishia.fbcl.readSource.Dataflow2Eventchain_FBrd
propagation.evinMdl
- A modules evin as start of the event chain.public boolean isEventBackChainDriven()
public long getMaskEvoutMdlBackChainDriven()
public java.lang.String fbtypeName()
public java.lang.StringBuilder toString(java.lang.StringBuilder app, java.lang.String... cond)
toString
in interface org.vishia.util.ToStringBuilder
public java.lang.String toString()
toString
in class java.lang.Object
protected void throwError(java.lang.String txt, DinoutType_FBcl src)