Sierra Toolkit
Version of the Day
NamedPair.hpp
1
/*------------------------------------------------------------------------*/
2
/* Copyright 2010 Sandia Corporation. */
3
/* Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive */
4
/* license for use of this work by or on behalf of the U.S. Government. */
5
/* Export of this program may require a license from the */
6
/* United States Government. */
7
/*------------------------------------------------------------------------*/
8
9
#ifndef stk_util_util_NamedPair_hpp
10
#define stk_util_util_NamedPair_hpp
11
12
#define NAMED_PAIR( STRUCT_NAME , FIRST_TYPE , FIRST_NAME , SECOND_TYPE , SECOND_NAME ) \
13
struct STRUCT_NAME { \
14
typedef FIRST_TYPE first_type; \
15
typedef SECOND_TYPE second_type; \
16
\
17
first_type FIRST_NAME ; \
18
second_type SECOND_NAME ; \
19
\
20
STRUCT_NAME ( const first_type & arg_ ## FIRST_NAME , \
21
const second_type & arg_ ## SECOND_NAME ) \
22
: FIRST_NAME ( arg_ ## FIRST_NAME ) , \
23
SECOND_NAME ( arg_ ## SECOND_NAME ) {} \
24
\
25
~ STRUCT_NAME () {} \
26
STRUCT_NAME () {} \
27
STRUCT_NAME ( const STRUCT_NAME & arg_rhs ) \
28
: FIRST_NAME ( arg_rhs. FIRST_NAME ) , \
29
SECOND_NAME ( arg_rhs. SECOND_NAME ) {} \
30
STRUCT_NAME & operator = ( const STRUCT_NAME & arg_rhs ) \
31
{ FIRST_NAME = arg_rhs. FIRST_NAME ; \
32
SECOND_NAME = arg_rhs. SECOND_NAME ; \
33
return *this ; } \
34
}; \
35
\
36
inline \
37
bool operator == ( const STRUCT_NAME & arg_lhs , \
38
const STRUCT_NAME & arg_rhs ) \
39
{ return arg_lhs. FIRST_NAME == arg_rhs. FIRST_NAME && \
40
arg_lhs. SECOND_NAME == arg_rhs. SECOND_NAME ; } \
41
\
42
inline \
43
bool operator != ( const STRUCT_NAME & arg_lhs , \
44
const STRUCT_NAME & arg_rhs ) \
45
{ return arg_lhs. FIRST_NAME != arg_rhs. FIRST_NAME || \
46
arg_lhs. SECOND_NAME != arg_rhs. SECOND_NAME ; } \
47
\
48
inline \
49
bool operator < ( const STRUCT_NAME & arg_lhs , \
50
const STRUCT_NAME & arg_rhs ) \
51
{ return arg_lhs. FIRST_NAME < arg_rhs. FIRST_NAME || \
52
( ! ( arg_rhs. FIRST_NAME < arg_lhs. FIRST_NAME ) && \
53
arg_lhs. SECOND_NAME < arg_rhs. SECOND_NAME ) ; } \
54
\
55
inline \
56
bool operator > ( const STRUCT_NAME & arg_lhs , \
57
const STRUCT_NAME & arg_rhs ) \
58
{ return operator < ( arg_rhs , arg_lhs ); } \
59
60
#endif
61
stk_util
stk_util
util
NamedPair.hpp
Generated by
1.8.14