00001 #include "machine.h"
00002 #include "genextrac2.h"
00003 typedef signed char integer1;
00004 typedef short integer2;
00005
00006
00007 #define EXTRAC2(Type) {\
00008 Type *FROM;\
00009 Type *TO;\
00010 FROM=(Type *)from;\
00011 --FROM;\
00012 TO=(Type *)to;\
00013 --TO;\
00014 l = 1;\
00015 for (j = 1; j <= *nj; ++j) \
00016 for (i = 1; i <= *mi; ++i) {\
00017 TO[l] = FROM[indxi[i]+(indxj[j]-1)*(*m)];\
00018 l = l+1;}\
00019 }
00020
00021
00022 int C2F(genextrac2)(integer *typ,integer *mi,integer *nj,integer *indxi,integer *indxj,integer *from,integer *m,integer *to)
00023 {
00024 static integer i, j, l;
00025 --indxi;
00026 --indxj;
00027 switch (*typ) {
00028 case 1:
00029 EXTRAC2(integer1);
00030 break;
00031 case 2:
00032 EXTRAC2(integer2);
00033 break;
00034 case 4:
00035 EXTRAC2(integer);
00036 break;
00037 case 11:
00038 EXTRAC2(unsigned char);
00039 break;
00040 case 12:
00041 EXTRAC2(unsigned short);
00042 break;
00043 case 14:
00044 EXTRAC2(unsigned int);
00045 break;
00046 }
00047 return 0;
00048 }
00049