Cleanup: manually remove header text not handled by automation
[blender.git] / intern / opensubdiv / internal / opensubdiv_util.cc
1 // Copyright 2013 Blender Foundation. All rights reserved.
2 //
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software Foundation,
15 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
17 #include "internal/opensubdiv_util.h"
18
19 #include <GL/glew.h>
20 #include <cstring>
21
22 #ifdef _MSC_VER
23 #  include <iso646.h>
24 #endif
25
26 namespace opensubdiv_capi {
27
28 void stringSplit(vector<string>* tokens,
29                  const string& str,
30                  const string& separators,
31                  bool skip_empty) {
32   size_t token_start = 0, token_length = 0;
33   for (size_t i = 0; i < str.length(); ++i) {
34     const char ch = str[i];
35     if (separators.find(ch) == string::npos) {
36       // Append non-separator char to a token.
37       ++token_length;
38     } else {
39       // Append current token to the list (if any).
40       if (token_length > 0 || !skip_empty) {
41         string token = str.substr(token_start, token_length);
42         tokens->push_back(token);
43       }
44       // Re-set token pointers,
45       token_start = i + 1;
46       token_length = 0;
47     }
48   }
49   // Append token which might be at the end of the string.
50   if ((token_length != 0) ||
51       (!skip_empty && token_start > 0 &&
52        separators.find(str[token_start-1]) != string::npos)) {
53     string token = str.substr(token_start, token_length);
54     tokens->push_back(token);
55   }
56 }
57
58 }  // namespace opensubdiv_capi