00001 00002 // $Id: ushortBuilder.cxx,v 1.1 2007/02/09 04:44:14 fmwk Exp $ 00003 // 00005 // 00006 // messier@indiana.edu 00008 #include "XMLInterface/ushortBuilder.h" 00009 #include "XMLInterface/Stack.h" 00010 #include "XMLInterface/ChString.h" 00011 #include <cstdlib> 00012 #include <cstring> 00013 #include <vector> 00014 00015 // Create and instance to be used by the XML parser 00016 static xmli::ushortBuilder gsBuilder("ushort"); 00017 00018 //...................................................................... 00019 00020 xmli::ushortBuilder::ushortBuilder(const char* tag) : xmli::Builder(tag) { } 00021 00022 //...................................................................... 00023 00024 void xmli::ushortBuilder::Build(const xmli::AttributeList& /*attr*/, 00025 const std::string& buffer) 00026 { 00027 //====================================================================== 00028 // Build a vector<int> and place it on the XMLIStack 00029 // attr - list of attributes (none used...) 00030 // buffer - space separated integers 00031 //====================================================================== 00032 int i; 00033 int s; 00034 std::vector<std::string> vs; 00035 std::vector<unsigned short> vsh; 00036 00037 // Split the string in to sub fields and extra the values from each 00038 // sub-field 00039 xmli::ChString::Split(buffer.c_str()," ,\n\t\r",vs); 00040 std::vector<std::string>::iterator itr(vs.begin()); 00041 std::vector<std::string>::iterator itrEnd(vs.end()); 00042 for (; itr!=itrEnd; ++itr) { 00043 const char* c1 = itr->c_str(); 00044 char* c2 = 0; 00045 i = strtol(c1,&c2,0); 00046 s = (unsigned short)i; 00047 vsh.push_back(s); 00048 } 00049 00050 // Add this vector of unsigned short values into the "global" stack 00051 xmli::Stack<std::vector<unsigned short> >::Instance().push(vsh); 00052 } 00053
1.3.5