# Class: com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry

Representation of an immutable storage entry \(input/output\) for sub\-routine calls. Used to define [ICallingConvention](ICallingConvention) objects. 

 Types of storage entries: 
 
- stack entries \(any slot count\)
 
- platform register \(single slot\)
 
- pair of platform registers \(double slot\)
 
- double\-pair of platform registers \(quad slot\)
 
- a mixed entry, made up of registers and stack slots \(any slot count\)

## Method: collectRegisters
- parameter: `sink`, type: `java.util.Set<java.lang.Long>`


## Method: equals
- parameter: `obj`, type: `java.lang.Object`
- return type: `boolean`


## Method: formatLong
- parameter: `rbl`, type: `com.pnfsoftware.jeb.core.units.code.asm.processor.IRegisterBank`
- return type: `java.lang.String`


## Method: formatParseable
- parameter: `rbl`, type: `com.pnfsoftware.jeb.core.units.code.asm.processor.IRegisterBank`
- return type: `java.lang.String`


## Method: getMixedItem
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: 
parameter: index: 
return: 

## Method: getMixedItems
- return type: `java.util.List<com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry>`

Description: 
return: 

## Method: getRegisters
- return type: `java.util.Collection<java.lang.Long>`


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


## Method: getType
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry.Type`


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

Description: Get the slot index or native register id, depending on the type of this object.
return: 

## Method: getValue
- parameter: `endian`, type: `com.pnfsoftware.jeb.util.io.Endianness`
- return type: `long`

Description: Get the slot index or native register id, depending on the type of this object. To be used for [Type#REGISTER_PAIR](Type#REGISTER_PAIR) over [#getValue()](#getValue()) which may return the wrong slot index.
return: 

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

Description: For register pairs, retrieve the native register id of the second register of the pair.
return: 

## Method: getValue2
- parameter: `endian`, type: `com.pnfsoftware.jeb.util.io.Endianness`
- return type: `long`

Description: For register pairs, retrieve the native register id of the second register of the pair.
parameter: endian: 
return: 

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

Description: For register quads, retrieve the native register id of the third register.
return: 

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

Description: For register quads, retrieve the native register id of the fourth register.
return: 

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


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


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


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


## Method: nextSlotIndex
- parameter: `currentSlotIndex`, type: `int`
- parameter: `requestedSlotCount`, type: `int`
- return type: `int`

Description: Calculate the next slot index given the slot index of the current storage entry.
parameter: currentSlotIndex: slot index of this storage entry
parameter: requestedSlotCount: the amount of slots used to accommodate this entry, unless it was a            register\-based entry
return: the next available slot for storage

## Method: nextStackEntry
- parameter: `slotcount`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`


## Method: nextStackEntry
- parameter: `slotcount`, type: `int`
- parameter: `slotalign`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`


## Method: toString
- return type: `java.lang.String`


## Method: withCount
- parameter: `count`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Duplicate this STACK entry, and set a custom slot count.
parameter: count: 
return: 

## Static Method: createMixed
- parameter: `items`, type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry[]`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a mixed storage entry.
parameter: items: a 2\+ items list of one or more [Type#REGISTER](Type#REGISTER) entries, followed by an            optional [Type#STACK](Type#STACK) entry.
return: 

## Static Method: createMixed
- parameter: `items`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry>`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a mixed storage entry.
parameter: items: a 2\+ items list of one or more [Type#REGISTER](Type#REGISTER) entries, followed by an            optional [Type#STACK](Type#STACK) entry.
return: 

## Static Method: createRegister
- parameter: `regId`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a single\-register storage entry.
parameter: regId: register id \(refer to register banks\)
return: 

## Static Method: createRegisterPair
- parameter: `regId1`, type: `long`
- parameter: `regId2`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a double\-register storage entry.
parameter: regId1: low register id \(refer to register banks\)
parameter: regId2: high register id \(refer to register banks\)
return: 

## Static Method: createRegisterPairEndianDep
- parameter: `regId1`, type: `long`
- parameter: `regId2`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a double\-register storage entry. Register order \(which one stores the LSB, which one stores the MSB\) depends on external parameters.
parameter: regId1: first register id \(refer to register banks\)
parameter: regId2: second register id \(refer to register banks\)
return: 

## Static Method: createRegisterQuad
- parameter: `regId1`, type: `long`
- parameter: `regId2`, type: `long`
- parameter: `regId3`, type: `long`
- parameter: `regId4`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: 
parameter: regId1: 
parameter: regId2: 
parameter: regId3: 
parameter: regId4: 
return: 

## Static Method: createRegisterQuadEndianDep
- parameter: `regId1`, type: `long`
- parameter: `regId2`, type: `long`
- parameter: `regId3`, type: `long`
- parameter: `regId4`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: 
parameter: regId1: 
parameter: regId2: 
parameter: regId3: 
parameter: regId4: 
return: 

## Static Method: createStackEntry
- parameter: `slotIndex`, type: `long`
- parameter: `slotCount`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a stack storage entry. Stack entries are relative to the stack pointer at the called routine entry\-point.
parameter: slotIndex: 
parameter: slotCount: 
return: 

## Static Method: createStackSlot
- parameter: `slotIndex`, type: `long`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.StorageEntry`

Description: Create a single\-slot stack storage entry. Stack entries are relative to the stack pointer at the called routine entry\-point.
parameter: slotIndex: 
return: 

