RTI Connext Micro
Version 2.4.1.0
Main Page
RTI Connext Micro Documentation
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
reda_sequenceNumber_impl.h
Go to the documentation of this file.
1
/*
2
* FILE: reda_sequenceNumber_impl.h - Sequence Number implementation
3
*
4
* Copyright 2012-2014 Real-Time Innovations, Inc.
5
*
6
* No duplications, whole or partial, manual or electronic, may be made
7
* without express written permission. Any such copies, or
8
* revisions thereof, must display this notice unaltered.
9
* This code contains trade secrets of Real-Time Innovations, Inc.
10
*
11
* Modification History
12
* --------------------
13
* 20apr2012,tk Written
14
*/
15
/*ce
16
* \file
17
*/
18
#ifndef reda_sequenceNumber_impl_h
19
#define reda_sequenceNumber_impl_h
20
21
#define REDA_SequenceNumber_set_zero(sequenceNumber) \
22
(sequenceNumber)->high = 0; \
23
(sequenceNumber)->low = 0
24
25
#define REDA_SequenceNumber_set_maximum(sequenceNumber) \
26
(sequenceNumber)->high = REDA_SEQUENCE_NUMBER_HIGH_MAX; \
27
(sequenceNumber)->low = REDA_SEQUENCE_NUMBER_LOW_MAX
28
29
#define REDA_SequenceNumber_compare(sequenceNumber1, sequenceNumber2) \
30
((((sequenceNumber1)->high) > ((sequenceNumber2)->high)) ? 1 : \
31
((((sequenceNumber1)->high) < ((sequenceNumber2)->high)) ? -1 : \
32
((((sequenceNumber1)->low) > ((sequenceNumber2)->low)) ? 1 : \
33
((((sequenceNumber1)->low) < ((sequenceNumber2)->low)) ? -1 : 0))))
34
35
#define REDA_SequenceNumber_is_unknown(sn_) \
36
(((sn_)->high == (RTI_INT32)0xffffffff) && \
37
((sn_)->low == (RTI_UINT32)0xffffffff))
38
39
#define REDA_SequenceNumber_is_zero(sn_) \
40
(((sn_)->high == 0) && ((sn_)->low == 0))
41
42
#define REDA_SequenceNumber_add(answer, sn1, sn2) \
43
{ \
44
(answer)->high = (sn1)->high + (sn2)->high; \
45
(answer)->low = (sn1)->low + (sn2)->low; \
46
if (((answer)->low < (sn1)->low) || ((answer)->low < (sn2)->low)) { \
47
++(answer)->high; \
48
} \
49
}
50
51
#define REDA_SequenceNumber_subtract(answer, sn1, sn2) \
52
{ \
53
(answer)->high = (sn1)->high - (sn2)->high; \
54
(answer)->low = (sn1)->low - (sn2)->low; \
55
if ((answer)->low > (sn1)->low) { \
56
--(answer)->high; \
57
} \
58
}
59
60
#define REDA_SequenceNumber_plusplus(sequenceNumber) \
61
((++(sequenceNumber)->low) == 0) ? ++(sequenceNumber)->high : 0
62
63
#define REDA_SequenceNumber_minusminus(sequenceNumber) \
64
{ \
65
RTI_UINT32 originalLow = (sequenceNumber)->low; \
66
--(sequenceNumber)->low; \
67
if (((sequenceNumber)->low > originalLow)) { --(sequenceNumber)->high; } \
68
}
69
70
#define REDA_SequenceNumber_increment(answer, sequenceNumber) \
71
{ \
72
RTI_UINT32 currentLow = (answer)->low; \
73
(answer)->high += (sequenceNumber)->high; \
74
(answer)->low += (sequenceNumber)->low; \
75
if (((answer)->low < (sequenceNumber)->low) || \
76
((answer)->low < currentLow)) { \
77
++(answer)->high; \
78
} \
79
}
80
81
#define REDA_SequenceNumber_decrement(answer, sequenceNumber) \
82
{ \
83
RTI_UINT32 currentLow = (answer)->low; \
84
(answer)->high -= (sequenceNumber)->high; \
85
(answer)->low -= (sequenceNumber)->low; \
86
if (((answer)->low > currentLow)) { --(answer)->high; } \
87
}
88
89
#define REDA_SequenceNumber_max(answer, sn1, sn2) \
90
{ \
91
if (REDA_SequenceNumber_compare((sn1), (sn2)) > 0) { \
92
(answer)->high = (sn1)->high; (answer)->low = (sn1)->low; \
93
} else { \
94
(answer)->high = (sn2)->high; (answer)->low = (sn2)->low; \
95
} \
96
}
97
98
#define REDA_SequenceNumber_min(answer, sn1, sn2) \
99
{ \
100
if (REDA_SequenceNumber_compare((sn1), (sn2)) < 0) { \
101
(answer)->high = (sn1)->high; (answer)->low = (sn1)->low; \
102
} else { \
103
(answer)->high = (sn2)->high; (answer)->low = (sn2)->low; \
104
} \
105
}
106
107
108
#endif
/* reda_sequenceNumber_impl_h */
RTI Connext Micro Version 2.4.1.0
Copyright © Thu Nov 20 2014
Real-Time Innovations, Inc