--- /dev/null
+// Objectif:\r
+//\r
+// Faciliter la vie de l'utilisateur!\r
+//\r
+// Probleme:\r
+//\r
+// Exemple (api image)\r
+//\r
+// Methodologie 1 (utilisation namespace explicite)\r
+//\r
+// Compilation gcc = > cpu::Image #include "Image_CPU.h"\r
+// Compilation nvcc => gpu::Image #include "Image_GPU.h"\r
+//\r
+// Avantage : On peut utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image\r
+// Inconvenient : syntaxe lourde\r
+//\r
+// Methodologie 2 (utilisation de smart switch a priorite cuda)\r
+//\r
+// Code (sans namespace)\r
+//\r
+// Image #include "Image.h"\r
+//\r
+// Compilation gcc = > utilise automatiquemnt namespace cpu\r
+// => et donc indirectememt cpu::Image #include "Image_CPU.h"\r
+//\r
+// Compilation nvcc = > utilise automatiquemnt namespace gpu\r
+// => et donc indirectememt gpu::Image #include "Image_GPU.h"\r
+//\r
+//\r
+// Avantage : syntaxe ligth,portage de code facile entre version cpu et gpu, c'est le compilateur qui oriente\r
+// Inconvenient : On peut pas utiliser en meme temps (meme exe) la vesrion cuda(namespace gpu) et non cuda (namespace cpu) de l'api-image\r
+//\r
+// Contrainte :\r
+// Injecter la variable \r
+//\r
+// -D__CBI_CUDA__ \r
+// \r
+// ou mieux injecter la variable pour les projets non cuda\r
+//\r
+// -DCBI_NO_CUDA\r
+// Note\r
+// L'utilisation de la variable \r
+// \r
+// __CUDACC__\r
+// \r
+// ne marche pas, elle est vrai que pour les portions de codes compiliés par nvcc, et false lorsque nvcc demande à gcc de compiler\r
+ \r
+/*----------------------------------------------------------------------*\\r
+ |* Pre-defined Compiler Macros *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+// http://sourceforge.net/p/predef/wiki/Compilers/\r
+\r
+// http://msdn.microsoft.com/en-us/library/b0084kay.aspx\r
+// https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html\r
+// http://sourceforge.net/p/predef/wiki/Home/\r
+\r
+// #ifdef __GNUC__\r
+// #if defined(_MSC_VER)\r
+// #ifdef __CBI_CUDA__\r