]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/graphe/GCmex1.9/GraphCut.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
28/08 matin
[these_gilles.git] / THESE / codes / graphe / GCmex1.9 / GraphCut.h
1 /*\r
2  * GraphCut.h\r
3  *\r
4  * Wrapper for Weksler Olga's GraphCut to Matlab\r
5  *\r
6  * wrapper by Shai Bagon 2006, contact shai.abgon@weizmann.ac.il or shaibagon@gmail.com\r
7  *\r
8  */\r
9 #ifndef _GRAPH_CUT_H_\r
10 #define _GRAPH_CUT_H_\r
11 \r
12 #include "mex.h"\r
13 #include <tmwtypes.h>\r
14 \r
15 /* handle type for graph class */\r
16 typedef void* GraphHandle;\r
17 \r
18 /* we want to verify that the class is valid */\r
19 #define VALID_CLASS_SIGNITURE   0xabcd0123\r
20 \r
21 /* pointer types in 64 bits machines */\r
22 #ifdef A64BITS\r
23 #define MATLAB_POINTER_TYPE mxUINT64_CLASS\r
24 #else\r
25 #define MATLAB_POINTER_TYPE mxUINT32_CLASS\r
26 #endif\r
27 \r
28 template<class T>\r
29 void GetScalar(const mxArray* x, T& scalar)\r
30 {\r
31     if ( mxGetNumberOfElements(x) != 1 )\r
32         mexErrMsgIdAndTxt("GraphCut:GetScalar","input is not a scalar!");\r
33     void *p = mxGetData(x);\r
34     switch (mxGetClassID(x)) {\r
35         case mxCHAR_CLASS:\r
36             scalar = *(char*)p;\r
37             break;\r
38         case mxDOUBLE_CLASS:\r
39             scalar = *(double*)p;\r
40             break;\r
41         case mxSINGLE_CLASS:\r
42             scalar = *(float*)p;\r
43             break;\r
44         case mxINT8_CLASS:\r
45             scalar = *(char*)p;\r
46             break;\r
47         case mxUINT8_CLASS:\r
48             scalar = *(unsigned char*)p;\r
49             break;\r
50         case mxINT16_CLASS:\r
51             scalar = *(short*)p;\r
52             break;\r
53         case mxUINT16_CLASS:\r
54             scalar = *(unsigned short*)p;\r
55             break;\r
56         case mxINT32_CLASS:\r
57             scalar = *(int*)p;\r
58             break;\r
59         case mxUINT32_CLASS:\r
60             scalar = *(unsigned int*)p;\r
61             break;\r
62 #ifdef A64BITS            \r
63         case mxINT64_CLASS:\r
64             scalar = *(int64_T*)p;\r
65             break;\r
66         case mxUINT64_CLASS:\r
67             scalar = *(uint64_T*)p;\r
68             break;\r
69 #endif /* 64 bits machines */            \r
70         default:\r
71             mexErrMsgIdAndTxt("GraphCut:GetScalar","unsupported data type");\r
72     }\r
73 }\r
74 \r
75 /* memory allocations - redirect to MATLAB memory menager */\r
76 void* operator new(size_t size);\r
77 void* operator new[](size_t size);\r
78 void operator delete(void* ptr);\r
79 void operator delete[](void* ptr);\r
80 \r
81 #endif /* _GRAPH_CUT_H_ */\r