Memory layout of a data structure: Difference between revisions

m
No edit summary
m (→‎{{header|Wren}}: Minor tidy)
 
(One intermediate revision by one other user not shown)
Line 503:
example ndx 'RI CTS'
1 0</syntaxhighlight>
 
=={{header|Java}}==
<syntaxhighlight lang="java">
public final class MemoryLayoutOfDataStructure {
 
public static void main(String[] aArgs) {
RS232Pins9 plug = new RS232Pins9();
System.out.println(plug.getPin("receivedData"));
plug.setPin(2, Status.ON);
System.out.println(plug.getPin("receivedData"));
plug.setPin("signalGround", Status.ON);
plug.displayPinStatus();
}
}
 
enum Status { OFF, ON }
final class RS232Pins9 {
public Status getPin(int aPinNumber) {
for ( Pin pin : Pin.values() ) {
if ( pin.pinNumber == aPinNumber ) {
return pin.status;
}
}
throw new IllegalArgumentException("Unknown pin number: " + aPinNumber);
}
public Status getPin(String aName) {
for ( Pin pin : Pin.values() ) {
if ( pin.name() == aName ) {
return pin.status;
}
}
throw new IllegalArgumentException("Unknown pin name: " + aName);
}
public void setPin(int aPinNumber, Status aStatus) {
for ( Pin pin : Pin.values() ) {
if ( pin.pinNumber == aPinNumber ) {
pin.status = aStatus;
}
}
}
public void setPin(String aName, Status aStatus) {
for ( Pin pin : Pin.values() ) {
if ( pin.name() == aName ) {
pin.status = aStatus;
}
}
}
public void displayPinStatus() {
for ( Pin pin : Pin.values() ) {
System.out.println(String.format("%-29s%s", pin.name() + " has status ", pin.status));
}
}
private enum Pin {
carrierDetect(1, Status.OFF), receivedData(2, Status.OFF), transmittedData(3, Status.OFF),
dataTerminalReady(4, Status.OFF), signalGround(5, Status.OFF), dataSetReady(6, Status.OFF),
requestToSend(7, Status.OFF), clearToSend(8, Status.OFF), ringIndicator(9, Status.OFF);
private Pin(int aPinNumber, Status aStatus) {
pinNumber = aPinNumber;
status = aStatus;
}
private int pinNumber;
private Status status;
}
 
}
</syntaxhighlight>
{{ out }}
<pre>
OFF
ON
carrierDetect has status OFF
receivedData has status ON
transmittedData has status OFF
dataTerminalReady has status OFF
signalGround has status ON
dataSetReady has status OFF
requestToSend has status OFF
clearToSend has status OFF
ringIndicator has status OFF
</pre>
 
=={{header|Julia}}==
Line 1,339 ⟶ 1,431:
 
As far as this task is concerned, below is a possible implementation for a 9-pin RS-232 plug which allows access by pin name or number and provides a comprehensive print out of the current pin state.
<syntaxhighlight lang="ecmascriptwren">import "./seq" for Lst
import "./fmt" for Fmt
 
var ON = true
9,479

edits