00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
#ifndef SHLIBCLAMP_HPP
00028
#define SHLIBCLAMP_HPP
00029
00030
#include "ShGeneric.hpp"
00031
#include "ShLib.hpp"
00032
00033
namespace SH {
00034
00035
00048
template<
int N,
typename T>
00049 ShGeneric<N, T>
abs(
const ShGeneric<N, T>& var);
00050
00055
template<
int N,
typename T>
00056 ShGeneric<N, T>
ceil(
const ShGeneric<N, T>& var);
00057
00062
template<
int N,
typename T>
00063 ShGeneric<N, T>
floor(
const ShGeneric<N, T>& var);
00064
00069
template<
int N,
typename T>
00070 ShGeneric<N, T>
round(
const ShGeneric<N, T>& var);
00071
00075
template<
int N,
typename T>
00076 ShGeneric<N, T>
mod(
const ShGeneric<N, T>& left,
const ShGeneric<N, T>& right);
00077
template<
int N,
typename T>
00078 ShGeneric<N, T>
mod(
const ShGeneric<N, T>& left,
const ShGeneric<1, T>& right);
00079
template<
typename T>
00080 ShGeneric<1, T>
mod(
const ShGeneric<1, T>& left,
const ShGeneric<1, T>& right);
00081
template<
int N,
typename T>
00082 ShGeneric<N, T> operator%(
const ShGeneric<N, T>& left,
const ShGeneric<N, T>& right);
00083
template<
int N,
typename T>
00084 ShGeneric<N, T> operator%(
const ShGeneric<N, T>& left,
const ShGeneric<1, T>& right);
00085
template<
typename T>
00086 ShGeneric<1, T> operator%(
const ShGeneric<1, T>& left,
const ShGeneric<1, T>& right);
00087
00088 SH_SHLIB_CONST_SCALAR_OP(mod);
00089 SH_SHLIB_CONST_N_OP_LEFT(mod);
00090 SH_SHLIB_CONST_SCALAR_OP(
operator%);
00091 SH_SHLIB_CONST_N_OP_LEFT(
operator%);
00092
00096
template<
int N,
typename T>
00097 ShGeneric<N, T>
frac(
const ShGeneric<N, T>& var);
00098
00103
template<
int N,
typename T>
00104 ShGeneric<N, T>
pos(
const ShGeneric<N, T>& x);
00105
00109
template<
int N,
typename T>
00110 ShGeneric<N, T>
max(
const ShGeneric<N, T>& left,
const ShGeneric<N, T>& right);
00111
00112 SH_SHLIB_CONST_SCALAR_OP(max);
00113
00117
template<
int N,
typename T>
00118 ShGeneric<N, T>
min(
const ShGeneric<N, T>& left,
const ShGeneric<N, T>& right);
00119
00120 SH_SHLIB_CONST_SCALAR_OP(min);
00121
00124
template<
int N,
typename T>
00125 ShGeneric<1, T>
max(
const ShGeneric<N, T>& a);
00126
00129
template<
int N,
typename T>
00130 ShGeneric<1, T>
min(
const ShGeneric<N, T>& a);
00131
00135
template<
int N,
typename T>
00136 ShGeneric<N, T>
clamp(
const ShGeneric<N, T>& a,
00137
const ShGeneric<N, T>& b,
const ShGeneric<N, T>& c);
00138
template<
int N,
typename T>
00139 ShGeneric<N, T>
clamp(
const ShGeneric<N, T>& a,
00140
const ShGeneric<1, T>& b,
const ShGeneric<1, T>& c);
00141
template<
typename T>
00142 ShGeneric<1, T>
clamp(
const ShGeneric<1, T>& a,
00143
const ShGeneric<1, T>& b,
const ShGeneric<1, T>& c);
00144
00145 SH_SHLIB_CONST_TRINARY_OP_011(clamp);
00146
00150
template<
int N,
typename T>
00151 ShGeneric<N, T>
sat(
const ShGeneric<N, T>& a);
00152
00158
template<
int N,
typename T>
00159 ShGeneric<N, T>
sign(
const ShGeneric<N, T>& var);
00160
00163 }
00164
00165
#include "ShLibClampImpl.hpp"
00166
00167
#endif