Spresense SDK Library
v3.4.5-e9a4f17
Loading...
Searching...
No Matches
cpp_util.h
1
/****************************************************************************
2
* modules/include/memutils/os_utils/cpp_util.h
3
*
4
* Copyright 2018 Sony Semiconductor Solutions Corporation
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
*
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in
14
* the documentation and/or other materials provided with the
15
* distribution.
16
* 3. Neither the name of Sony Semiconductor Solutions Corporation nor
17
* the names of its contributors may be used to endorse or promote
18
* products derived from this software without specific prior written
19
* permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
****************************************************************************/
35
36
#ifndef CPP_UTIL_H_INCLUDED
37
#define CPP_UTIL_H_INCLUDED
38
#ifdef __cplusplus
39
40
//#include "chateau_assert.h"
41
43
// Copy guard class
44
//
45
class
CopyGuard {
46
protected
:
47
CopyGuard() {}
48
~CopyGuard() {}
49
private
:
50
CopyGuard(
const
CopyGuard&);
51
const
CopyGuard& operator=(
const
CopyGuard&);
52
};
// class CopyGuard
53
54
56
// Range checkable array class
57
// 範囲チェックを行うには、-DARRAY_ASSERT=CHATEAU_FATAL_ASSERTオプションでビルドする
58
//
59
#ifndef ARRAY_ASSERT
60
#define ARRAY_ASSERT(exp)
61
#endif
62
63
template
<
typename
T,
size_t
N>
64
class
Array
{
65
public
:
66
// 配列同様の初期化を可能にするため、publicとする
67
T m_elems[N];
68
public
:
69
typedef
T elem_type_t;
70
71
static
size_t
capacity() {
return
N; }
72
73
T& operator[](
size_t
index) {
74
ARRAY_ASSERT(index < N);
75
return
m_elems[index];
76
}
77
78
const
T& operator[](
size_t
index)
const
{
79
ARRAY_ASSERT(index < N);
80
return
m_elems[index];
81
}
82
};
// class Array
83
85
// Template functions
86
//
87
template
<
typename
T>
88
inline
const
T& Min(
const
T& a,
const
T& b) {
return
(a < b) ? a : b; }
89
90
template
<
typename
T>
91
inline
const
T& Max(
const
T& a,
const
T& b) {
return
(a > b) ? a : b; }
92
93
#endif
/* __cplusplus */
94
#endif
/* CPP_UTIL_H_INCLUDED */
95
/*
96
* $Log: $
97
*/
Array
Definition
cpp_util.h:64
spresense
sdk
modules
include
memutils
os_utils
cpp_util.h
Generated by
1.13.2