# Class: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo

Memory access information object.

## Constructor: MemoryAccessInfo

Description: Create a mutable \(customizable\) MAI object initially set to access everything \(stack R/W, globals R/W\). 

 Customize accesses with [#setGlobalsAccessRanges(IdRanges, IdRanges)](#setGlobalsAccessRanges(IdRanges, IdRanges)), [#setStackAccessRanges(IdRanges, IdRanges)](#setStackAccessRanges(IdRanges, IdRanges)), [#setStackSpoiledRanges(IdRanges)](#setStackSpoiledRanges(IdRanges)).

## Constructor: MemoryAccessInfo
- parameter: `accessEverything`, type: `boolean`

Description: Create a mutable \(customizable\) MAI object. 

 Customize accesses with [#setGlobalsAccessRanges(IdRanges, IdRanges)](#setGlobalsAccessRanges(IdRanges, IdRanges)), [#setStackAccessRanges(IdRanges, IdRanges)](#setStackAccessRanges(IdRanges, IdRanges)), [#setStackSpoiledRanges(IdRanges)](#setStackSpoiledRanges(IdRanges)).
parameter: accessEverything: false to initialize to access nothing \(in stack, in mem\); trues to            initialize to access everything \(safer\)

## Constructor: MemoryAccessInfo
- parameter: `readStack`, type: `boolean`
- parameter: `writeStack`, type: `boolean`
- parameter: `readGlobals`, type: `boolean`
- parameter: `writeGlobals`, type: `boolean`

Description: Create an immutable MAI object with no\-granularity settings: all/no stack read, all/no stack written, all/no globals read, all/no globals written. In order to specify granular access settings \(list of variable IDs\), use [#MemoryAccessInfo()](#MemoryAccessInfo()).
parameter: readStack: 
parameter: writeStack: 
parameter: readGlobals: 
parameter: writeGlobals: 

## Static Field: ACCESSES_ALL
Type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo`

## Static Field: ACCESSES_GLOBALS
Type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo`

## Static Field: ACCESSES_NONE
Type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo`

## Static Field: ACCESSES_STACK
Type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo`

## Method: clone
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.MemoryAccessInfo`


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


## Method: filterGlobalsReads
- parameter: `candidates`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: filterGlobalsWrites
- parameter: `candidates`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: filterStackReads
- parameter: `candidates`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: filterStackSpoiled
- parameter: `candidates`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: filterStackWrites
- parameter: `candidates`, type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`
- return type: `java.util.Collection<com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEVar>`


## Method: getGlobalsReads
- return type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: getGlobalsWrites
- return type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: getStackReads
- return type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: getStackSpoiledRanges
- return type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: Retrieve the records of bad writes to stack slots.
return: optional ranges

## Method: getStackWrites
- return type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

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


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


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


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


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


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


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


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


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


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


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


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


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


## Method: setAccessRanges
- parameter: `stackReads`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`
- parameter: `stackWrites`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`
- parameter: `globalsReads`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`
- parameter: `globalsWrites`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: setGlobalsAccessRanges
- parameter: `read`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`
- parameter: `write`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: setStackAccessRanges
- parameter: `read`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`
- parameter: `write`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: The object must be [mutable](#isMutable()), else this method will throw.
throws: if the object is not mutable

## Method: setStackSpoiledRanges
- parameter: `spoiled`, type: `com.pnfsoftware.jeb.core.units.code.IdRanges`

Description: Set the records of bad writes to stack slots.
parameter: spoiled: optional ranges

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


