Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
a6910313
Commit
a6910313
authored
Nov 26, 2017
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Queue: add "noexcept"
parent
2f32df1f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
39 deletions
+40
-39
Queue.cxx
src/queue/Queue.cxx
+11
-11
Queue.hxx
src/queue/Queue.hxx
+29
-28
No files found.
src/queue/Queue.cxx
View file @
a6910313
...
...
@@ -21,7 +21,7 @@
#include "Queue.hxx"
#include "DetachedSong.hxx"
Queue
::
Queue
(
unsigned
_max_length
)
Queue
::
Queue
(
unsigned
_max_length
)
noexcept
:
max_length
(
_max_length
),
items
(
new
Item
[
max_length
]),
order
(
new
unsigned
[
max_length
]),
...
...
@@ -29,7 +29,7 @@ Queue::Queue(unsigned _max_length)
{
}
Queue
::~
Queue
()
Queue
::~
Queue
()
noexcept
{
Clear
();
...
...
@@ -79,7 +79,7 @@ Queue::ModifyAtOrder(unsigned _order) noexcept
}
unsigned
Queue
::
Append
(
DetachedSong
&&
song
,
uint8_t
priority
)
Queue
::
Append
(
DetachedSong
&&
song
,
uint8_t
priority
)
noexcept
{
assert
(
!
IsFull
());
...
...
@@ -295,7 +295,7 @@ queue_sort_order_by_priority(Queue *queue,
}
void
Queue
::
ShuffleOrderRange
(
unsigned
start
,
unsigned
end
)
Queue
::
ShuffleOrderRange
(
unsigned
start
,
unsigned
end
)
noexcept
{
assert
(
random
);
assert
(
start
<=
end
);
...
...
@@ -310,7 +310,7 @@ Queue::ShuffleOrderRange(unsigned start, unsigned end)
* priority group.
*/
void
Queue
::
ShuffleOrderRangeWithPriority
(
unsigned
start
,
unsigned
end
)
Queue
::
ShuffleOrderRangeWithPriority
(
unsigned
start
,
unsigned
end
)
noexcept
{
assert
(
random
);
assert
(
start
<=
end
);
...
...
@@ -344,13 +344,13 @@ Queue::ShuffleOrderRangeWithPriority(unsigned start, unsigned end)
}
void
Queue
::
ShuffleOrder
()
Queue
::
ShuffleOrder
()
noexcept
{
ShuffleOrderRangeWithPriority
(
0
,
length
);
}
void
Queue
::
ShuffleOrderFirst
(
unsigned
start
,
unsigned
end
)
Queue
::
ShuffleOrderFirst
(
unsigned
start
,
unsigned
end
)
noexcept
{
rand
.
AutoCreate
();
...
...
@@ -359,7 +359,7 @@ Queue::ShuffleOrderFirst(unsigned start, unsigned end)
}
void
Queue
::
ShuffleOrderLast
(
unsigned
start
,
unsigned
end
)
Queue
::
ShuffleOrderLast
(
unsigned
start
,
unsigned
end
)
noexcept
{
rand
.
AutoCreate
();
...
...
@@ -368,7 +368,7 @@ Queue::ShuffleOrderLast(unsigned start, unsigned end)
}
void
Queue
::
ShuffleRange
(
unsigned
start
,
unsigned
end
)
Queue
::
ShuffleRange
(
unsigned
start
,
unsigned
end
)
noexcept
{
assert
(
start
<=
end
);
assert
(
end
<=
length
);
...
...
@@ -418,7 +418,7 @@ Queue::CountSamePriority(unsigned start_order, uint8_t priority) const noexcept
bool
Queue
::
SetPriority
(
unsigned
position
,
uint8_t
priority
,
int
after_order
,
bool
reorder
)
bool
reorder
)
noexcept
{
assert
(
position
<
length
);
...
...
@@ -478,7 +478,7 @@ Queue::SetPriority(unsigned position, uint8_t priority, int after_order,
bool
Queue
::
SetPriorityRange
(
unsigned
start_position
,
unsigned
end_position
,
uint8_t
priority
,
int
after_order
)
uint8_t
priority
,
int
after_order
)
noexcept
{
assert
(
start_position
<=
end_position
);
assert
(
end_position
<=
length
);
...
...
src/queue/Queue.hxx
View file @
a6910313
...
...
@@ -103,18 +103,18 @@ struct Queue {
/** random number generator for shuffle and random mode */
LazyRandomEngine
rand
;
explicit
Queue
(
unsigned
max_length
);
explicit
Queue
(
unsigned
max_length
)
noexcept
;
/**
* Deinitializes a queue object. It does not free the queue
* pointer itself.
*/
~
Queue
();
~
Queue
()
noexcept
;
Queue
(
const
Queue
&
)
=
delete
;
Queue
&
operator
=
(
const
Queue
&
)
=
delete
;
unsigned
GetLength
()
const
{
unsigned
GetLength
()
const
noexcept
{
assert
(
length
<=
max_length
);
return
length
;
...
...
@@ -123,14 +123,14 @@ struct Queue {
/**
* Determine if the queue is empty, i.e. there are no songs.
*/
bool
IsEmpty
()
const
{
bool
IsEmpty
()
const
noexcept
{
return
length
==
0
;
}
/**
* Determine if the maximum number of songs has been reached.
*/
bool
IsFull
()
const
{
bool
IsFull
()
const
noexcept
{
assert
(
length
<=
max_length
);
return
length
>=
max_length
;
...
...
@@ -139,23 +139,22 @@ struct Queue {
/**
* Is that a valid position number?
*/
bool
IsValidPosition
(
unsigned
position
)
const
{
bool
IsValidPosition
(
unsigned
position
)
const
noexcept
{
return
position
<
length
;
}
/**
* Is that a valid order number?
*/
bool
IsValidOrder
(
unsigned
_order
)
const
{
bool
IsValidOrder
(
unsigned
_order
)
const
noexcept
{
return
_order
<
length
;
}
int
IdToPosition
(
unsigned
id
)
const
{
int
IdToPosition
(
unsigned
id
)
const
noexcept
{
return
id_table
.
IdToPosition
(
id
);
}
int
PositionToId
(
unsigned
position
)
const
{
int
PositionToId
(
unsigned
position
)
const
noexcept
{
assert
(
position
<
length
);
return
items
[
position
].
id
;
...
...
@@ -187,20 +186,20 @@ struct Queue {
return
items
[
position
].
priority
;
}
const
Item
&
GetOrderItem
(
unsigned
i
)
const
{
const
Item
&
GetOrderItem
(
unsigned
i
)
const
noexcept
{
assert
(
IsValidOrder
(
i
));
return
items
[
OrderToPosition
(
i
)];
}
uint8_t
GetOrderPriority
(
unsigned
i
)
const
{
uint8_t
GetOrderPriority
(
unsigned
i
)
const
noexcept
{
return
GetOrderItem
(
i
).
priority
;
}
/**
* Returns the song at the specified position.
*/
DetachedSong
&
Get
(
unsigned
position
)
const
{
DetachedSong
&
Get
(
unsigned
position
)
const
noexcept
{
assert
(
position
<
length
);
return
*
items
[
position
].
song
;
...
...
@@ -209,7 +208,7 @@ struct Queue {
/**
* Returns the song at the specified order number.
*/
DetachedSong
&
GetOrder
(
unsigned
_order
)
const
{
DetachedSong
&
GetOrder
(
unsigned
_order
)
const
noexcept
{
return
Get
(
OrderToPosition
(
_order
));
}
...
...
@@ -217,7 +216,8 @@ struct Queue {
* Is the song at the specified position newer than the specified
* version?
*/
bool
IsNewerAtPosition
(
unsigned
position
,
uint32_t
_version
)
const
{
bool
IsNewerAtPosition
(
unsigned
position
,
uint32_t
_version
)
const
noexcept
{
assert
(
position
<
length
);
return
_version
>
version
||
...
...
@@ -245,7 +245,7 @@ struct Queue {
* IncrementVersion() after all modifications have been made.
* number.
*/
void
ModifyAtPosition
(
unsigned
position
)
{
void
ModifyAtPosition
(
unsigned
position
)
noexcept
{
assert
(
position
<
length
);
items
[
position
].
version
=
version
;
...
...
@@ -268,7 +268,7 @@ struct Queue {
*
* @param priority the priority of this new queue item
*/
unsigned
Append
(
DetachedSong
&&
song
,
uint8_t
priority
);
unsigned
Append
(
DetachedSong
&&
song
,
uint8_t
priority
)
noexcept
;
/**
* Swaps two songs, addressed by their position.
...
...
@@ -278,7 +278,7 @@ struct Queue {
/**
* Swaps two songs, addressed by their order number.
*/
void
SwapOrders
(
unsigned
order1
,
unsigned
order2
)
{
void
SwapOrders
(
unsigned
order1
,
unsigned
order2
)
noexcept
{
std
::
swap
(
order
[
order1
],
order
[
order2
]);
}
...
...
@@ -330,7 +330,7 @@ struct Queue {
/**
* Initializes the "order" array, and restores "normal" order.
*/
void
RestoreOrder
()
{
void
RestoreOrder
()
noexcept
{
for
(
unsigned
i
=
0
;
i
<
length
;
++
i
)
order
[
i
]
=
i
;
}
...
...
@@ -339,43 +339,44 @@ struct Queue {
* Shuffle the order of items in the specified range, ignoring
* their priorities.
*/
void
ShuffleOrderRange
(
unsigned
start
,
unsigned
end
);
void
ShuffleOrderRange
(
unsigned
start
,
unsigned
end
)
noexcept
;
/**
* Shuffle the order of items in the specified range, taking their
* priorities into account.
*/
void
ShuffleOrderRangeWithPriority
(
unsigned
start
,
unsigned
end
);
void
ShuffleOrderRangeWithPriority
(
unsigned
start
,
unsigned
end
)
noexcept
;
/**
* Shuffles the virtual order of songs, but does not move them
* physically. This is used in random mode.
*/
void
ShuffleOrder
();
void
ShuffleOrder
()
noexcept
;
void
ShuffleOrderFirst
(
unsigned
start
,
unsigned
end
);
void
ShuffleOrderFirst
(
unsigned
start
,
unsigned
end
)
noexcept
;
/**
* Shuffles the virtual order of the last song in the specified
* (order) range. This is used in random mode after a song has been
* appended by queue_append().
*/
void
ShuffleOrderLast
(
unsigned
start
,
unsigned
end
);
void
ShuffleOrderLast
(
unsigned
start
,
unsigned
end
)
noexcept
;
/**
* Shuffles a (position) range in the queue. The songs are physically
* shuffled, not by using the "order" mapping.
*/
void
ShuffleRange
(
unsigned
start
,
unsigned
end
);
void
ShuffleRange
(
unsigned
start
,
unsigned
end
)
noexcept
;
bool
SetPriority
(
unsigned
position
,
uint8_t
priority
,
int
after_order
,
bool
reorder
=
true
);
bool
reorder
=
true
)
noexcept
;
bool
SetPriorityRange
(
unsigned
start_position
,
unsigned
end_position
,
uint8_t
priority
,
int
after_order
);
uint8_t
priority
,
int
after_order
)
noexcept
;
private
:
void
MoveItemTo
(
unsigned
from
,
unsigned
to
)
{
void
MoveItemTo
(
unsigned
from
,
unsigned
to
)
noexcept
{
unsigned
from_id
=
items
[
from
].
id
;
items
[
to
]
=
items
[
from
];
...
...
Write
Preview
Markdown
is supported
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