ardour
whitespace.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2000-2007 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #include "pbd/whitespace.h"
21 
22 using namespace std;
23 
24 namespace PBD {
25 
26 void
28 {
29  string::size_type i;
30  string::size_type len;
31  string::size_type s = 0;
32 
33  len = str.length();
34 
35  if (len == 1) {
36  return;
37  }
38 
39  /* strip front */
40 
41  for (i = 0; i < len; ++i) {
42  if (!isspace (str[i])) {
43  break;
44  }
45  }
46 
47  if (i == len) {
48  /* it's all whitespace, not much we can do */
49  str = "";
50  return;
51  }
52 
53  /* strip back */
54 
55  if (len > 1) {
56 
57  s = i;
58  i = len - 1;
59 
60  if (s == i) {
61  return;
62  }
63 
64  do {
65  if (!isspace (str[i]) || i == 0) {
66  break;
67  }
68 
69  --i;
70 
71  } while (true);
72 
73  str = str.substr (s, (i - s) + 1);
74 
75  } else {
76  str = str.substr (s);
77  }
78 }
79 
80 } // namespace PBD
Definition: Beats.hpp:239
Definition: debug.h:30
void strip_whitespace_edges(string &str)
Definition: whitespace.cc:27