colon.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // This file is part of libigl, a simple c++ geometry processing library.
  2. //
  3. // Copyright (C) 2013 Alec Jacobson <[email protected]>
  4. //
  5. // This Source Code Form is subject to the terms of the Mozilla Public License
  6. // v. 2.0. If a copy of the MPL was not distributed with this file, You can
  7. // obtain one at http://mozilla.org/MPL/2.0/.
  8. #include "colon.h"
  9. #include "LinSpaced.h"
  10. #include <cstdio>
  11. template <typename L,typename S,typename H,typename T>
  12. IGL_INLINE void igl::colon(
  13. const L low,
  14. const S step,
  15. const H hi,
  16. Eigen::Matrix<T,Eigen::Dynamic,1> & I)
  17. {
  18. const H size = ((hi-low)/step)+1;
  19. I = igl::LinSpaced<Eigen::Matrix<T,Eigen::Dynamic,1> >(size,low,low+step*(size-1));
  20. }
  21. template <typename L,typename H,typename T>
  22. IGL_INLINE void igl::colon(
  23. const L low,
  24. const H hi,
  25. Eigen::Matrix<T,Eigen::Dynamic,1> & I)
  26. {
  27. return igl::colon(low,(T)1,hi,I);
  28. }
  29. template <typename T,typename L,typename H>
  30. IGL_INLINE Eigen::Matrix<T,Eigen::Dynamic,1> igl::colon(
  31. const L low,
  32. const H hi)
  33. {
  34. Eigen::Matrix<T,Eigen::Dynamic,1> I;
  35. igl::colon(low,hi,I);
  36. return I;
  37. }
  38. #ifdef IGL_STATIC_LIBRARY
  39. // Explicit template instantiation
  40. // generated by autoexplicit.sh
  41. template Eigen::Matrix<int, -1, 1, 0, -1, 1> igl::colon<int, int, int>(int, int);
  42. template Eigen::Matrix<int, -1, 1, 0, -1, 1> igl::colon<int, int, long>(int, long);
  43. template Eigen::Matrix<int, -1, 1, 0, -1, 1> igl::colon<int, int, long long int>(int, long long int);
  44. template Eigen::Matrix<double, -1, 1, 0, -1, 1> igl::colon<double, double, double>(double, double);
  45. template void igl::colon<int, long, double>(int, long, Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  46. // generated by autoexplicit.sh
  47. template void igl::colon<int, long, int, int>(int, long, int, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  48. template void igl::colon<int, int, long, int>(int, int, long, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  49. template void igl::colon<int, long, int>(int, long, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  50. template void igl::colon<int, int, int>(int, int, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  51. template void igl::colon<int, long long int, int>(int, long long int, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  52. template void igl::colon<int, int, int, int>(int, int, int, Eigen::Matrix<int, -1, 1, 0, -1, 1> &);
  53. template void igl::colon<int, long, long>(int, long, Eigen::Matrix<long, -1, 1, 0, -1, 1> &);
  54. template void igl::colon<int, double, double, double>(int, double, double, Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  55. template void igl::colon<double, double, double>(double, double, Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  56. template void igl::colon<double, double, double, double>(double, double, double, Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  57. template void igl::colon<int, int, long>(int, int, Eigen::Matrix<long, -1, 1, 0, -1, 1> &);
  58. template void igl::colon<int, int, double>(int, int, Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  59. #ifdef WIN32
  60. template void igl::colon<int, __int64, double>(int, __int64, class Eigen::Matrix<double, -1, 1, 0, -1, 1> &);
  61. template void igl::colon<int, long long, long>(int, long long, class Eigen::Matrix<long, -1, 1, 0, -1, 1> &);
  62. template void igl::colon<int, __int64, __int64>(int, __int64, class Eigen::Matrix<__int64, -1, 1, 0, -1, 1> &);
  63. #endif
  64. #endif