From ee7608726d3b15e00146b0e91bce8a5d519f55fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Tue, 4 Dec 2018 16:48:06 +0900 Subject: [PATCH] [stdex] Introduce Queue.h (#2484) This commit introduces Queue.h which will hold various utilities for std::queue. The current implementation includes only one helper: 'take'. Signed-off-by: Jonghyun Park --- contrib/stdex/include/stdex/Queue.h | 38 +++++++++++++++++++++++++++++++++++++ contrib/stdex/src/Queue.test.cpp | 32 +++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 contrib/stdex/include/stdex/Queue.h create mode 100644 contrib/stdex/src/Queue.test.cpp diff --git a/contrib/stdex/include/stdex/Queue.h b/contrib/stdex/include/stdex/Queue.h new file mode 100644 index 0000000..c72297b --- /dev/null +++ b/contrib/stdex/include/stdex/Queue.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __STDEX_QUEUE_H__ +#define __STDEX_QUEUE_H__ + +#include + +namespace stdex +{ + +/** + * @brief Take the front (= first) element from the queue + * @note The queue SHOULD have at least one element + */ +template T take(std::queue &q) +{ + auto res = q.front(); + q.pop(); + return res; +} + +} // namespace stdex + +#endif // __STDEX_QUEUE_H__ diff --git a/contrib/stdex/src/Queue.test.cpp b/contrib/stdex/src/Queue.test.cpp new file mode 100644 index 0000000..d76cd3e --- /dev/null +++ b/contrib/stdex/src/Queue.test.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "stdex/Queue.h" + +#include + +TEST(QueueTest, take) +{ + std::queue q; + + q.emplace(3); + q.emplace(4); + q.emplace(5); + + ASSERT_EQ(stdex::take(q), 3); + ASSERT_EQ(stdex::take(q), 4); + ASSERT_EQ(stdex::take(q), 5); +} -- 2.7.4