]> Creatis software - bbtk.git/blob - packages/std/src/bbstdStringTo.cxx
af90ff3e1f0d8c2cdb56bac502651529e9a4a013
[bbtk.git] / packages / std / src / bbstdStringTo.cxx
1 #include "bbstdStringTo.h"
2 #include "bbstdPackage.h"
3
4
5 namespace bbstd 
6 {
7
8   //====================================================================
9   BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringTo,
10                                          bbtk::AtomicBlackBox);
11   //====================================================================
12
13   //====================================================================
14   // Template specialization of DoIt
15   template <> void StringTo<bool> ::DoIt()
16   {
17     if ( (bbGetInputIn()=="true") || 
18          (bbGetInputIn()=="TRUE") || 
19          (bbGetInputIn()=="True") || 
20          (bbGetInputIn()=="1")     )  
21     {
22        bbSetOutputOut(true);
23     }
24     else if ( (bbGetInputIn()=="false") || 
25               (bbGetInputIn()=="FALSE") ||
26               (bbGetInputIn()=="False") ||
27               (bbGetInputIn()=="0") )  
28     {   
29        bbSetOutputOut(false); 
30     }
31     else 
32     {
33        bbtkError("cannot convert '"<<bbGetInputIn()<<"' to a bool");
34     }
35   }
36   
37   // Template specialization of DoIt
38   template <> void StringTo<bbtk::Void> ::DoIt()
39   {
40   }
41   
42   template <> void StringTo<int8_t> ::DoIt()
43   {
44     bbSetOutputOut( (int8_t)atoi ( bbGetInputIn().c_str() ) );
45   }
46   
47   template <> void StringTo<uint8_t> ::DoIt()
48   {
49     bbSetOutputOut( (uint8_t)atoi ( bbGetInputIn().c_str() ) );
50   }
51   
52   template <> void StringTo<int16_t> ::DoIt()
53   {
54     bbSetOutputOut( (int16_t)atoi ( bbGetInputIn().c_str() ) );
55   }
56   
57   template <> void StringTo<uint16_t> ::DoIt()
58   {
59     bbSetOutputOut( (uint16_t)atoi ( bbGetInputIn().c_str() ) );
60   }
61   
62   template <> void StringTo<int32_t> ::DoIt()
63   {
64     bbSetOutputOut( (int32_t)atoi ( bbGetInputIn().c_str() ) );
65   }
66   
67   template <> void StringTo<uint32_t> ::DoIt()
68   {
69     bbSetOutputOut( (uint32_t)atoi ( bbGetInputIn().c_str() ) );
70   }
71   
72   template <> void StringTo<float> ::DoIt()
73   {
74     bbSetOutputOut( (float)atof ( bbGetInputIn().c_str() ) );
75   }
76   
77   template <> void StringTo<double> ::DoIt()
78   {
79     bbSetOutputOut( atof ( bbGetInputIn().c_str() ) );
80   }
81   
82   //====================================================================
83   
84   //====================================================================
85   // Add the specialized adaptors to the package
86   typedef bbtk::Void Void;
87   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,bool);
88   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int8_t);
89   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint8_t);
90   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int16_t);
91   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint16_t);
92   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int32_t);
93   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint32_t);
94   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,float);
95   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,double);
96   BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,Void);
97   //====================================================================
98   
99 } // namespace bbstd