39 if (fNBits <= 0) { fNBits = 0; }
40 fNBytes = fNBits != 0u ? ((fNBits-1)/8) + 1 : 1;
41 fAllBits =
new unsigned char[fNBytes];
48 : fNBits(original.fNBits), fNBytes(original.fNBytes)
52 fAllBits =
new unsigned char[fNBytes];
64 fNBytes = rhs.fNBytes;
68 fAllBits =
new unsigned char[fNBytes];
103 if ((fNBits == 0u) || (
fAllBits ==
nullptr)) {
return; }
105 for(needed=fNBytes-1; needed > 0 &&
fAllBits[needed]==0; ) { --needed; }
110 unsigned char* old_location =
fAllBits;
111 fAllBits =
new unsigned char[needed];
113 std::memcpy(
fAllBits,old_location,needed);
114 delete [] old_location;
125 for(
unsigned int i=0; i<fNBytes; ++i)
127 unsigned char val =
fAllBits[fNBytes - 1 - i];
128 for (
unsigned int j=0; j<8; ++j)
141 for(
unsigned int i=0; i<fNBytes; ++i)
144 for (
unsigned int j=0; j<8; ++j)
146 if ((val & 1) != 0) {
G4cout <<
" bit:" << count <<
" = 1" <<
G4endl; }
156 if (
fAllBits !=
nullptr) { std::memset(
fAllBits, value ? 0xFF : 0, fNBytes); }
160void G4SurfBits::ReserveBytes(
unsigned int nbytes)
164 if (nbytes > fNBytes)
167 auto newBits =
new unsigned char[nbytes];
178 unsigned int nbytes=(nBits+7)>>3;
180 ReserveBytes(nbytes);
183 std::memcpy(
fAllBits, array, nbytes);
190 std::memcpy(array,
fAllBits, (fNBits+7)>>3);
201 set(nBits, (
const char*)array);
G4GLOB_DLL std::ostream G4cout
void Output(std::ostream &) const
G4SurfBits & operator=(const G4SurfBits &)
void ResetAllBits(G4bool value=false)
void Get(char *array) const
void set(unsigned int nbits, const char *array)
G4SurfBits(unsigned int nbits=0)