OpenDDS
Snapshot(2023/04/28-20:55)
dds
DCPS
FibonacciSequence.h
Go to the documentation of this file.
1
#ifndef OPENDDS_DCPS_FIBONACCI_SEQUENCE_H
2
#define OPENDDS_DCPS_FIBONACCI_SEQUENCE_H
3
4
#if !defined (ACE_LACKS_PRAGMA_ONCE)
5
# pragma once
6
#endif
/* ACE_LACKS_PRAGMA_ONCE */
7
8
OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
9
10
namespace
OpenDDS
{
11
namespace
DCPS {
12
13
template
<
typename
T>
14
class
FibonacciSequence
15
{
16
public
:
17
explicit
FibonacciSequence
(
const
T& f1,
const
T& f1_minus_1 = T(0))
18
:
f_n_
(f1)
19
,
f_n_minus_1_
(f1_minus_1)
20
{}
21
22
T
get
()
const
23
{
24
return
f_n_
;
25
}
26
27
void
advance
(
const
T& fmax = T(0))
28
{
29
const
T f_n_plus_1 =
f_n_minus_1_
+
f_n_
;
30
f_n_minus_1_
=
f_n_
;
31
f_n_ = f_n_plus_1;
32
if
(fmax != T(0)) {
33
f_n_ = (std::min)(f_n_, fmax);
34
}
35
}
36
37
void
set
(
const
T& f1,
const
T& f1_minus_1 = T(0))
38
{
39
f_n_
= f1;
40
f_n_minus_1_
= f1_minus_1;
41
}
42
43
private
:
44
T
f_n_
;
45
T
f_n_minus_1_
;
46
};
47
48
}
// namespace DCPS
49
}
// namespace OpenDDS
50
51
OPENDDS_END_VERSIONED_NAMESPACE_DECL
52
53
#endif
OpenDDS::DCPS::FibonacciSequence
Definition:
FibonacciSequence.h:14
OpenDDS::DCPS::FibonacciSequence::FibonacciSequence
FibonacciSequence(const T &f1, const T &f1_minus_1=T(0))
Definition:
FibonacciSequence.h:17
OPENDDS_END_VERSIONED_NAMESPACE_DECL
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
Definition:
Versioned_Namespace.h:48
OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
Definition:
Hash.cpp:17
OpenDDS::DCPS::FibonacciSequence::advance
void advance(const T &fmax=T(0))
Definition:
FibonacciSequence.h:27
OpenDDS::DCPS::FibonacciSequence::f_n_minus_1_
T f_n_minus_1_
Definition:
FibonacciSequence.h:45
OpenDDS::DCPS::FibonacciSequence::f_n_
T f_n_
Definition:
FibonacciSequence.h:44
OpenDDS
The Internal API and Implementation of OpenDDS.
Definition:
AddressCache.h:28
Generated by
1.8.13