summaryrefslogtreecommitdiff
path: root/2.3-1/macros/CFiles/sci2cincludes/OpExt.h
blob: 7d8a77f79720a383727fa524ee737753927ba834 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
**  -*- C -*-
**
** 
** Made by  Raffaele.Nutricato@tiscali.it
**
** Copyright Raffaele Nutricato
*/

/*
	Modify by Arnaud Torset : 20/02/09
*/

#ifndef __OPEXT_H__
#define __OPEXT_H__

#define s2s0OpExts0(in1,size,in2)	in1[in2-1];
#define d2d0OpExtd0(in1,size,in2)	in1[in2-1];
#define c2s0OpExtc0(in1,size,in2)	in1[in2-1];
#define z2d0OpExtz0(in1,size,in2)	in1[in2-1];


#define s2s0s0OpExts0(in1,size,row,col)		in1[(col-1)*size[0]+row-1];
#define d2d0d0OpExtd0(in1,size,row,col)		in1[(col-1)*size[0]+row-1];
#define c2s0s0OpExtc0(in1,size,row,col)		in1[(col-1)*size[0]+row-1];
#define z2d0d0OpExtz0(in1,size,row,col)		in1[(col-1)*size[0]+row-1];


#define s2s2OpExts2(in1,size1,in2,size2,out)	{int i;\
								for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
								}
								
#define d2d2OpExtd2(in1,size1,in2,size2,out)	{int i;\
								for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
								}
								
#define c2s2OpExtc2(in1,size1,in2,size2,out)	{int i;\
								for (i=0;i<size2[0]*size2[1;i++]) out[i]=in1[(int)in2[i]-1];\
								}
								
#define z2d2OpExtz2(in1,size1,in2,size2,out)	{int i;\
								for (i=0;i<size2[0]*size2[1];i++) out[i]=in1[(int)in2[i]-1];\
								}



#define s2s2s0OpExts2(in1,size1,rows,size2,col,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,(int)rows[i],col);\
									}
								
#define d2d2d0OpExtd2(in1,size1,rows,size2,col,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,(int)rows[i],col);\
									}
								
#define c2s2s0OpExtc2(in1,size1,rows,size2,col,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,(int)rows[i],col);\
									}
								
#define z2d2d0OpExtz2(in1,size1,rows,size2,col,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,(int)rows[i],col);\
									}
									
#define s2s0s2OpExts2(in1,size1,row,cols,size2,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=s2s0s0OpExts0(in1,size1,row,(int)cols[i]);\
									}
								
#define d2d0d2OpExtd2(in1,size1,row,cols,size2,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=d2d0d0OpExtd0(in1,size1,row,(int)cols[i]);\
									}
								
#define c2s0s2OpExtc2(in1,size1,row,cols,size2,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=c2s0s0OpExtc0(in1,size1,row,(int)cols[i]);\
									}
								
#define z2d0d2OpExtz2(in1,size1,row,cols,size2,out)	{int i;\
									for (i=0;i<size2[0]*size2[1];i++) out[i]=z2d0d0OpExtz0(in1,size1,row,(int)cols[i]);\
									}
								
								
#define s2s2s2OpExts2(in1,size1,rows,size2,cols,size3,out)	{int i,j;\
										for (i=0;i<size2[0]*size2[1];i++) \
											for (j=0;j<size3[0]*size3[1];j++) \
												out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
										}
								
#define d2d2d2OpExtd2(in1,size1,rows,size2,cols,size3,out)	{int i,j;\
										for (i=0;i<size2[0]*size2[1];i++) \
											for (j=0;j<size3[0]*size3[1];j++) \
												out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
										}
								
#define c2s2s2OpExtc2(in1,size1,rows,size2,cols,size3,out)	{int i,j;\
										for (i=0;i<size2[0]*size2[1];i++) \
											for (j=0;j<size3[0]*size3[1];j++) \
												out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
										}
								
#define z2d2d2OpExtz2(in1,size1,rows,size2,cols,size3,out)	{int i,j;\
										for (i=0;i<size2[0]*size2[1];i++) \
											for (j=0;j<size3[0]*size3[1];j++) \
												out[i+j*size2[0]*size2[1]] = in1[((int)(cols[j])-1)*size1[0]+(int)(rows[i])-1];\
										}							
								
								
								


#endif /* !__OPEXT_H__ */