Filled in the help files with short descriptions for each algorithm. Fixed an #includ...
[mldemos:baraks-mldemos.git] / MLDemos / types.h
1 /*********************************************************************\r
2 MLDemos: A User-Friendly visualization toolkit for machine learning\r
3 Copyright (C) 2010  Basilio Noris\r
4 Contact: mldemos@b4silio.com\r
5 \r
6 This library is free software; you can redistribute it and/or\r
7 modify it under the terms of the GNU Lesser General Public License,\r
8 version 3 as published by the Free Software Foundation.\r
9 \r
10 This library is distributed in the hope that it will be useful, but\r
11 WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
13 Lesser General Public License for more details.\r
14 \r
15 You should have received a copy of the GNU Lesser General Public\r
16 License along with this library; if not, write to the Free\r
17 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
18 *********************************************************************/\r
19 #ifndef __TYPES_H__\r
20 #define __TYPES_H__\r
21 \r
22 #include <vector>\r
23 // type definitions, u <- unsigned, s <- signed, f <- floating point, X: number of bits\r
24 typedef unsigned char u8;\r
25 typedef unsigned short int u16;\r
26 typedef unsigned int u32;\r
27 typedef unsigned long u64;\r
28 typedef char s8;\r
29 typedef short int s16;\r
30 typedef int s32;\r
31 typedef long s64;\r
32 typedef float f32;\r
33 typedef double f64;\r
34 \r
35 typedef std::vector<double> dvec;\r
36 typedef std::vector<float> fvec;\r
37 typedef std::vector<unsigned int> uvec;\r
38 typedef std::vector<int> ivec;\r
39 typedef std::vector<bool> bvec;\r
40 \r
41 typedef std::pair<int,int> ipair;\r
42 typedef std::pair<float,float> fpair;\r
43 typedef std::pair<double,double> dpair;\r
44 \r
45 #include <algorithm>\r
46 using std::max;\r
47 using std::min;\r
48 //#ifndef max\r
49 //#define max(a,b) (a > b ? a : b)\r
50 //#define min(a,b) (a < b ? a : b)\r
51 //#endif\r
52 \r
53 // fancy macros\r
54 #define FOR(i,length) for(u32 i=0; i<(u32)(length); i++) \r
55 #define SWAP(x,y) x^=y^=x^=y // fast swap for pointers or integers\r
56 #define MAX3(a,b,c) max(a,max(b,c))\r
57 #define MIN3(a,b,c) min(a,min(b,c))\r
58 #define TRIM(a,b,c) min(max(a,b),c)\r
59 #define Truncate(a,b) a = ( a>=b ? b : a)\r
60 \r
61 // delete macros\r
62 #define DEL(a) if(a){delete a; a=NULL;} // safe delete pointer\r
63 #define KILL(a) if(a){delete [] a; a=NULL;} // safe delete []\r
64 #define IMKILL(a) if(a) {cvReleaseImage(&(a)); (a)=NULL;} // safe delete image\r
65 // reading pixels from an image\r
66 #undef RGB\r
67 #define RGB(image,i) (image->imageData[i])\r
68 #define to255(x) ((x<<8)-x) // fast multiply *255\r
69 // define an image's region of interest\r
70 #define ROI(a,b) cvSetImageROI(a,b)\r
71 #define unROI(a) cvResetImageROI(a)\r
72 \r
73 // definitions for the matlab-style tic toc\r
74 #define TICTOC u64 tic_time = 0;\r
75 #define tic tic_time = (u64)(cvGetTickCount()/cvGetTickFrequency())\r
76 #define toc printf("Elapsed time is %.3f seconds.\n",((u64)(cvGetTickCount()/cvGetTickFrequency()) - tic_time)/1000000.0f)\r
77 #define etoc ((u64)(cvGetTickCount()/cvGetTickFrequency()) - tic_time)\r
78 \r
79 //\r
80 #include <string.h>\r
81 static bool endsWith(const char *a,const char *b)\r
82 {\r
83         bool yeah = true;\r
84         int lena = strlen(a);\r
85         int lenb = strlen(b);\r
86         for (int i=0; i<lenb; i++)\r
87         {\r
88                 yeah &= a[lena - lenb + i] == b[i];\r
89         }\r
90         return yeah;\r
91 }\r
92 \r
93 \r
94 #endif // __TYPES_H__\r