00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "bbstdStringTo.h"
00033 #include "bbstdPackage.h"
00034
00035
00036 namespace bbstd
00037 {
00038
00039
00040 BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringTo,
00041 bbtk::AtomicBlackBox);
00042
00043
00044
00045
00046 template <> void StringTo<bool> ::DoIt()
00047 {
00048 if ( (bbGetInputIn()=="true") ||
00049 (bbGetInputIn()=="TRUE") ||
00050 (bbGetInputIn()=="True") ||
00051 (bbGetInputIn()=="1") )
00052 {
00053 bbSetOutputOut(true);
00054 }
00055 else if ( (bbGetInputIn()=="false") ||
00056 (bbGetInputIn()=="FALSE") ||
00057 (bbGetInputIn()=="False") ||
00058 (bbGetInputIn()=="0") )
00059 {
00060 bbSetOutputOut(false);
00061 }
00062 else
00063 {
00064 bbtkError("cannot convert '"<<bbGetInputIn()<<"' to a bool");
00065 }
00066 }
00067
00068
00069 template <> void StringTo<bbtk::Void> ::DoIt()
00070 {
00071 }
00072
00073 template <> void StringTo<int8_t> ::DoIt()
00074 {
00075 bbSetOutputOut( (int8_t)atoi ( bbGetInputIn().c_str() ) );
00076 }
00077
00078 template <> void StringTo<uint8_t> ::DoIt()
00079 {
00080 bbSetOutputOut( (uint8_t)atoi ( bbGetInputIn().c_str() ) );
00081 }
00082
00083 template <> void StringTo<int16_t> ::DoIt()
00084 {
00085 bbSetOutputOut( (int16_t)atoi ( bbGetInputIn().c_str() ) );
00086 }
00087
00088 template <> void StringTo<uint16_t> ::DoIt()
00089 {
00090 bbSetOutputOut( (uint16_t)atoi ( bbGetInputIn().c_str() ) );
00091 }
00092
00093 template <> void StringTo<int32_t> ::DoIt()
00094 {
00095 bbSetOutputOut( (int32_t)atoi ( bbGetInputIn().c_str() ) );
00096 }
00097
00098 template <> void StringTo<uint32_t> ::DoIt()
00099 {
00100 bbSetOutputOut( (uint32_t)atoi ( bbGetInputIn().c_str() ) );
00101 }
00102
00103 template <> void StringTo<float> ::DoIt()
00104 {
00105 bbSetOutputOut( (float)atof ( bbGetInputIn().c_str() ) );
00106 }
00107
00108 template <> void StringTo<double> ::DoIt()
00109 {
00110 bbSetOutputOut( atof ( bbGetInputIn().c_str() ) );
00111 }
00112
00113
00114
00115
00116
00117 typedef bbtk::Void Void;
00118 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,bool);
00119 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int8_t);
00120 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint8_t);
00121 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int16_t);
00122 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint16_t);
00123 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,int32_t);
00124 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,uint32_t);
00125 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,float);
00126 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,double);
00127 BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringTo,Void);
00128
00129
00130 }