33 static bool equals(
const std::vector<char>& a1,
const std::vector<char>& a2)
35 if (a1.size() != a2.size()) {
39 for (
auto i1 = a1.begin(), i2 = a2.begin(); i1 != a1.end();
48 static bool equals(
const std::vector<uint8_t>& a1,
const std::vector<uint8_t>& a2)
50 if (a1.size() != a2.size()) {
54 for (
auto i1 = a1.begin(), i2 = a2.begin(); i1 != a1.end();
67 for (
auto i = a.begin(); i != a.end(); i++)
73 static int hashCode(
const std::vector<uint8_t> a)
77 for (
auto i = a.begin(); i != a.end(); i++)
87 static std::vector<uint8_t>
copyOf(
const std::vector<uint8_t>& original,
const size_t size)
89 std::vector<uint8_t> vec;
90 std::copy(original.begin(), original.begin() + size, std::back_inserter(vec));
95 static std::vector<char>
copyOfRange(
const std::vector<char>& original,
99 if ((to - from) > original.size()) {
103 std::vector<char> vec;
104 std::copy(original.begin() + from, original.begin() + to, std::back_inserter(vec));
109 static std::vector<uint8_t>
copyOfRange(
const std::vector<uint8_t>& original,
113 if (from > original.size()) {
123 std::vector<uint8_t> vec;
125 if (to <= original.size()) {
127 std::copy(original.begin() + from, original.begin() + to, std::back_inserter(vec));
131 std::copy(original.begin() + from,
132 original.begin() + original.size(),
133 std::back_inserter(vec));
134 vec.resize(to - from, 0);
140 template <
typename T>
141 static bool contains(
const std::vector<T>& a,
const T b)
143 for (
const auto& v : a) {
152 template <
typename T>
155 std::sort(a.begin(), a.end());
156 std::sort(b.begin(), b.end());
158 return std::includes(a.begin(), a.end(), b.begin(), b.end());
161 template <
typename T>
164 for (
const auto& v : a) {
173 template <
typename T>
174 static bool startsWith(
const std::vector<T>& a,
const std::vector<T>& b)
176 if (b.size() > a.size()) {
181 for (
size_t i = 0; i < b.size(); i++) {
192 template <
typename T>
193 static bool endsWith(
const std::vector<T>& a,
const std::vector<T>& b)
195 if (b.size() > a.size()) {
200 const size_t offset = a.size() - b.size();
202 for (
size_t i = 0; i < b.size(); i++) {
204 if (a[offset + i] != b[i]) {
213 template <
typename T>
214 static int indexOf(
const std::vector<T>& a,
const T b)
216 auto it = std::find(a.begin(), a.end(), b);
218 return static_cast<int>(it - a.begin());
224 template <
typename T>
225 static bool addAll(std::vector<T>& a,
const std::vector<T>& b)
231 for (
const auto& t : b) {
238 template <
typename T>
239 static bool addAll(std::vector<std::shared_ptr<T>>& a,
const std::vector<std::shared_ptr<T>>& b)
245 for (
const auto& t : b) {
253 template <
typename T,
typename U>
254 static bool addAll(std::vector<std::shared_ptr<T>>& a,
const std::vector<std::shared_ptr<U>>& b)
260 for (
const auto& u : b) {
261 a.push_back(std::dynamic_pointer_cast<T>(u));
267 template <
typename T>
268 static void remove(std::vector<std::shared_ptr<T>>& a,
const std::shared_ptr<T>& b)
270 const auto it = std::find(a.begin(), a.end(), b);
277 template <
typename T,
typename U>
278 static bool removeAll(std::vector<std::shared_ptr<T>>& a,
const std::vector<std::shared_ptr<U>>& b)
286 for (
const auto& u : b) {
287 const auto t = std::dynamic_pointer_cast<T>(u);
288 const auto it = std::find(a.begin(), a.end(), t);
299 template <
typename T>
300 static void fill(std::vector<T>& a,
const size_t from_Index,
const size_t to_Index, T val)
302 for (
size_t i = from_Index; i < to_Index; i++) {
static bool startsWith(const std::vector< T > &a, const std::vector< T > &b)
static bool addAll(std::vector< T > &a, const std::vector< T > &b)
static bool addAll(std::vector< std::shared_ptr< T > > &a, const std::vector< std::shared_ptr< U > > &b)
static void remove(std::vector< std::shared_ptr< T > > &a, const std::shared_ptr< T > &b)
static std::vector< uint8_t > copyOf(const std::vector< uint8_t > &original, const size_t size)
static bool containsOnly(const std::vector< T > &a, const T b)
static void fill(std::vector< T > &a, const size_t from_Index, const size_t to_Index, T val)
static bool contains(const std::vector< T > &a, const T b)
static int hashCode(const std::vector< char > a)
static bool removeAll(std::vector< std::shared_ptr< T > > &a, const std::vector< std::shared_ptr< U > > &b)
static bool addAll(std::vector< std::shared_ptr< T > > &a, const std::vector< std::shared_ptr< T > > &b)
static int indexOf(const std::vector< T > &a, const T b)
static bool equals(const std::vector< uint8_t > &a1, const std::vector< uint8_t > &a2)
static bool equals(const std::vector< char > &a1, const std::vector< char > &a2)
static bool containsAll(std::vector< T > a, std::vector< T > b)
static int hashCode(const std::vector< uint8_t > a)
static bool endsWith(const std::vector< T > &a, const std::vector< T > &b)
static std::vector< uint8_t > copyOfRange(const std::vector< uint8_t > &original, const size_t from, const size_t to)
static std::vector< char > copyOfRange(const std::vector< char > &original, const size_t from, const size_t to)