# Interface: com.pnfsoftware.jeb.core.units.code.IBasicBlock

Generic interface for CFG's basic block objects.

## Method: allinsize
- return type: `int`

Description: Get the total number of input edges to this block.
return: input edge count

## Method: alloutsize
- return type: `int`

Description: Get the total number of output edges from this block.
return: output edge count

## Method: canThrow
- return type: `boolean`

Description: Determine whether this block can throw an exception.
return: true if the block can throw

## Method: get
- parameter: `index`, type: `int`
- return type: `InsnType`

Description: Get the instruction at the specified index.
parameter: index: instruction index
return: instruction

## Method: getAddressOfInstruction
- parameter: `index`, type: `int`
- return type: `long`

Description: Get the address of an instruction by index.
parameter: index: instruction index
return: instruction address

## Method: getAllInputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get regular and irregular input blocks.
return: a copy of the list of all input blocks

## Method: getAllInputs
- return type: `java.lang.Iterable<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only iterable of regular and irregular input blocks. 

 NOTE: This method is faster than [#getAllInputBlocks()](#getAllInputBlocks()) since it does not provide a copy of the list.
return: all input blocks view

## Method: getAllOutputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get regular and irregular output blocks.
return: a copy of the list of all output blocks

## Method: getAllOutputs
- return type: `java.lang.Iterable<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only iterable of regular and irregular output blocks. 

 NOTE: This method is faster than [#getAllOutputBlocks()](#getAllOutputBlocks()) since it does not provide a copy of the list.
return: all output blocks view

## Method: getBase
- return type: `long`

Description: Address of first instruction in the block.
return: first instruction address

## Method: getEndAddress
- return type: `long`

Description: Address following the last instruction of the block \(ie, last exclusive address\).
return: end address

## Method: getFirstAddress
- return type: `long`

Description: Address of first instruction in the block.
return: first instruction address

## Method: getIndexOfInstruction
- parameter: `address`, type: `long`
- return type: `int`

Description: Get the index of an instruction by address.
parameter: address: instruction address
return: \-1 if there is no instruction starting at the provided address

## Method: getInputBlock
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>`

Description: Get a regular input block.
parameter: index: block index
return: a block

## Method: getInputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get the regular input blocks.
return: a copy of the list of regular input blocks

## Method: getInputs
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only list of input blocks \(regular\). 

 NOTE: This method is faster than [#getInputBlocks()](#getInputBlocks()) since it does not provide a copy of the list.
return: regular input blocks view

## Method: getInstruction
- parameter: `address`, type: `long`
- return type: `InsnType`

Description: Get the instruction located at the exact address.
parameter: address: instruction address
return: instruction, or null

## Method: getInstructions
- return type: `java.util.List<InsnType>`

Description: Get a copy of the list of instructions that make up this basic block.
return: instruction list

## Method: getIrregularInputBlock
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>`

Description: Get an irregular input block.
parameter: index: block index
return: a block

## Method: getIrregularInputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get irregular input blocks.
return: a copy of the list of irregular input blocks

## Method: getIrregularInputs
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only list of irregular input blocks. 

 NOTE: This method is faster than [#getIrregularInputBlocks()](#getIrregularInputBlocks()) since it does not provide a copy of the list.
return: irregular input blocks view

## Method: getIrregularOutputBlock
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>`

Description: Get an irregular output block.
parameter: index: block index
return: irregular output block

## Method: getIrregularOutputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get irregular output blocks.
return: a copy of the list of irregular output blocks

## Method: getIrregularOutputs
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only list of irregular output blocks. 

 NOTE: This method is faster than [#getIrregularOutputBlocks()](#getIrregularOutputBlocks()) since it does not provide a copy of the list.
return: irregular output blocks view

## Method: getLast
- return type: `InsnType`

Description: Get the last instruction of the block.
return: last instruction

## Method: getLastAddress
- return type: `long`

Description: Address of last instruction in the block.
return: last instruction address

## Method: getOutputBlock
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>`

Description: Get a regular output block.
parameter: index: block index
return: output block

## Method: getOutputBlocks
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Get the regular output blocks.
return: a copy of the list of regular output blocks

## Method: getOutputs
- return type: `java.util.List<? extends com.pnfsoftware.jeb.core.units.code.IBasicBlock<InsnType>>`

Description: Retrieve a read\-only list of output blocks \(regular\). 

 NOTE: This method is faster than [#getOutputBlocks()](#getOutputBlocks()) since it does not provide a copy of the list.
return: regular output blocks view

## Method: getSizeOfInstructions
- return type: `int`

Description: Get the total size of instructions in the block.
return: instruction size

## Method: insize
- return type: `int`

Description: Get the number of regular input edges to this block.
return: regular input edge count

## Method: irrinsize
- return type: `int`

Description: Get the number of irregular input edges to this block.
return: irregular input edge count

## Method: irroutsize
- return type: `int`

Description: Get the number of irregular output edges from this block.
return: irregular output edge count

## Method: isEmpty
- return type: `boolean`

Description: Determine if the block has 0 instruction.
return: true if the block has no instruction

## Method: outsize
- return type: `int`

Description: Get the number of regular output edges from this block.
return: regular output edge count

## Method: size
- return type: `int`

Description: Get the number of instructions in the block.
return: instruction count

