Import Geant4 10.7.0.beta source tree
This commit is contained in:
@@ -23,78 +23,78 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// G4Tokenizer
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------
|
||||
// GEANT 4 class header file
|
||||
//
|
||||
// G4Tokenizer
|
||||
//
|
||||
// Class description:
|
||||
//
|
||||
// String tokenizer.
|
||||
// It derives from the implementation of the Rogue Wave
|
||||
// RWTokenizer. It intrinsically uses STL string.
|
||||
// String tokenizer.
|
||||
// It derives from the implementation of the Rogue Wave RWTokenizer.
|
||||
// It intrinsically uses STL string.
|
||||
|
||||
//---------------------------------------------------------------
|
||||
|
||||
#ifndef __G4Tokenizer
|
||||
#define __G4Tokenizer
|
||||
// Author: G.Cosmo, 11 October 2001
|
||||
// --------------------------------------------------------------------
|
||||
#ifndef G4Tokenizer_hh
|
||||
#define G4Tokenizer_hh 1
|
||||
|
||||
#include "G4String.hh"
|
||||
|
||||
class G4Tokenizer
|
||||
class G4Tokenizer
|
||||
{
|
||||
public:
|
||||
G4Tokenizer(const G4String& stn):string2tokenize(stn),actual(0){}
|
||||
public:
|
||||
G4Tokenizer(const G4String& stn)
|
||||
: string2tokenize(stn)
|
||||
, actual(0)
|
||||
{}
|
||||
|
||||
G4String operator()(const char* str=" \t\n",size_t l=0)
|
||||
G4String operator()(const char* str = " \t\n", std::size_t l = 0)
|
||||
{
|
||||
std::size_t i, j, tmp;
|
||||
G4bool hasws = false;
|
||||
if(l == 0)
|
||||
l = strlen(str);
|
||||
|
||||
// Skip leading delimeters
|
||||
while(actual < string2tokenize.size())
|
||||
{
|
||||
size_t i,j,tmp;
|
||||
G4bool hasws=false;
|
||||
if(l==0) l=strlen(str);
|
||||
//Skip leading delimeters
|
||||
while(actual<string2tokenize.size())
|
||||
{
|
||||
|
||||
for(i=0;i<l;i++)
|
||||
if(string2tokenize[actual]==str[i]) hasws=true;
|
||||
if(hasws)
|
||||
{
|
||||
actual++;
|
||||
hasws=false;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
for(j=actual;j<string2tokenize.size();j++)
|
||||
{
|
||||
for(i=0;i<l;i++)
|
||||
if(string2tokenize[j]==str[i]) break;
|
||||
if(i<l) break;
|
||||
}
|
||||
if(j!=string2tokenize.size())
|
||||
{
|
||||
tmp=actual;
|
||||
actual=j+1;
|
||||
return string2tokenize(tmp,j-tmp);
|
||||
}
|
||||
for(i = 0; i < l; ++i)
|
||||
{
|
||||
if(string2tokenize[actual] == str[i])
|
||||
hasws = true;
|
||||
}
|
||||
if(hasws)
|
||||
{
|
||||
++actual;
|
||||
hasws = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp=actual;
|
||||
actual=j;
|
||||
return string2tokenize(tmp,j-tmp);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
private:
|
||||
for(j = actual; j < string2tokenize.size(); ++j)
|
||||
{
|
||||
for(i = 0; i < l; ++i)
|
||||
if(string2tokenize[j] == str[i])
|
||||
break;
|
||||
if(i < l)
|
||||
break;
|
||||
}
|
||||
if(j != string2tokenize.size())
|
||||
{
|
||||
tmp = actual;
|
||||
actual = j + 1;
|
||||
return string2tokenize(tmp, j - tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = actual;
|
||||
actual = j;
|
||||
return string2tokenize(tmp, j - tmp);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
G4String string2tokenize;
|
||||
size_t actual;
|
||||
|
||||
std::size_t actual;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user