# Interface: com.pnfsoftware.jeb.core.units.code.asm.analyzer.ILabelManager

Definition of a code label manager. Labels are strings associated to a memory address.

## Method: getAlternateLabels
- parameter: `address`, type: `long`
- return type: `java.util.Collection<java.lang.String>`

Description: Get the alternate labels set at the provided address. The primary label is not provided.
parameter: address: address to query
return: a collection of labels, potentially null \(never empty\)

## Method: getLabel
- parameter: `address`, type: `long`
- parameter: `addressDelta`, type: `long`
- parameter: `policy`, type: `com.pnfsoftware.jeb.core.units.code.asm.analyzer.AutoLabelPolicy`
- return type: `java.lang.String`

Description: Retrieve the label at a given memory address.
parameter: address: base address
parameter: addressDelta: address delta
parameter: policy: determine whether a label should be \-created and\- returned if none was set
return: a label or null

## Method: getLabel
- parameter: `item`, type: `com.pnfsoftware.jeb.core.units.code.asm.items.INativeMemoryItem`
- parameter: `addressDelta`, type: `long`
- parameter: `policy`, type: `com.pnfsoftware.jeb.core.units.code.asm.analyzer.AutoLabelPolicy`
- return type: `java.lang.String`

Description: Retrieve the label at the address of the provided memory item.
parameter: item: memory item
parameter: addressDelta: address delta
parameter: policy: determine whether a label should be \-created and\- returned if none was set
return: a label or null

## Method: getPrimaryLabels
- return type: `java.util.Map<java.lang.Long,java.lang.String>`

Description: Retrieve a copy of the primary labels map.
return: primary labels by address

## Method: isLegalLabel
- parameter: `label`, type: `java.lang.String`
- return type: `boolean`

Description: Verify if the provided string is a legal label. Same as [isLegalLabel\(label, null, null\)](#isLegalLabel(String, Long, StringBuilder)).
parameter: label: non\-null label to be tested
return: true if the label is legal

## Method: isLegalLabel
- parameter: `label`, type: `java.lang.String`
- parameter: `address`, type: `java.lang.Long`
- parameter: `legalized`, type: `java.lang.StringBuilder`
- return type: `boolean`

Description: Verify if the provided string is a legal label when used at the provided address.
parameter: label: non\-null label to be tested
parameter: address: optional address, null if none
parameter: legalized: optional output buffer that will contain a legalized version of the input            label, if the input label was illegal
return: true if the label is legal

## Method: removeLabel
- parameter: `address`, type: `long`
- return type: `boolean`

Description: Remove all the labels associated to the given address.
parameter: address: address whose labels are removed
return: always true

## Method: resolveLabel
- parameter: `label`, type: `java.lang.String`
- return type: `java.lang.Long`

Description: Determine the memory address associated with the provided label.
parameter: label: label to resolve
return: the address, or null on error

## Method: setLabel
- parameter: `address`, type: `long`
- parameter: `label`, type: `java.lang.String`
- parameter: `allowAdjusting`, type: `boolean`
- parameter: `allowAlternates`, type: `boolean`
- parameter: `mustBePrimary`, type: `boolean`
- return type: `boolean`

Description: Attach a label at a given address.
parameter: address: memory address
parameter: label: label string
parameter: allowAdjusting: if true, the label will be adjusted if a conflict arises \(eg, duplicate            label, illegal label string\)
parameter: allowAlternates: if true, an alternate label may be set
parameter: mustBePrimary: if true, the label must be primary
return: success indicator

