NVBIO
Main Page
Modules
Classes
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
nvbio
strings
string_set_transform.h
Go to the documentation of this file.
1
/*
2
* nvbio
3
* Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of the NVIDIA CORPORATION nor the
13
* names of its contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
20
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#pragma once
29
30
#include <
nvbio/strings/string.h
>
31
#include <
nvbio/strings/string_set.h
>
32
33
namespace
nvbio {
34
42
template
<
typename
StringSet,
typename
StringTransform>
43
struct
TransformStringSet
44
{
45
typedef
StringSet
string_set_type
;
46
typedef
StringTransform
transform_type
;
47
typedef
typename
transform_type::result_type
string_type
;
48
typedef
typename
string_type::symbol_type
symbol_type
;
49
typedef
typename
StringSet::system_tag
system_tag
;
50
51
typedef
StringSetIterator< TransformedStringSet<StringSet,StringTransform>
>
iterator
;
52
typedef
StringSetIterator< TransformedStringSet<StringSet,StringTransform>
>
const_iterator
;
53
56
NVBIO_FORCEINLINE
NVBIO_HOST_DEVICE
57
TransformStringSet
() {}
58
64
NVBIO_FORCEINLINE
NVBIO_HOST_DEVICE
65
TransformStringSet
(
66
const
StringSet string_set,
67
const
StringTransform
transform
) :
68
m_string_set( string_set ),
69
m_transform( transform ) {}
70
73
NVBIO_FORCEINLINE
NVBIO_HOST_DEVICE
74
uint32
size
()
const
{
return
m_string_set.size(); }
75
78
NVBIO_FORCEINLINE
NVBIO_HOST_DEVICE
79
string_type
operator[]
(
const
uint32
i)
const
80
{
81
return
m_transform( m_string_set[i] );
82
}
83
86
const_iterator
begin
()
const
{
return
const_iterator
(*
this
,0u); }
87
90
const_iterator
end
()
const
{
return
const_iterator
(*
this
,
size
()); }
91
94
iterator
begin
() {
return
iterator
(*
this
,0u); }
95
98
iterator
end
() {
return
iterator
(*
this
,
size
()); }
99
100
private
:
101
StringSet m_string_set;
102
StringTransform m_transform;
103
};
104
112
template
<
typename
StringSet,
typename
StringTransform>
113
TransformStringSet<StringSet,StringTransform>
make_transform_string_set
(
114
const
StringSet string_set,
115
const
StringTransform
transform
)
116
{
117
return
TransformStringSet<StringSet,StringTransform>
(
118
string_set,
119
transform
);
120
}
121
122
}
// namespace nvbio
Generated on Wed Feb 25 2015 08:33:02 for NVBIO by
1.8.4