From 444ca1a117a17b5c7449f3f847e669c71390390d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 19 May 2020 10:59:38 +0200 Subject: OpenSubdiv: Refactor, move utils to base Also split them across utilities and types. --- intern/opensubdiv/CMakeLists.txt | 6 +-- intern/opensubdiv/internal/base/edge_map.h | 2 +- intern/opensubdiv/internal/base/opensubdiv_capi.cc | 1 + intern/opensubdiv/internal/base/type.h | 47 +++++++++++++++++ intern/opensubdiv/internal/base/util.cc | 54 +++++++++++++++++++ intern/opensubdiv/internal/base/util.h | 33 ++++++++++++ .../internal/evaluator/evaluator_impl.cc | 2 +- intern/opensubdiv/internal/opensubdiv_util.cc | 61 ---------------------- intern/opensubdiv/internal/opensubdiv_util.h | 56 -------------------- .../internal/topology/topology_refiner_capi.cc | 2 +- .../internal/topology/topology_refiner_factory.cc | 2 +- 11 files changed, 142 insertions(+), 124 deletions(-) create mode 100644 intern/opensubdiv/internal/base/type.h create mode 100644 intern/opensubdiv/internal/base/util.cc create mode 100644 intern/opensubdiv/internal/base/util.h delete mode 100644 intern/opensubdiv/internal/opensubdiv_util.cc delete mode 100644 intern/opensubdiv/internal/opensubdiv_util.h (limited to 'intern') diff --git a/intern/opensubdiv/CMakeLists.txt b/intern/opensubdiv/CMakeLists.txt index da26c76aa30..4387daf40e4 100644 --- a/intern/opensubdiv/CMakeLists.txt +++ b/intern/opensubdiv/CMakeLists.txt @@ -54,8 +54,11 @@ if(WITH_OPENSUBDIV) internal/base/edge_map.h internal/base/memory.h internal/base/opensubdiv_capi.cc + internal/base/type.h internal/base/type_convert.cc internal/base/type_convert.h + internal/base/util.cc + internal/base/util.h # Device. internal/device/device_context_cuda.cc @@ -79,9 +82,6 @@ if(WITH_OPENSUBDIV) internal/topology/topology_refiner_factory.cc internal/topology/topology_refiner_impl.cc internal/topology/topology_refiner_impl.h - - internal/opensubdiv_util.cc - internal/opensubdiv_util.h ) list(APPEND LIB diff --git a/intern/opensubdiv/internal/base/edge_map.h b/intern/opensubdiv/internal/base/edge_map.h index eb70af2354c..da1ec5bd31b 100644 --- a/intern/opensubdiv/internal/base/edge_map.h +++ b/intern/opensubdiv/internal/base/edge_map.h @@ -19,7 +19,7 @@ #ifndef OPENSUBDIV_BASE_EDGE_MAP_H_ #define OPENSUBDIV_BASE_EDGE_MAP_H_ -#include "internal/opensubdiv_util.h" +#include "internal/base/type.h" namespace blender { namespace opensubdiv { diff --git a/intern/opensubdiv/internal/base/opensubdiv_capi.cc b/intern/opensubdiv/internal/base/opensubdiv_capi.cc index 1d0f23f3046..430acfd4497 100644 --- a/intern/opensubdiv/internal/base/opensubdiv_capi.cc +++ b/intern/opensubdiv/internal/base/opensubdiv_capi.cc @@ -20,6 +20,7 @@ # include #endif +#include "internal/base/util.h" #include "internal/device/device_context_cuda.h" #include "internal/device/device_context_glsl_compute.h" #include "internal/device/device_context_glsl_transform_feedback.h" diff --git a/intern/opensubdiv/internal/base/type.h b/intern/opensubdiv/internal/base/type.h new file mode 100644 index 00000000000..95c307bed6a --- /dev/null +++ b/intern/opensubdiv/internal/base/type.h @@ -0,0 +1,47 @@ +// Copyright 2013 Blender Foundation. All rights reserved. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +#ifndef OPENSUBDIV_BASE_TYPE_H_ +#define OPENSUBDIV_BASE_TYPE_H_ + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace blender { +namespace opensubdiv { + +using std::fill; +using std::make_pair; +using std::max; +using std::min; +using std::pair; +using std::stack; +using std::string; +using std::swap; +using std::unordered_map; +using std::vector; + +} // namespace opensubdiv +} // namespace blender + +#endif // OPENSUBDIV_BASE_TYPE_H_ diff --git a/intern/opensubdiv/internal/base/util.cc b/intern/opensubdiv/internal/base/util.cc new file mode 100644 index 00000000000..9c858ec3cda --- /dev/null +++ b/intern/opensubdiv/internal/base/util.cc @@ -0,0 +1,54 @@ +// Copyright 2013 Blender Foundation. All rights reserved. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +#include "internal/base/util.h" + +namespace blender { +namespace opensubdiv { + +void stringSplit(vector *tokens, + const string &str, + const string &separators, + bool skip_empty) +{ + size_t token_start = 0, token_length = 0; + for (size_t i = 0; i < str.length(); ++i) { + const char ch = str[i]; + if (separators.find(ch) == string::npos) { + // Append non-separator char to a token. + ++token_length; + } + else { + // Append current token to the list (if any). + if (token_length > 0 || !skip_empty) { + string token = str.substr(token_start, token_length); + tokens->push_back(token); + } + // Re-set token pointers. + token_start = i + 1; + token_length = 0; + } + } + // Append token which might be at the end of the string. + if ((token_length != 0) || + (!skip_empty && token_start > 0 && separators.find(str[token_start - 1]) != string::npos)) { + string token = str.substr(token_start, token_length); + tokens->push_back(token); + } +} + +} // namespace opensubdiv +} // namespace blender diff --git a/intern/opensubdiv/internal/base/util.h b/intern/opensubdiv/internal/base/util.h new file mode 100644 index 00000000000..4035ba7301a --- /dev/null +++ b/intern/opensubdiv/internal/base/util.h @@ -0,0 +1,33 @@ +// Copyright 2013 Blender Foundation. All rights reserved. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software Foundation, +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +#ifndef OPENSUBDIV_BASE_UTIL_H_ +#define OPENSUBDIV_BASE_UTIL_H_ + +#include "internal/base/type.h" + +namespace blender { +namespace opensubdiv { + +void stringSplit(vector *tokens, + const string &str, + const string &separators, + bool skip_empty); + +} // namespace opensubdiv +} // namespace blender + +#endif // OPENSUBDIV_BASE_UTIL_H_ diff --git a/intern/opensubdiv/internal/evaluator/evaluator_impl.cc b/intern/opensubdiv/internal/evaluator/evaluator_impl.cc index 5216903a169..341e8dbc233 100644 --- a/intern/opensubdiv/internal/evaluator/evaluator_impl.cc +++ b/intern/opensubdiv/internal/evaluator/evaluator_impl.cc @@ -37,7 +37,7 @@ #include "MEM_guardedalloc.h" -#include "internal/opensubdiv_util.h" +#include "internal/base/type.h" #include "internal/topology/topology_refiner_impl.h" #include "opensubdiv_topology_refiner_capi.h" diff --git a/intern/opensubdiv/internal/opensubdiv_util.cc b/intern/opensubdiv/internal/opensubdiv_util.cc deleted file mode 100644 index ea61b21e5d0..00000000000 --- a/intern/opensubdiv/internal/opensubdiv_util.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2013 Blender Foundation. All rights reserved. -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -#include "internal/opensubdiv_util.h" - -#include -#include - -#ifdef _MSC_VER -# include -#endif - -namespace blender { -namespace opensubdiv { - -void stringSplit(vector *tokens, - const string &str, - const string &separators, - bool skip_empty) -{ - size_t token_start = 0, token_length = 0; - for (size_t i = 0; i < str.length(); ++i) { - const char ch = str[i]; - if (separators.find(ch) == string::npos) { - // Append non-separator char to a token. - ++token_length; - } - else { - // Append current token to the list (if any). - if (token_length > 0 || !skip_empty) { - string token = str.substr(token_start, token_length); - tokens->push_back(token); - } - // Re-set token pointers, - token_start = i + 1; - token_length = 0; - } - } - // Append token which might be at the end of the string. - if ((token_length != 0) || - (!skip_empty && token_start > 0 && separators.find(str[token_start - 1]) != string::npos)) { - string token = str.substr(token_start, token_length); - tokens->push_back(token); - } -} - -} // namespace opensubdiv -} // namespace blender diff --git a/intern/opensubdiv/internal/opensubdiv_util.h b/intern/opensubdiv/internal/opensubdiv_util.h deleted file mode 100644 index 379ce20c479..00000000000 --- a/intern/opensubdiv/internal/opensubdiv_util.h +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 Blender Foundation. All rights reserved. -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software Foundation, -// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -#ifndef OPENSUBDIV_UTIL_H_ -#define OPENSUBDIV_UTIL_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace blender { -namespace opensubdiv { - -using std::fill; -using std::make_pair; -using std::max; -using std::min; -using std::pair; -using std::stack; -using std::string; -using std::swap; -using std::unordered_map; -using std::vector; - -#define STRINGIFY_ARG(x) "" #x -#define STRINGIFY_APPEND(a, b) "" a #b -#define STRINGIFY(x) STRINGIFY_APPEND("", x) - -void stringSplit(vector *tokens, - const string &str, - const string &separators, - bool skip_empty); - -} // namespace opensubdiv -} // namespace blender - -#endif // OPENSUBDIV_UTIL_H_ diff --git a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc index fbca43065b4..167d618804f 100644 --- a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc +++ b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc @@ -20,8 +20,8 @@ #include "MEM_guardedalloc.h" #include "internal/base/edge_map.h" +#include "internal/base/type.h" #include "internal/base/type_convert.h" -#include "internal/opensubdiv_util.h" #include "internal/topology/topology_refiner_impl.h" #include "opensubdiv_converter_capi.h" diff --git a/intern/opensubdiv/internal/topology/topology_refiner_factory.cc b/intern/opensubdiv/internal/topology/topology_refiner_factory.cc index b35b0cf1f82..1a51fce6e24 100644 --- a/intern/opensubdiv/internal/topology/topology_refiner_factory.cc +++ b/intern/opensubdiv/internal/topology/topology_refiner_factory.cc @@ -27,8 +27,8 @@ #include +#include "internal/base/type.h" #include "internal/base/type_convert.h" -#include "internal/opensubdiv_util.h" #include "opensubdiv_converter_capi.h" using blender::opensubdiv::min; -- cgit v1.2.3