xsrange.h
Go to the documentation of this file.
1 
2 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification,
6 // are permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice,
9 // this list of conditions, and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice,
12 // this list of conditions, and the following disclaimer in the documentation
13 // and/or other materials provided with the distribution.
14 //
15 // 3. Neither the names of the copyright holders nor the names of their contributors
16 // may be used to endorse or promote products derived from this software without
17 // specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
24 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
26 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
28 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
29 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
30 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
31 //
32 
33 
34 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
35 // All rights reserved.
36 //
37 // Redistribution and use in source and binary forms, with or without modification,
38 // are permitted provided that the following conditions are met:
39 //
40 // 1. Redistributions of source code must retain the above copyright notice,
41 // this list of conditions, and the following disclaimer.
42 //
43 // 2. Redistributions in binary form must reproduce the above copyright notice,
44 // this list of conditions, and the following disclaimer in the documentation
45 // and/or other materials provided with the distribution.
46 //
47 // 3. Neither the names of the copyright holders nor the names of their contributors
48 // may be used to endorse or promote products derived from this software without
49 // specific prior written permission.
50 //
51 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
52 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
53 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
54 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
56 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
57 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
58 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
59 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
60 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
61 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
62 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
63 //
64 
65 #ifndef XSRANGE_H
66 #define XSRANGE_H
67 
68 #include "xstypesconfig.h"
69 
70 #ifdef __cplusplus
71 extern "C" {
72 #endif
73 #ifndef __cplusplus
74 #define XSRANGE_INITIALIZER { 0, -1 }
75 #endif
76 
77 struct XsRange;
78 
79 XSTYPES_DLL_API int XsRange_count(const struct XsRange* thisPtr);
80 XSTYPES_DLL_API int XsRange_contains(const struct XsRange* thisPtr, int i);
81 XSTYPES_DLL_API int XsRange_interval(const struct XsRange* thisPtr);
82 XSTYPES_DLL_API void XsRange_setRange(struct XsRange* thisPtr, int f, int l);
83 XSTYPES_DLL_API int XsRange_empty(const struct XsRange* thisPtr);
84 
85 #ifdef __cplusplus
86 } // extern "C"
87 #endif
88 
89 struct XsRange
90 {
91 #ifdef __cplusplus
92  inline explicit XsRange(int f = 0, int l = -1)
94  : m_first(f)
95  , m_last(l)
96  {}
97 
99  inline XsRange(const XsRange& other)
100  : m_first(other.m_first)
101  , m_last(other.m_last)
102  {}
103 
105  inline XsRange& operator = (const XsRange& other)
106  {
107  m_first = other.m_first;
108  m_last = other.m_last;
109  return *this;
110  }
111 
113  inline int count() const
114  {
115  return XsRange_count(this);
116  }
117 
119  inline int interval() const
120  {
121  return XsRange_interval(this);
122  }
123 
125  inline bool contains(int i) const
126  {
127  return 0 != XsRange_contains(this, i);
128  }
129 
131  inline void setRange(int f, int l)
132  {
133  m_first = f;
134  m_last = l;
135  }
136 
138  inline bool empty() const
139  {
140  return 0 != XsRange_empty(this);
141  }
142 
144  inline int first() const
145  {
146  return m_first;
147  }
148 
150  inline int last() const
151  {
152  return m_last;
153  }
154 
156  bool operator == (const XsRange& other) const
157  {
158  return m_first == other.m_first && m_last == other.m_last;
159  }
160 
162  bool operator < (const XsRange& other) const
163  {
164  return m_first < other.m_first;
165  }
166 
167 private:
168 #endif
169 
170  int m_first;
171  int m_last;
172 };
173 
174 typedef struct XsRange XsRange;
175 
176 #if defined(__cplusplus) && !defined(XSENS_NO_STL)
177 #include <ostream>
178 
179 template<typename _CharT, typename _Traits>
180 std::basic_ostream<_CharT, _Traits>& operator<<(std::basic_ostream<_CharT, _Traits>& o, XsRange const& xs)
181 {
182  return (o << "(" << xs.first() << ", " << xs.last() << "]");
183 }
184 #endif
185 
186 #endif
XsRange::m_first
int m_first
Storage for the lower end of the range.
Definition: xsrange.h:170
XsRange::XsRange_empty
int XsRange_empty(const XsRange *thisPtr)
Test if the range is empty.
Definition: xsrange.c:115
XsRange::XsRange_interval
int XsRange_interval(const XsRange *thisPtr)
Get the number of values in the range.
Definition: xsrange.c:91
XsRange::XsRange_setRange
void XsRange_setRange(XsRange *thisPtr, int f, int l)
Set a new range.
Definition: xsrange.c:105
f
f
XsRange
A class whose objects can be used to store a range. It provides method to check whether a value is in...
Definition: xsrange.h:89
operator==
bool operator==(const XsFilterProfile &lhs, const XsFilterProfile &rhs)
Returns true if lhs has the same type as rhs.
Definition: scenariomatchpred.h:81
XsRange::m_last
int m_last
Storage for the upper end of the range.
Definition: xsrange.h:171
xstypesconfig.h
XSTYPES_DLL_API
#define XSTYPES_DLL_API
Definition: xstypesconfig.h:65
XsRange
struct XsRange XsRange
Definition: xsrange.h:174
XsRange::XsRange_contains
int XsRange_contains(const XsRange *thisPtr, int i)
Test if the range contains the given value i.
Definition: xsrange.c:99
operator<<
std::ostream & operator<<(std::ostream &os, JlHexLogger< char > const &hex)
Definition: journaller.cpp:388
XsRange::XsRange_count
int XsRange_count(const XsRange *thisPtr)
Get the number of values in the range.
Definition: xsrange.c:80


xsens_mti_driver
Author(s):
autogenerated on Sun Sep 3 2023 02:43:20