tpconv.c File Reference

#include "machine.h"
#include "tpconv.h"

Include dependency graph for tpconv.c:

Go to the source code of this file.

Defines

#define TCONV(Xtype, Ytype)

Typedefs

typedef signed char integer1
typedef short integer2

Functions

int C2F() tpconv (integer *xtyp, integer *ytyp, integer *n, void *dx, integer *incx, void *dy, integer *incy)


Define Documentation

#define TCONV ( Xtype,
Ytype   ) 

Value:

{\
Xtype *DX;\
Ytype *DY;\
    DY=(Ytype *)dy;\
    --DY;\
    DX=(Xtype *)dx;\
    --DX;\
    if (*incx == 1 && *incy == 1) {\
      for (i = 1; i <= i1; ++i) DY[i] = (Ytype) DX[i];\
    }\
    else {\
      ix = 1;iy = 1;\
      if (*incx < 0) {ix = (-i1 + 1) * (*incx) + 1;}\
      if (*incy < 0) {iy = (-i1 + 1) * (*incy) + 1;}\
      for (i = 1; i <= i1; ++i) {\
        DY[iy] = (Ytype) DX[ix];\
        ix += *incx;iy += *incy;\
      }\
    }\
}

Definition at line 7 of file tpconv.c.

Referenced by tpconv().


Typedef Documentation

typedef signed char integer1

Definition at line 3 of file tpconv.c.

typedef short integer2

Definition at line 4 of file tpconv.c.


Function Documentation

int C2F() tpconv ( integer xtyp,
integer ytyp,
integer n,
void *  dx,
integer incx,
void *  dy,
integer incy 
)

Definition at line 28 of file tpconv.c.

References i, i1, ix, n, and TCONV.

00029 {
00030   integer i1;
00031   static integer i, ix, iy;
00032 
00033   i1 = *n;
00034   if (i1 <= 0) return 0;
00035 
00036   switch (*xtyp) {
00037   case 0:
00038     switch (*ytyp) {
00039     case 0:
00040       TCONV(double,double);
00041       break;
00042     case 1:
00043       TCONV(double,integer1);
00044       break;
00045     case 2:
00046       TCONV(double,integer2);
00047       break;
00048     case 4:
00049       TCONV(double,integer);
00050       break;
00051     case 11:
00052       TCONV(double,unsigned char);
00053       break;
00054     case 12:
00055       TCONV(double,unsigned short);
00056       break;
00057     case 14:
00058       TCONV(double,unsigned int);
00059       break;
00060     }
00061     break;
00062   case 1:
00063     switch (*ytyp) {
00064     case 0:
00065       TCONV(integer1,double);
00066       break;
00067     case 1:
00068       TCONV(integer1,integer1);
00069       break;
00070     case 2:
00071       TCONV(integer1,integer2);
00072       break;
00073     case 4:
00074       TCONV(integer1,integer);
00075       break;
00076     case 11:
00077       TCONV(integer1,unsigned char);
00078       break;
00079     case 12:
00080       TCONV(integer1,unsigned short);
00081       break;
00082     case 14:
00083       TCONV(integer1,unsigned int);
00084       break;
00085     }
00086     break;
00087   case 2:
00088     switch (*ytyp) {
00089     case 0:
00090       TCONV(integer2,double);
00091       break;
00092     case 1:
00093       TCONV(integer2,integer1);
00094       break;
00095     case 2:
00096       TCONV(integer2,integer2);
00097       break;
00098     case 4:
00099       TCONV(integer2,integer);
00100       break;
00101     case 11:
00102       TCONV(integer2,unsigned char);
00103       break;
00104     case 12:
00105       TCONV(integer2,unsigned short);
00106       break;
00107     case 14:
00108       TCONV(integer2,unsigned int);
00109       break;
00110     }
00111     break;
00112   case 4:
00113     switch (*ytyp) {
00114     case 0:
00115       TCONV(integer,double);
00116       break;
00117     case 1:
00118       TCONV(integer,integer1);
00119       break;
00120     case 2:
00121       TCONV(integer,integer2);
00122       break;
00123     case 4:
00124       TCONV(integer,integer);
00125       break;
00126     case 11:
00127       TCONV(integer,unsigned char);
00128       break;
00129     case 12:
00130       TCONV(integer,unsigned short);
00131       break;
00132     case 14:
00133       TCONV(integer,unsigned int);
00134       break;
00135     }
00136     break;
00137   case 11:
00138     switch (*ytyp) {
00139     case 0:
00140       TCONV(unsigned char,double);
00141       break;
00142     case 1:
00143       TCONV(unsigned char,integer1);
00144       break;
00145     case 2:
00146       TCONV(unsigned char,integer2);
00147       break;
00148     case 4:
00149       TCONV(unsigned char,integer);
00150       break;
00151     case 11:
00152       TCONV(unsigned char,unsigned char);
00153       break;
00154     case 12:
00155       TCONV(unsigned char,unsigned short);
00156       break;
00157     case 14:
00158       TCONV(unsigned char,unsigned int);
00159       break;
00160     }
00161     break;
00162   case 12:
00163     switch (*ytyp) {
00164     case 0:
00165       TCONV(unsigned short,double);
00166       break;
00167     case 1:
00168       TCONV(unsigned short,integer1);
00169       break;
00170     case 2:
00171       TCONV(unsigned short,integer2);
00172       break;
00173     case 4:
00174       TCONV(unsigned short,integer);
00175       break;
00176     case 11:
00177       TCONV(unsigned short,unsigned char);
00178       break;
00179     case 12:
00180       TCONV(unsigned short,unsigned short);
00181       break;
00182     case 14:
00183       TCONV(unsigned short,unsigned int);
00184       break;
00185     }
00186     break;
00187   case 14:
00188    switch (*ytyp) {
00189     case 0:
00190       TCONV(unsigned int,double);
00191       break;
00192     case 1:
00193       TCONV(unsigned int,integer1);
00194       break;
00195     case 2:
00196       TCONV(unsigned int,integer2);
00197       break;
00198     case 4:
00199       TCONV(unsigned int,integer);
00200       break;
00201     case 11:
00202       TCONV(unsigned int,unsigned char);
00203       break;
00204     case 12:
00205       TCONV(unsigned int,unsigned short);
00206       break;
00207     case 14:
00208       TCONV(unsigned int,unsigned int);
00209       break;
00210    }
00211    break;
00212   }
00213   return 0;
00214 }


Generated on Sun Mar 4 16:08:02 2007 for Scilab [trunk] by  doxygen 1.5.1