SHOGUN  6.1.3
NextSamples.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) The Shogun Machine Learning Toolbox
3  * Written (w) 2016 - 2017 Soumyajit De
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  * The views and conclusions contained in the software and documentation are those
27  * of the authors and should not be interpreted as representing official policies,
28  * either expressed or implied, of the Shogun Development Team.
29  */
30 
33 
34 using namespace shogun;
35 using namespace internal;
36 
37 NextSamples::NextSamples(index_t num_distributions) : m_num_blocks(0)
38 {
39  next_samples.resize(num_distributions);
40 }
41 
42 NextSamples& NextSamples::operator=(const NextSamples& other)
43 {
44  clear();
45  m_num_blocks=other.m_num_blocks;
46  next_samples=other.next_samples;
47  return *this;
48 }
49 
50 NextSamples::~NextSamples()
51 {
52  clear();
53 }
54 
55 std::vector<Block>& NextSamples::operator[](size_t i)
56 {
57  REQUIRE(i>=0 && i<next_samples.size(),
58  "index (%d) must be between [0,%d]!\n",
59  i, next_samples.size()-1);
60  return next_samples[i];
61 }
62 
63 const std::vector<Block>& NextSamples::operator[](size_t i) const
64 {
65  REQUIRE(i>=0 && i<next_samples.size(),
66  "index (%d) must be between [0,%d]!\n",
67  i, next_samples.size()-1);
68  return next_samples[i];
69 }
70 
71 const index_t NextSamples::num_blocks() const
72 {
73  return m_num_blocks;
74 }
75 
76 const bool NextSamples::empty() const
77 {
78  typedef const std::vector<Block> type;
79  return std::any_of(next_samples.cbegin(), next_samples.cend(), [](type& f) { return f.size()==0; });
80 }
81 
82 void NextSamples::clear()
83 {
84  typedef std::vector<Block> type;
85  std::for_each(next_samples.begin(), next_samples.end(), [](type& f) { f.clear(); });
86  next_samples.clear();
87 }
int32_t index_t
Definition: common.h:72
#define REQUIRE(x,...)
Definition: SGIO.h:181
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
class NextSamples is the return type for next() call in DataManager. If there are no more samples (fr...
Definition: NextSamples.h:68

SHOGUN Machine Learning Toolbox - Documentation