source: trunk/source/global/management/include/G4Tokenizer.hh @ 1202

Last change on this file since 1202 was 1058, checked in by garnier, 15 years ago

file release beta

File size: 3.0 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27// $Id: G4Tokenizer.hh,v 1.2 2006/06/29 19:03:20 gunter Exp $
28// GEANT4 tag $Name: geant4-09-02-ref-02 $
29//
30//
31//---------------------------------------------------------------
32//  GEANT 4 class header file
33//
34//  G4Tokenizer
35//
36//  Class description:
37//
38//  String tokenizer.
39//  It derives from the implementation of the Rogue Wave
40//  RWTokenizer. It intrinsically uses STL string.
41
42//---------------------------------------------------------------
43
44#ifndef __G4Tokenizer
45#define __G4Tokenizer
46
47#include "G4String.hh"
48
49class G4Tokenizer 
50{
51public:
52  G4Tokenizer(const G4String& s):string2tokenize(s),actual(0){}
53
54  G4SubString operator()(const char* str=" \t\n",size_t l=0)
55    {
56      size_t i,j,tmp;
57      G4bool hasws=false;
58      if(l==0) l=strlen(str);
59      //Skip leading delimeters
60      while(actual<string2tokenize.size())
61        {
62         
63          for(i=0;i<l;i++)
64            if(string2tokenize[actual]==str[i]) hasws=true;
65          if(hasws)
66            {
67              actual++;
68              hasws=false;
69            }
70          else
71            break;
72        }
73         
74      for(j=actual;j<string2tokenize.size();j++)
75        {
76          for(i=0;i<l;i++)
77            if(string2tokenize[j]==str[i]) break;
78          if(i<l) break;
79        }
80      if(j!=string2tokenize.size())
81        {
82          tmp=actual;
83          actual=j+1;
84          return string2tokenize(tmp,j-tmp);
85        }
86      else
87        {
88          tmp=actual;
89          actual=j;
90          return string2tokenize(tmp,j-tmp);
91        }
92    } 
93
94private:
95
96  G4String string2tokenize;
97  size_t actual;
98
99};
100
101#endif
102
Note: See TracBrowser for help on using the repository browser.