1 package com.inzyme.jmds; 2 3 import java.util.NoSuchElementException ; 4 5 10 public class DSCrossBar { 11 private DSDataSource myDataSource; 12 private DSInputCrossBarPin[] myInputPins; 13 private DSOutputCrossBarPin[] myOutputPins; 14 15 20 public DSCrossBar(DSDataSource _dataSource) { 21 myDataSource = _dataSource; 22 } 23 24 29 public DSInputCrossBarPin[] getInputPins() { 30 if (myInputPins == null) { 31 fillInCrossBarPins(); 32 } 33 return myInputPins; 34 } 35 36 41 public DSOutputCrossBarPin[] getOutputPins() { 42 if (myOutputPins == null) { 43 fillInCrossBarPins(); 44 } 45 return myOutputPins; 46 } 47 48 55 public void route(DSOutputCrossBarPin _outputPin, DSInputCrossBarPin _inputPin) { 56 route0(_outputPin.getPinIndex(), _inputPin.getPinIndex()); 57 58 myInputPins = null; 60 myOutputPins = null; 61 } 62 63 69 public DSInputCrossBarPin getInputPinWithPhysicalType(int _physicalType) { 70 DSInputCrossBarPin matchingInputPin = null; 71 DSInputCrossBarPin[] inputPins = getInputPins(); 72 for (int i = 0; matchingInputPin == null && i < inputPins.length; i ++) { 73 if (inputPins[i].getPhysicalType() == _physicalType) { 74 matchingInputPin = inputPins[i]; 75 } 76 } 77 78 if (matchingInputPin == null) { 79 throw new NoSuchElementException ("There is no input pin with the type " + DSPhysicalConnectorType.getPhysicalTypeName(_physicalType)); 80 } 81 82 return matchingInputPin; 83 } 84 85 91 public DSOutputCrossBarPin getOutputPinWithPhysicalType(int _physicalType) { 92 DSOutputCrossBarPin matchingOutputPin = null; 93 DSOutputCrossBarPin[] outputPins = getOutputPins(); 94 for (int i = 0; matchingOutputPin == null && i < outputPins.length; i ++) { 95 if (outputPins[i].getPhysicalType() == _physicalType) { 96 matchingOutputPin = outputPins[i]; 97 } 98 } 99 100 if (matchingOutputPin == null) { 101 throw new NoSuchElementException ("There is no output pin with the type " + DSPhysicalConnectorType.getPhysicalTypeName(_physicalType)); 102 } 103 104 return matchingOutputPin; 105 } 106 107 113 public DSInputCrossBarPin getInputPinAt(int _index) { 114 DSInputCrossBarPin pin; 115 if (_index == -1) { 116 pin = null; 117 } 118 else { 119 pin = getInputPins()[_index]; 120 } 121 return pin; 122 } 123 124 130 public DSOutputCrossBarPin getOutputPinAt(int _index) { 131 DSOutputCrossBarPin pin; 132 if (_index == -1) { 133 pin = null; 134 } 135 else { 136 pin = getOutputPins()[_index]; 137 } 138 return pin; 139 } 140 141 private native void route0(int _outputPinIndex, int _inputPinIndex); 142 143 private native void fillInCrossBarPins(); 144 } 145 | Popular Tags |