From 7ecefe247511b0f4ceb8fbaee5ef353b637bad51 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Mon, 1 May 2017 23:21:10 +0200
Subject: [PATCH] add checking of any bit set to bit vector

---
 alib2std/src/extensions/vector.hpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/alib2std/src/extensions/vector.hpp b/alib2std/src/extensions/vector.hpp
index ac38f9ceea..52c4af268c 100644
--- a/alib2std/src/extensions/vector.hpp
+++ b/alib2std/src/extensions/vector.hpp
@@ -241,6 +241,25 @@ vector < bool, Ts ... > operator >> ( vector < bool, Ts ... > A, size_t dist ) {
 	return A;
 }
 
+template < class ... Ts >
+bool any ( const vector < bool, Ts ... > & v ) {
+	size_t sizeWithin = v.size ( ) % vectorBoolInternalTypeInBits;
+
+	typename vector < bool, Ts ... >::const_iterator itV = v.begin ( );
+
+	// c++ implementation-specific
+	while ( itV + 1 < v.end ( ) )
+		if ( * ( itV._M_p ++ ) != 0 )
+			return true;
+
+	if ( sizeWithin == 0 )
+		return * itV._M_p != 0;
+	else {
+		vectorBoolInternalType maskTopWord = getMask ( sizeWithin );
+		return ( * itV._M_p & maskTopWord ) != 0;
+	}
+}
+
 } /* namespace std */
 
 #endif /* __VECTOR_HPP_ */
-- 
GitLab