Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dune-common
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Core Modules
dune-common
Commits
a5e088e9
Commit
a5e088e9
authored
14 years ago
by
Martin Nolte
Browse files
Options
Downloads
Patches
Plain Diff
input for tuples
[[Imported from SVN: r6297]]
parent
f7423c7c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
dune/common/tuples.hh
+121
-4
121 additions, 4 deletions
dune/common/tuples.hh
with
121 additions
and
4 deletions
dune/common/tuples.hh
+
121
−
4
View file @
a5e088e9
...
...
@@ -4,7 +4,8 @@
#ifndef DUNE_TUPLES_HH
#define DUNE_TUPLES_HH
#include
<ostream>
#include
<iostream>
#include
"typetraits.hh"
#include
"static_assert.hh"
...
...
@@ -614,7 +615,21 @@ namespace Dune {
template
<
class
T
>
static
std
::
ostream
&
put
(
std
::
ostream
&
os
,
const
T
&
t
,
const
char
*
delim
=
", "
)
{
return
tuple_writer
<
i
-
1
>::
put
(
os
,
t
,
delim
)
<<
delim
<<
get
<
i
-
1
>
(
t
);
return
tuple_writer
<
i
-
1
>::
put
(
os
,
t
,
delim
)
<<
delim
<<
Dune
::
get
<
i
-
1
>
(
t
);
}
template
<
class
T
>
static
std
::
istream
&
get
(
std
::
istream
&
is
,
T
&
t
,
const
char
*
delim
=
","
)
{
tuple_writer
<
i
-
1
>::
get
(
is
,
t
,
delim
);
for
(
const
char
*
it
=
delim
;
is
&&
(
*
it
!=
0
);
++
it
)
{
char
c
=
0
;
is
>>
c
;
if
(
c
!=
*
it
)
is
.
setstate
(
std
::
ios
::
failbit
);
}
return
is
>>
Dune
::
get
<
i
-
1
>
(
t
);
}
};
...
...
@@ -624,7 +639,13 @@ namespace Dune {
template
<
class
T
>
static
std
::
ostream
&
put
(
std
::
ostream
&
os
,
const
T
&
t
,
const
char
*
delim
=
", "
)
{
return
os
<<
get
<
0
>
(
t
);
return
os
<<
Dune
::
get
<
0
>
(
t
);
}
template
<
class
T
>
static
std
::
istream
&
get
(
std
::
istream
&
is
,
T
&
t
,
const
char
*
delim
=
", "
)
{
return
is
>>
Dune
::
get
<
0
>
(
t
);
}
};
...
...
@@ -636,6 +657,12 @@ namespace Dune {
{
return
os
;
}
template
<
class
T
>
static
std
::
istream
&
get
(
std
::
istream
&
is
,
T
&
t
,
const
char
*
delim
=
", "
)
{
return
is
;
}
};
#if defined HAVE_TUPLE || defined HAVE_TR1_TUPLE
...
...
@@ -715,6 +742,81 @@ namespace Dune {
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
put
(
os
,
t
);
}
/**
* \brief Read a tuple.
*/
template
<
typename
T1
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
>
&
t
)
{
typedef
tuple
<
T1
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
>
&
t
)
{
typedef
tuple
<
T1
,
T2
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
template
<
typename
T1
,
typename
T2
,
typename
T3
,
typename
T4
,
typename
T5
,
typename
T6
,
typename
T7
,
typename
T8
,
typename
T9
,
typename
T10
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
&
t
)
{
typedef
tuple
<
T1
,
T2
,
T3
,
T4
,
T5
,
T6
,
T7
,
T8
,
T9
,
T10
>
TupleT
;
return
tuple_writer
<
tuple_size
<
TupleT
>::
value
>::
get
(
is
,
t
);
}
#else
/**
* @brief Equality comparison operator for tuples.
...
...
@@ -848,7 +950,7 @@ namespace Dune {
}
/**
* @brief Print a
a
pair or
tuple.
* @brief Print a pair or tuple.
*/
template
<
typename
T1
,
typename
T2
>
inline
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
Pair
<
T1
,
T2
>&
pair
)
...
...
@@ -864,6 +966,21 @@ namespace Dune {
return
os
;
}
/**
* @brief Read a pair or tuple.
*/
template
<
typename
T1
,
typename
T2
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
Pair
<
T1
,
T2
>&
pair
)
{
return
is
>>
pair
.
first
()
>>
pair
.
second
();
}
template
<
typename
T1
>
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
is
,
Pair
<
T1
,
Nil
>&
pair
)
{
return
is
>>
pair
.
first
();
}
template
<
class
T1
>
inline
tuple
<
T1
&>
tie
(
T1
&
t1
)
{
return
tuple
<
T1
&>
(
t1
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment