| IDA SDK

Modules | Variables
Derived type: function
Type flags

## Detailed Description

Ellipsis is not taken into account in the number of parameters The return type cannot be BT_ARRAY or BT_FUNC.

## Modules
| Function attribute byte

## Variables
const type_t | BT_FUNC = 0x0C
| function. More...
const type_t | BTMT_DEFCALL = 0x00
| call method - default for model or unknown
const type_t | BTMT_NEARCALL = 0x10
| function returns by retn
const type_t | BTMT_FARCALL = 0x20
| function returns by retf
const type_t | BTMT_INTCALL = 0x30
| function returns by iret in this case cc MUST be 'unknown'

## Variable Documentation

## ◆ BT_FUNC

const type_t BT_FUNC = 0x0C

function.

format:

          optional: CM_CC_SPOILED | num_of_spoiled_regs
                    if num_of_spoiled_reg == BFA_FUNC_MARKER:
                      ::bfa_byte
                      if (bfa_byte & BFA_FUNC_EXT_FORMAT) != 0
                       ::fti_bits (only low bits: FTI_SPOILED,...,FTI_VIRTUAL)
                       num_of_spoiled_reg times: spoiled reg info (see extract_spoiledreg)
                      else
                        bfa_byte is function attribute byte (see Function attribute byte...)
                    else:
                      num_of_spoiled_reg times: spoiled reg info (see extract_spoiledreg)
          cm_t ... calling convention and memory model
          [tah-typeattrs];
          type_t ... return type;
          [serialized argloc_t of returned value (if CM_CC_SPECIAL{PE} && !return void);
          if !CM_CC_VOIDARG:
            dt N (N=number of parameters)
            if ( N == 0 )
            if CM_CC_ELLIPSIS or CM_CC_SPECIALE
                func(...)
              else
                parameters are unknown
            else
              N records:
                type_t ... (i.e. type of each parameter)
                [serialized argloc_t (if CM_CC_SPECIAL{PE})] (i.e. place of each parameter)
                [FAH_BYTE + de( funcarg_t::flags )]