# Interface: com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType

Wildcard types can be defined \(they wrap native types\) or undefined \(they contain a set of attributes partially defining the actual type, such as effective size, group, signedness, etc.\).

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

Description: The currently determined size of this wildcard type. If defined, it is trivial. If undefined, it is either the maximum bitsize or the effective bitsize \(if non\-zero\).
return: always \>0

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

Description: The currently set effective size for an undefined wildcard type. If 0, it means the effective size is unknown and should be considered equal to the maximum size.
return: possibly 0 if undetermined

## Method: getGroup
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType.Group`

Description: 
return: possibly null if unknown

## Method: getLayoutInfo
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.TypeLayoutInfo`

Description: 
return: 

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

Description: Maximum effective size for an undefined wildcard type.
return: always \>0

## Method: getNativeType
- return type: `com.pnfsoftware.jeb.core.units.code.asm.type.INativeType`

Description: If the wildcard type is defined, provide the wrapped native type.
return: 

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

Description: 
return: possibly 0 if unknown

## Method: getPointedGroup
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType.Group`

Description: 
return: possibly null if unknown

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

Description: 
return: possibly 0 if unknown

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

Description: Determine the number of stack slots currently required to accommodate this wildcard type.
return: 

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

Description: Determine if this wildcard type is fully defined, ie, it wraps a [native type](INativeType).
return: 

## Method: isEquivalent
- parameter: `otherType`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`
- return type: `boolean`

Description: An extended [equality](#equals(Object)) check, that checks unaliased native types \(if both wildcard types are [resolved](#isResolved())\).
parameter: otherType: 
return: 

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

Description: 
return: 

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

Description: Determine whether this wildcard type represents an integer \(it could be defined or partially defined\).
return: 

## Method: isLessSpecializedThan
- parameter: `o`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`
- return type: `boolean`

Description: Determine if this wildcard type appears to be less specialized than the provided parameter wildcard type. 

 Note: "Specialized" within the context of this class and wildcard types has a meaning different than the one used by type systems for hierarchy of type objects. 

 Same as [compareTo\(o\)<0](#compareTo(IWildcardType))
parameter: o: another type
return: 

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

Description: Determine if this wildcard type is partially defined: it does not wrap a native type, but does contain preliminary type information, such as the effective size, group, signedness, etc.
return: 

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

Description: 
return: 

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

Description: Determine if this wildcard type is fully defined, ie, it wraps a [native type](INativeType). 

 Same as [#isDefined()](#isDefined()).
return: 

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

Description: Determine whether this wildcard type represents a signed integer \(it could be defined or partially defined\).
return: 

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

Description: Determine if this wildcard type is entirely undefined: it does not wrap a native type and does not contain any preliminary type information.
return: 

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

Description: Determine whether this wildcard type represents an unsigned integer \(it could be defined or partially defined\).
return: 

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

Description: Determine if this wildcard type can be updated. Undefined wildcard types can be updated, whereas most defined wildcard types \(wrapping native types\) cannot be updated, except for some primitives. 

 Note that wildcard types are immutable, the process of updating them will always yield the creation of a new wildcard type.
return: 

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

Description: 
return: true if this wildcard type wraps the native `void` type

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

Description: 
return: 

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

Description: Attempt to resolve the wildcard type, ie, generate a defined wildcard type \(wrapping a primitive\) from this possibly undefined wildcard type. 

 This method does not throw on error \(if the wildcard type cannot be resolved\). To determine whether or not the returned type was really resolved, use [#isResolved()](#isResolved()).
return: a resolved type or the same \(this\) type if the resolution failed

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

Description: Resolve the wildcard type, ie, generate a defined wildcard type \(wrapping a primitive\) from this possibly undefined wildcard type. 

 This method throws an [IllegalStateException](IllegalStateException) on error \(if the wildcard type cannot be resolved\).
return: never null

## Method: toString
- parameter: `compact`, type: `boolean`
- return type: `java.lang.String`

Description: Generate a string representation of this wildcard type.  Examples with slotsize= 32 bits:  

```

 ??       => slot=1, esize=unk, group=unk (normal representation)
 ?        => slot=1, esize=unk, group=unk (same, compact representation)
 ??32     => slot=1, esize=32,  group=unk (normal representation)
 ?32      => slot=1, esize=32,  group=unk (same, compact representation)
 ??/64    => slot=2, esize=unk, group=unk
 ??32/64  => slot=2, esize=32,  group=unk
 ?I       => slot=1, esize=unk, group=int
 ?I32     => slot=1, esize=32,  group=int
 ?U       =>
 ?U64     => slot=2, esize=64,  group=uint (note that 2 full slots are used, but /64 is not appended since it matches the esize)
 ?F       =>
 ?F32     =>
 ?F64     =>
 ?F32/64  =>
 ?F/64    =>
 ?P       => slot=1, psize=unk, group=ptr
 ?P32     => slot=1, psize=32,  group=ptr
 ?P32/64  => slot=2, psize=32,  group=ptr
 
 
```
parameter: compact: true to generate a compact representation: avoid double '?' sequences, do not            append the physical bitsize \('/NN'\) after the type in cases where it's not equal            to a slot size
return: a string representation of the type

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

Description: Generate a compact representation of the type. Same as [toString\(true\)](#toString(boolean)).
return: a compact representation of the type

## Method: updateEffectiveBitsize
- parameter: `newEffectiveBitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: 
parameter: newEffectiveBitsize: 
return: 

## Method: updateGroup
- parameter: `group`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType.Group`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: 
parameter: group: 
return: 

## Method: updateMaxBitsize
- parameter: `newMaxBitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: 
parameter: newMaxBitsize: 
return: 

## Method: updatePointedBitsize
- parameter: `newPointedBitsize`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: 
parameter: newPointedBitsize: 
return: 

## Method: updatePointedGroup
- parameter: `newPointedGroup`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType.Group`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: 
parameter: newPointedGroup: 
return: 

## Method: updateProperties
- parameter: `srctype`, type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`
- return type: `com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IWildcardType`

Description: Soft\-transfer the properties of a source type to this type.
parameter: srctype: 
return: a new type \(or this type if no update was performed\)

