ardupilot/libraries/AP_Common/Bitmask.cpp

28 lines
768 B
C++
Raw Normal View History

#include "Bitmask.h"
#include <AP_HAL/AP_HAL.h>
Bitmask &Bitmask::operator=(const Bitmask&other)
{
if (other.numwords != numwords || other.numbits != numbits) {
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
// we really should not be assigning from a bitmask of a
// different number of bits!
AP_HAL::panic("attempt to copy from bitmask of different size");
#endif
// ... but try to cope if it happens in real life:
if (numwords != other.numwords) {
delete bits;
bits = new uint32_t[numwords];
numwords = other.numwords;
}
numbits = other.numbits;
}
if (other.numwords > 20) {
abort();
}
memcpy(bits, other.bits, 4*other.numwords);
return *this;
}