What's the difference between 'v' and '' for NCI function parameters?

Here, for example, is the code for 'fv' and 'f':

  static void
  pcf_f_v(Interp *interpreter, PMC *self)
  {
      typedef float (*func_t)(void);
      func_t pointer;
      struct call_state st;
      float return_data;
      Parrot_init_arg_nci(interpreter, &st, "v");
      pointer =  (func_t)D2FPTR(PMC_struct_val(self));
      return_data =  (float)(*pointer)();
      set_nci_N(interpreter, &st, return_data);
  }

  static void
  pcf_f(Interp *interpreter, PMC *self)
  {       
      float (*pointer)(void);
      float return_data;
      struct call_state st;    
      pointer =  (float (*)(void))D2FPTR(PMC_struct_val(self));
      return_data =  (float)(*pointer)();
      set_nci_N(interpreter, &st, return_data);
  }

The code is a little different but it's not clear (to me) if there's any
practical difference.

I ask because both 'fv' and 'f' are in src/call_list.txt
In fact there are several 'duplicated' signatures:

  Ignored signature 'cv' on line 52 (previously seen on line 49)
  Ignored signature 'dv' on line 58 (previously seen on line 54)
  Ignored signature 'fv' on line 85 (previously seen on line 82)
  Ignored signature 'iv' on line 150 (previously seen on line 87)
  Ignored signature 'lv' on line 162 (previously seen on line 155)
  Ignored signature 'pv' on line 187 (previously seen on line 170)
  Ignored signature 'sv' on line 190 (previously seen on line 189)
  Ignored signature 'tv' on line 202 (previously seen on line 192)
  Ignored signature 'vv' on line 217 (previously seen on line 204)

Those warnings come from a version of tools/build/nativecall.pl I've
modified to 'normalize' the signatures to use 'v' and detect duplicates.
(As a side effect the nci.o file dropped from 354K to 347K.)

Also, what's the protocol for adding signatures to call_list.txt?
I've at least one I want to add ('p ttttitl' for mysql_real_connect)
and may have more soon. Should I just post a patch here?

Tim.

Reply via email to