[svn:parrot] r49758 - branches/gsoc_nci/src/pmc

plobsing at svn.parrot.org plobsing at svn.parrot.org
Sun Oct 31 16:25:37 UTC 2010


Author: plobsing
Date: Sun Oct 31 16:25:36 2010
New Revision: 49758
URL: https://trac.parrot.org/parrot/changeset/49758

Log:
cosmetic changes to nci argument decode

Modified:
   branches/gsoc_nci/src/pmc/nci.pmc

Modified: branches/gsoc_nci/src/pmc/nci.pmc
==============================================================================
--- branches/gsoc_nci/src/pmc/nci.pmc	Sun Oct 31 16:04:50 2010	(r49757)
+++ branches/gsoc_nci/src/pmc/nci.pmc	Sun Oct 31 16:25:36 2010	(r49758)
@@ -521,36 +521,30 @@
                     break;
                   case enum_nci_sig_string:
                     translation_pointers[i] = pcc_arg[j++].s;
-                    values[i] = &translation_pointers[i];
+                    values[i]               = &translation_pointers[i];
                     break;
                   case enum_nci_sig_cstring:
-                    if (STRING_IS_NULL(pcc_arg[j].s)) {
-                        translation_pointers[i] = (char*) NULL;
-                    }
-                    else {
-                        translation_pointers[i] = Parrot_str_to_cstring(interp, pcc_arg[j].s);
-                    }
+                    translation_pointers[i] = STRING_IS_NULL(pcc_arg[j].s) ?
+                                                (char *)NULL :
+                                                Parrot_str_to_cstring(interp, pcc_arg[j].s);
                     j++;
                     values[i] = &translation_pointers[i];
                     break;
                   case enum_nci_sig_bufref:
-                    if (STRING_IS_NULL(pcc_arg[j].s)) {
-                        translation_pointers[i] = (char*) NULL;
-                    }
-                    else {
-                        translation_pointers[i] = Parrot_str_to_cstring(interp, pcc_arg[j].s);
-                    }
+                    translation_pointers[i] = STRING_IS_NULL(pcc_arg[j].s) ?
+                                                (char *)NULL :
+                                                Parrot_str_to_cstring(interp, pcc_arg[j].s);
                     j++;
-                    middle_man[i] = &translation_pointers[i];
-                    values[i] = &middle_man[i];
+                    middle_man[i]           = &translation_pointers[i];
+                    values[i]               = &middle_man[i];
                     break;
                   case enum_nci_sig_cstringref:
                     values[i] = &Buffer_bufstart(pcc_arg[j++].s);
                     break;
                   case enum_nci_sig_char:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(char);
-                    *((char**)translation_pointers)[i] = (char)pcc_arg[j++].i;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]            = mem_internal_allocate_zeroed_typed(char);
+                    *(char *)(translation_pointers[i]) = (char)pcc_arg[j++].i;
+                    values[i]                          = translation_pointers[i];
                     break;
                   case enum_nci_sig_shortref:
                     pmc_holder       = translation_pointers[i]
@@ -562,9 +556,9 @@
                     values[i]        = &pmc_holder->ival;
                     break;
                   case enum_nci_sig_short:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(short);
-                    *((short**)translation_pointers)[i] = (short)pcc_arg[j++].i;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]             = mem_internal_allocate_zeroed_typed(short);
+                    *(short *)(translation_pointers[i]) = (short)pcc_arg[j++].i;
+                    values[i]                           = translation_pointers[i];
                     break;
                   case enum_nci_sig_intref:
                     pmc_holder       = translation_pointers[i]
@@ -576,9 +570,9 @@
                     values[i]        = &pmc_holder->ival;
                     break;
                   case enum_nci_sig_int:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(int);
-                    *((int**)translation_pointers)[i] = (int)pcc_arg[j++].i;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]           = mem_internal_allocate_zeroed_typed(int);
+                    *(int *)(translation_pointers[i]) = (int)pcc_arg[j++].i;
+                    values[i]                         = translation_pointers[i];
                     break;
                   case enum_nci_sig_longref:
                     pmc_holder       = translation_pointers[i]
@@ -590,9 +584,9 @@
                     values[i]        = &pmc_holder->ival;
                     break;
                   case enum_nci_sig_long:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(long);
-                    *((long**)translation_pointers)[i] = (long)pcc_arg[j++].i;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]            = mem_internal_allocate_zeroed_typed(long);
+                    *(long *)(translation_pointers[i]) = (long)pcc_arg[j++].i;
+                    values[i]                          = translation_pointers[i];
                     break;
                   case enum_nci_sig_ptrref:
                     pmc_holder       = translation_pointers[i]
@@ -607,28 +601,28 @@
                     break;
                   case enum_nci_sig_pmc:
                     translation_pointers[i] = pcc_arg[j++].p;
-                    values[i] = &translation_pointers[i];
+                    values[i]               = &translation_pointers[i];
                     break;
                   case enum_nci_sig_ptr:
-                    translation_pointers[i] = PMC_IS_NULL(pcc_arg[j].p) ? 
+                    translation_pointers[i] = PMC_IS_NULL(pcc_arg[j].p) ?
                                 (void *)NULL : VTABLE_get_pointer(interp, pcc_arg[j].p);
                     j++;
-                    values[i] = &translation_pointers[i];
+                    values[i]               = &translation_pointers[i];
                     break;
                   case enum_nci_sig_float:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(float);
-                    *((float**)translation_pointers)[i] = (float)pcc_arg[j++].n;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]             = mem_internal_allocate_zeroed_typed(float);
+                    *(float *)(translation_pointers[i]) = (float)pcc_arg[j++].n;
+                    values[i]                           = translation_pointers[i];
                     break;
                   case enum_nci_sig_double:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(double);
-                    *((double**)translation_pointers)[i] = (double)pcc_arg[j++].n;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]              = mem_internal_allocate_zeroed_typed(double);
+                    *(double *)(translation_pointers[i]) = (double)pcc_arg[j++].n;
+                    values[i]                            = translation_pointers[i];
                     break;
                   case enum_nci_sig_numval:
-                    translation_pointers[i] = mem_internal_allocate_zeroed_typed(FLOATVAL);
-                    *((FLOATVAL**)translation_pointers)[i] = pcc_arg[j++].n;
-                    values[i] = translation_pointers[i];
+                    translation_pointers[i]                = mem_internal_allocate_zeroed_typed(FLOATVAL);
+                    *(FLOATVAL *)(translation_pointers[i]) = pcc_arg[j++].n;
+                    values[i]                              = translation_pointers[i];
                     break;
                 }
             }
@@ -645,56 +639,51 @@
         ffi_call(cif, FFI_FN(func), return_data, values);
 
         if (cif->rtype != &ffi_type_void) {
-            char *s;
-            PMC *ret_object;
+            char         *s;
+            PMC          *ret_object;
+            parrot_var_t  final_destination;
             s = Parrot_str_to_cstring(interp, nci_info->pcc_return_signature);
             switch (VTABLE_get_integer_keyed_int(interp, nci_info->signature, 0)) {
               case enum_nci_sig_ptr:
-                {
-                    PMC *final_destination = PMCNULL;
+                final_destination.p = PMCNULL;
 
-                    if (*(void**)return_data != NULL) {
-                        final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
-                        VTABLE_set_pointer(interp, final_destination, *(void**)return_data);
-                    }
-                    ret_object = Parrot_pcc_build_call_from_c_args(interp,
-                                                                    call_object,
-                                                                    s, final_destination);
+                if (*(void **)return_data != NULL) {
+                    final_destination.p = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                    VTABLE_set_pointer(interp, final_destination.p, *(void **)return_data);
                 }
+                ret_object = Parrot_pcc_build_call_from_c_args(interp,
+                                                                call_object,
+                                                                s, final_destination.p);
                 break;
               case enum_nci_sig_cstring:
-                {
-                    STRING *final_destination = Parrot_str_new(interp, *(char**)return_data, 0);
-                    ret_object = Parrot_pcc_build_call_from_c_args(interp,
-                                                                   call_object,
-                                                                   s, final_destination);
-                }
+                final_destination.s = Parrot_str_new(interp, *(char **)return_data, 0);
+                ret_object = Parrot_pcc_build_call_from_c_args(interp,
+                                                               call_object,
+                                                               s, final_destination.s);
                 break;
               case enum_nci_sig_float:
-                {
-                    FLOATVAL final_destination = *(float*)return_data;
+                final_destination.n = *(float *)return_data;
 
-                    ret_object = Parrot_pcc_build_call_from_c_args(interp, 
-                                                            call_object, 
-                                                            s, final_destination);
-                }
+                ret_object = Parrot_pcc_build_call_from_c_args(interp, 
+                                                        call_object, 
+                                                        s, final_destination.n);
                 break;
               default:
                 switch (s[0]) {
                   case 'N':
                     ret_object = Parrot_pcc_build_call_from_c_args(interp,
                                                            call_object,
-                                                           s, *(FLOATVAL*)return_data);
+                                                           s, *(FLOATVAL *)return_data);
                   case 'I':
                     ret_object = Parrot_pcc_build_call_from_c_args(interp,
                                                            call_object,
-                                                           s, *(INTVAL*)return_data);
+                                                           s, *(INTVAL *)return_data);
                   case 'P':
                   case 'S':
                   default:
                     ret_object = Parrot_pcc_build_call_from_c_args(interp,
                                                            call_object,
-                                                           s, *(void**)return_data);
+                                                           s, *(void **)return_data);
                 }
                 break;
             }


More information about the parrot-commits mailing list