Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Zeeshan Ali
gstreamer-rs
Commits
95c9f925
Commit
95c9f925
authored
Dec 20, 2017
by
Sebastian Dröge
🍵
Browse files
Add StreamCollection::iter()
parent
67a46b3b
Changes
2
Hide whitespace changes
Inline
Side-by-side
gstreamer/src/lib.rs
View file @
95c9f925
...
...
@@ -125,6 +125,8 @@ pub use enums::{ClockError, ClockSuccess, FlowError, FlowSuccess, PadLinkError,
pub
use
clock_time
::
ClockTime
;
mod
plugin
;
#[cfg(any(feature
=
"v1_10"
,
feature
=
"dox"
))]
pub
mod
stream_collection
;
mod
typefind
;
pub
use
typefind
::
*
;
...
...
gstreamer/src/stream_collection.rs
0 → 100644
View file @
95c9f925
// Copyright (C) 2017 Sebastian Dröge <sebastian@centricular.com>
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use
StreamCollection
;
use
Stream
;
pub
struct
Iter
<
'a
>
{
collection
:
&
'a
StreamCollection
,
idx
:
u32
,
size
:
u32
,
}
impl
<
'a
>
Iter
<
'a
>
{
fn
new
(
collection
:
&
'a
StreamCollection
)
->
Iter
<
'a
>
{
skip_assert_initialized!
();
Iter
{
collection
:
collection
,
idx
:
0
,
size
:
collection
.len
()
as
u32
,
}
}
}
impl
<
'a
>
Iterator
for
Iter
<
'a
>
{
type
Item
=
Stream
;
fn
next
(
&
mut
self
)
->
Option
<
Self
::
Item
>
{
if
self
.idx
>=
self
.size
{
return
None
;
}
let
item
=
self
.collection
.get_stream
(
self
.idx
);
self
.idx
+=
1
;
item
}
fn
size_hint
(
&
self
)
->
(
usize
,
Option
<
usize
>
)
{
if
self
.idx
==
self
.size
{
return
(
0
,
Some
(
0
));
}
let
remaining
=
(
self
.size
-
self
.idx
)
as
usize
;
(
remaining
,
Some
(
remaining
))
}
}
impl
<
'a
>
DoubleEndedIterator
for
Iter
<
'a
>
{
fn
next_back
(
&
mut
self
)
->
Option
<
Self
::
Item
>
{
if
self
.idx
==
self
.size
{
return
None
;
}
self
.size
-=
1
;
self
.collection
.get_stream
(
self
.size
)
}
}
impl
<
'a
>
ExactSizeIterator
for
Iter
<
'a
>
{}
impl
StreamCollection
{
pub
fn
iter
(
&
self
)
->
Iter
{
Iter
::
new
(
self
)
}
pub
fn
len
(
&
self
)
->
usize
{
self
.get_size
()
as
usize
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment