# Interface: com.pnfsoftware.jeb.core.units.code.asm.mangling.IUnmangledRoutine

Interface to access an unmangled routine declaration.

## Method: getAttributes
- return type: `java.util.List<java.lang.String>`

Description: Refer to https://gcc.gnu.org/onlinedocs/gcc/Common\-Function\-Attributes.html
return: function attributes

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

Description: Get the routine calling convention.
return: calling convention, null if not set

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

Description: Get the routine name.
return: routine name

## Method: getNameWithParameters
- parameter: `emptyParameters`, type: `boolean`
- return type: `java.lang.String`

Description: Get the routine name with optional parameter text.
parameter: emptyParameters: true to force \(\) parameters even if empty
return: routine name with its parameters if any

## Method: getParameterTypes
- return type: `java.util.List<java.lang.String>`

Description: Get the routine parameter types.
return: parameter types, null if not set

## Method: getPrototype
- parameter: `noCppFeatures`, type: `boolean`
- return type: `java.lang.String`

Description: Provide the routine prototype with the following JEB specific syntax: 

 `<calling_convention> return_type(parameter1_type _)`
 `<calling_convention> return_type(parameter1_type,parameter2_type...)`
 `...`
 

 This method is equivalent [getPrototype\(noCppFeatures, true\)](#getPrototype(boolean, boolean)).
parameter: noCppFeatures: if true a JEB prototype will be provided **only if the original            unmangled routine prototype is strict C**, i.e. the method will return null if            the unmangled string contains C\+\+ specific features
return: routine prototype, null if not applicable \(e.g. because of unmangler failure, or         because the mangled declaration does not contain the full prototype\)

## Method: getPrototype
- parameter: `noCppFeatures`, type: `boolean`
- parameter: `safeForParser`, type: `boolean`
- return type: `java.lang.String`

Description: Provide the routine prototype using the following JEB specific syntax: 

 `<calling_convention> return_type(parameter1_type[ _])`
 `<calling_convention> return_type(parameter1_type,parameter2_type...)`
 `...`
parameter: noCppFeatures: if true a JEB prototype will be provided **only if the original            unmangled routine prototype is strict C**, i.e. the method will return null if            the unmangled string contains C\+\+ specific features
parameter: safeForParser: if true, single\-parameter prototypes will be generated slightly            differently: the parameter is deanonymized and given the name '\_'
return: routine prototype, null if not applicable \(e.g. because of unmangler failure, or         because the mangled declaration does not contain the full prototype\)

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

Description: Get the routine return type.
return: return type, null if not set

## Method: getSignature
- parameter: `noCppFeatures`, type: `boolean`
- return type: `java.lang.String`

Description: Provide the routine prototype using C\-style syntax
parameter: noCppFeatures: if true a JEB prototype will be provided **only if the original            unmangled routine prototype is strict C**, i.e. the method will return null if            the unmangled string contains C\+\+ specific features
return: routine prototype, null if not applicable \(e.g. because of unmangler failure, or         because the mangled declaration does not contain the full prototype\)

## Method: getSignature
- parameter: `noCppFeatures`, type: `boolean`
- parameter: `safeForParser`, type: `boolean`
- return type: `java.lang.String`

Description: Provide the routine prototype using C\-style syntax
parameter: noCppFeatures: if true a JEB prototype will be provided **only if the original            unmangled routine prototype is strict C**, i.e. the method will return null if            the unmangled string contains C\+\+ specific features
parameter: safeForParser: if true, single\-parameter prototypes will be generated slightly            differently: the parameter is deanonymized and given the name '\_'
return: routine prototype, null if not applicable \(e.g. because of unmangler failure, or         because the mangled declaration does not contain the full prototype\)

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

Description: Determine whether the routine is marked const.
return: true if the routine is const

