CNORXZ
Container with Native Operation Routines and Expressions
Loading...
Searching...
No Matches
basic_operations.h
Go to the documentation of this file.
1// -*- C++ -*-
12#ifndef __cxz_basic_operations_h__
13#define __cxz_basic_operations_h__
14
15#include "base/base.h"
16#include "operation.h"
17
18namespace CNORXZ
19{
20 // standard operations:
21 // unary:
22
23 template <class Op>
24 constexpr decltype(auto) minus(const COpInterface<Op>& op);
25
26 // binary:
27
28 template <class Op1, class Op2>
29 constexpr decltype(auto) plus(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
30
31 template <class Op1, class Op2>
32 constexpr decltype(auto) minus(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
33
34 template <class Op1, class Op2>
35 constexpr decltype(auto) multiplies(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
36
37 template <class Op1, class Op2>
38 constexpr decltype(auto) divides(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
39
40 template <class Op1, class Op2>
41 constexpr decltype(auto) modulo(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
42
43 // operators for standard operations:
44
45 template <class Op>
46 constexpr decltype(auto) operator-(const COpInterface<Op>& op);
47
48 template <class Op1, class Op2>
49 constexpr decltype(auto) operator+(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
50
51 template <class Op1, class Op2>
52 constexpr decltype(auto) operator-(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
53
54 template <class Op1, class Op2>
55 constexpr decltype(auto) operator*(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
56
57 template <class Op1, class Op2>
58 constexpr decltype(auto) operator/(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
59
60 template <class Op1, class Op2>
61 constexpr decltype(auto) operator%(const COpInterface<Op1>& op1, const COpInterface<Op2>& op2);
62
63}
64
65#endif
basic headers
constexpr decltype(auto) multiplies(const COpInterface< Op1 > &op1, const COpInterface< Op2 > &op2)
constexpr decltype(auto) minus(const COpInterface< Op > &op)
constexpr decltype(auto) modulo(const COpInterface< Op1 > &op1, const COpInterface< Op2 > &op2)
Sptr< Range > rangeCast(const RangePtr r)
constexpr decltype(auto) divides(const COpInterface< Op1 > &op1, const COpInterface< Op2 > &op2)
constexpr decltype(auto) plus(const COpInterface< Op1 > &op1, const COpInterface< Op2 > &op2)
Operation main header.