Back to index

python3.2  3.2.2
Functions
promotion.c File Reference
#include "ffitest.h"

Go to the source code of this file.

Functions

static int promotion (signed char sc, signed short ss, unsigned char uc, unsigned short us)
int main (void)

Function Documentation

int main ( void  )

Definition at line 17 of file promotion.c.

{
  ffi_cif cif;
  ffi_type *args[MAX_ARGS];
  void *values[MAX_ARGS];
  ffi_arg rint;
  signed char sc;
  unsigned char uc;
  signed short ss;
  unsigned short us;
  unsigned long ul;

  args[0] = &ffi_type_schar;
  args[1] = &ffi_type_sshort;
  args[2] = &ffi_type_uchar;
  args[3] = &ffi_type_ushort;
  values[0] = ≻
  values[1] = &ss;
  values[2] = &uc;
  values[3] = &us;

  /* Initialize the cif */
  CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
                   &ffi_type_sint, args) == FFI_OK);

  us = 0;
  ul = 0;

  for (sc = (signed char) -127;
       sc <= (signed char) 120; sc += 1)
    for (ss = -30000; ss <= 30000; ss += 10000)
      for (uc = (unsigned char) 0;
          uc <= (unsigned char) 200; uc += 20)
       for (us = 0; us <= 60000; us += 10000)
         {
           ul++;
           ffi_call(&cif, FFI_FN(promotion), &rint, values);
           CHECK((int)rint == (signed char) sc + (signed short) ss +
                (unsigned char) uc + (unsigned short) us);
         }
  printf("%lu promotion tests run\n", ul);
  exit(0);
}

Here is the call graph for this function:

static int promotion ( signed char  sc,
signed short  ss,
unsigned char  uc,
unsigned short  us 
) [static]

Definition at line 9 of file promotion.c.

{
  int r = (int) sc + (int) ss + (int) uc + (int) us;

  return r;
}

Here is the caller graph for this function: