1 #ifndef CARMA_UTIL_CORBASEQUENCEUTILS_H
2 #define CARMA_UTIL_CORBASEQUENCEUTILS_H
8 #include "carma/corba/corba.h"
9 #include "carma/util/SeqTypedefs.h"
15 template <
typename T,
typename S >
16 void assignVectorToSequence( const ::std::vector< T > & tVector,
19 template <
typename T,
typename S >
20 void assignSetToSequence( const ::std::set< T > & tSet,
23 template <
typename T,
typename S >
24 void assignMultisetToSequence( const ::std::multiset< T > & tMultiset,
27 template <
typename S,
typename T >
28 void assignSequenceToVector(
const S & sequence,
29 ::std::vector< T > & tVector );
31 void assignSequenceToVector(
33 ::std::vector< std::string > & tVector );
35 template <
typename S,
typename T >
36 void assignSequenceToSet(
const S & sequence,
37 ::std::set< T > & tSet);
39 template <
typename S,
typename T >
40 S convertVectorToSequence( const ::std::vector< T > & tVector );
43 template <
typename S,
typename T >
44 S convertSetToSequence( const ::std::set< T > & tSet );
47 template <
typename S,
typename T >
48 S convertMultisetToSequence( const ::std::multiset< T > & tMultiset );
51 template <
typename T,
typename S >
52 ::std::vector< T > convertSequenceToVector(
const S & sequence );
54 template <
typename T,
typename S >
55 ::std::set< T > convertSequenceToSet(
const S & sequence );
63 template <
typename T,
typename S >
65 carma::util::assignVectorToSequence( const ::std::vector< T > & tVector,
68 const typename ::std::vector< T >::size_type count = tVector.size();
70 sequence.length( count );
72 typename ::std::vector< T >::const_iterator i = tVector.begin();
73 const typename ::std::vector< T >::const_iterator iEnd = tVector.end();
75 for ( CORBA::Long j = 0; i != iEnd; ++j, ++i )
80 template <
typename T,
typename S >
82 carma::util::assignSetToSequence( const ::std::set< T > & tSet,
85 const typename ::std::set< T >::size_type count = tSet.size();
87 sequence.length( count );
89 typename ::std::set< T >::const_iterator i = tSet.begin();
90 const typename ::std::set< T >::const_iterator iEnd = tSet.end();
92 for ( CORBA::Long j = 0; i != iEnd; ++j, ++i )
97 template <
typename T,
typename S >
99 carma::util::assignMultisetToSequence( const ::std::multiset< T > & tMultiset,
102 const typename ::std::multiset< T >::size_type count = tMultiset.size();
104 sequence.length( count );
106 typename ::std::multiset< T >::const_iterator i = tMultiset.begin();
107 const typename ::std::multiset< T >::const_iterator iEnd = tMultiset.end();
109 for ( CORBA::Long j = 0; i != iEnd; ++j, ++i )
114 template <
typename S,
typename T >
116 carma::util::assignSequenceToVector(
const S & sequence,
117 ::std::vector< T > & tVector )
119 const CORBA::Long count = sequence.length();
122 tVector.reserve( count );
124 for ( CORBA::Long i = 0; i < count; ++i )
125 tVector.push_back( sequence[ i ] );
128 template <
typename S,
typename T >
130 carma::util::assignSequenceToSet(
const S & sequence,
131 ::std::set< T > & tSet )
133 const CORBA::Long count = sequence.length();
137 for ( CORBA::Long i = 0; i < count; ++i )
138 tSet.insert( sequence[ i ] );
142 template <
typename S,
typename T >
144 carma::util::convertVectorToSequence( const ::std::vector< T > & tVector )
148 assignVectorToSequence( tVector, result );
154 template <
typename S,
typename T >
156 carma::util::convertSetToSequence( const ::std::set< T > & tSet )
160 assignSetToSequence( tSet, result );
166 template <
typename S,
typename T >
168 carma::util::convertMultisetToSequence( const ::std::multiset< T > & tMultiset )
172 assignMultisetToSequence( tMultiset, result );
178 template <
typename T,
typename S >
180 carma::util::convertSequenceToVector(
const S & sequence )
182 ::std::vector< T > result;
184 assignSequenceToVector( sequence, result );
189 template <
typename T,
typename S >
191 carma::util::convertSequenceToSet(
const S & sequence )
193 ::std::set< T > result;
195 assignSequenceToSet( sequence, result );
sequence< string > SeqString
Sequence of CORBA::String.