void repository::cache::verify_and_repair() { try { bool outdated = false; try { const auto meta = load_meta(); if (meta.version != repository::version()) { BUNSAN_LOG_INFO << "Cache's version \"" << meta.version << "\" is not equal to repository's version \"" << repository::version() << "\", resetting cache"; outdated = true; } } catch (std::exception &) { BUNSAN_LOG_ERROR << "Unable to read cache's meta, resetting cache"; outdated = true; } if (outdated) { clean_(); save_meta(); } verify_and_repair_directory(m_config.get_source()); verify_and_repair_directory(m_config.get_package()); } catch (std::exception &) { BOOST_THROW_EXCEPTION(cache_verify_and_repair_error() << enable_nested_current()); } }
void repository::cache::clean() { try { verify_and_repair(); clean_(); } catch (cache_clean_error &) { throw; } catch (std::exception &) { BOOST_THROW_EXCEPTION(cache_clean_error() << enable_nested_current()); } }
unsigned int Integer::decimal_() { clean_(); int result = 0; int iter = 0; for (auto i = bits_.end(); i >= bits_.begin(); --i, ++iter) { if (*i) { result += (pow(2, iter - 1)); } } return result; }
bool draw( const input* p ) { if( !fps ) { if( ( !p && row_count_ > 0 ) || ( !has_block && row_count_ >= block_size ) || ( p && block_ && *block_ != p->block ) ) { output_once_( timestamp_ ); image.setTo( 0 ); row_count_ = 0; } } if( !p ) { return false; } timestamp_ = p->t; block_ = p->block; unsigned int new_row; if( has_angle ) { double angle = as_radians ? p->angle : ( p->angle * ( M_PI / 180.0 ) ); if( sign < 0 ) { angle = M_PI * 2 - angle; } new_row = ( unsigned int )( angle / angle_step_ ); } else { new_row = p->row; } if( new_row >= block_size ) { std::cerr << "image-accumulate: expected row number less than " << block_size << "; got " << new_row; return false; } comma::math::cyclic< unsigned int > r( 0, block_size ); r = new_row + row_number_offset; new_row = r(); // todo: test row number offset if( has_row || has_angle ) { if( fps ) { clean_( new_row, clockwise ? -1 : 1 ); } row_ = new_row; } else { row_ = row_count_; } ++row_count_; draw_line_( p, row_() ); draw_dial_(); return true; }
std::string Integer::binary_string() { //Create output string which will be filled std::string output; //Clean up vector so that it doesn't return with unnecessary leading zeroes clean_(); //Start formatting output output += "("; for (auto i : bits_) { //Convert to int - false = 0, true = 1 if (i) output += "1"; else output += "0"; } //More formatting output += ")_2"; return output; }