File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/extensions/ams.js
ALMaSS  1.2 (after EcoStack, March 2024)
The Animal, Landscape and Man Simulation System
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PositionMap Class Reference

Used to map locations of individuals for density estimates. More...

#include <PositionMap.h>

Public Member Functions

int GetMapValue (unsigned x, unsigned y)
 
void SetMapValue (unsigned x, unsigned y)
 
void ClearMapValue (unsigned x, unsigned y)
 
int GetMapDensity (unsigned x, unsigned y)
 
int GetMapDensity (unsigned x, unsigned y, unsigned range)
 
bool GetMapPositive (unsigned x, unsigned y, unsigned range)
 
bool GetMapPositiveB (unsigned x, unsigned y, unsigned range)
 
int GetMapDensity5x5 (unsigned x, unsigned y)
 
bool GetMapDensity32 (unsigned x, unsigned y)
 
int GetTotalSpace (int x, int y)
 
int GetTotalN (int x, int y)
 
 PositionMap (unsigned a_size)
 
 PositionMap (Landscape *L)
 
 ~PositionMap ()
 

Public Attributes

PointerIntm_TheMap
 
PointerInt m_xmaxx
 
PointerInt m_maxx
 
PointerInt m_maxy
 
PointerInt m_TheBitMaskArray [65]
 
PointerInt m_TheBitMaskArray2 [65]
 

Protected Member Functions

void Init ()
 
PointerInt BitCount (PointerInt n)
 

Protected Attributes

Landscapem_ALandscape
 

Detailed Description

Used to map locations of individuals for density estimates.

Constructor & Destructor Documentation

◆ PositionMap() [1/2]

PositionMap::PositionMap ( unsigned  a_size)
138 {
139  // must make sure that we have whole words
140  m_xmaxx=a_size;
142  m_maxy=m_maxx;
143  m_TheMap = new PointerInt[ m_maxx*m_maxy ];
144 
145  Init();
146 }

References __3264minus0, __3264minus1, Init(), m_maxx, m_maxy, m_TheMap, and m_xmaxx.

◆ PositionMap() [2/2]

PositionMap::PositionMap ( Landscape L)

◆ ~PositionMap()

PositionMap::~PositionMap ( )
150 {
151  delete m_TheMap;
152 }

References m_TheMap.

Member Function Documentation

◆ BitCount()

PointerInt PositionMap::BitCount ( PointerInt  n)
inlineprotected
418  {
419  unsigned int nCount=0 ;
420  for(; n; n&=(n-1)){
421  nCount++;
422  }
423  return nCount ;
424 }

Referenced by GetMapDensity().

◆ ClearMapValue()

void PositionMap::ClearMapValue ( unsigned  x,
unsigned  y 
)
198 {
199  PointerInt theBit= x & __3264minus1;
200 
201  // divide by 32
202  // Calculate index:
203  PointerInt index= (x>> __3264divide )+(m_maxx*y);
204  m_TheMap[index] &= ~(0x01 << theBit);
205 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

Referenced by Init().

◆ GetMapDensity() [1/2]

int PositionMap::GetMapDensity ( unsigned  x,
unsigned  y 
)
254 {
255  if (y==0) y=1;
256 
257  PointerInt TheTotal=0;
258  PointerInt theBit= (x-1) & __3264minus1; // Identifies which bit to check
259  PointerInt index= (x>> __3264divide )+(m_maxx*(y+1));
260  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
261  index= (x>> __3264divide )+(m_maxx*(y-1));
262  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
263  index= (x>> __3264divide )+(m_maxx*(y));
264  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
265  theBit= (x+1) & __3264minus1;
266  index= (x>> __3264divide )+(m_maxx*(y+1));
267  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
268  index= (x>> __3264divide )+(m_maxx*(y-1));
269  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
270  index= (x>> __3264divide )+(m_maxx*(y));
271  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
272  theBit= x & __3264minus1;
273  index= (x>> __3264divide )+(m_maxx*(y+1));
274  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
275  index= (x>> __3264divide )+(m_maxx*(y-1));
276  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
277  return int(TheTotal);
278 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

◆ GetMapDensity() [2/2]

int PositionMap::GetMapDensity ( unsigned  x,
unsigned  y,
unsigned  range 
)
282 {
283  // THIS METHOD IS UNTESTED AND PROBABLY IS BUGGY!!
284 
285  // This method is called with the topleft coord as x,y - will probably need range checking in the calling function!
286  // for negative co-ords
287  // Efficiency is high for large areas, for small areas then it is less efficient than testing each square
288  // NB this method will automatically wrap-round if it meets the edge of X co-ord or Y-Coord
289  PointerInt TheTotal=0;
290  PointerInt theBit= x & __3264minus1; // Identifies which bit to check first e.g. 49 & 31 = 17
291  PointerInt index= ( x>> __3264divide )+( m_maxx * ( y ) ); // This is the start index
292  PointerInt yextent=y+range;
293  if (yextent>m_maxy) {
294  yextent=yextent-m_maxy;
295  // This code is duplicated just to avoid the extra call and parameter pass
296  // NB BitCount is inline.
297  for (PointerInt yy=y; yy<yextent; yy++) { // Do all this for each y
298  PointerInt remain=range-(__3264minus0-theBit); // e.g 55-17=38
299  if (remain>=0) { // Need to continue
300  // We need the rest of the 32 bits
301  TheTotal+=BitCount(m_TheMap[index]& m_TheBitMaskArray[theBit]); // NB if we are at the last bit then the mask is 0x08000 not 0x00001 !!
302  }
303  else {
304  // Stop this y here because remain is negative
305  // We need all the rest of the bits from our start point (theBit) to theBit+range
306  // e.g. theBit=17, remain = 3, we needs bits 17,18,19
307  TheTotal+=BitCount(m_TheMap[index]& (m_TheBitMaskArray[theBit]^m_TheBitMaskArray[theBit+range]));
308  remain=0;
309  }
310  // Now if remain is >32 we need to take a whole PointerInt else only the low remain bits
311  while (remain>0) {
312  if (remain>__3264minus0) {
313  TheTotal+=BitCount(m_TheMap[++index]);
314  } else {
315  TheTotal+=BitCount(m_TheMap[++index]& m_TheBitMaskArray2[remain]); // Use a second array to avoid the extra operation of inverting the first
316  }
317  remain-=__3264minus0;
318  }
319  }
320  yextent=m_maxy;
321  }
322  for (PointerInt yy=y; yy<yextent; yy++) { // Do all this for each y
323  PointerInt remain=range-(__3264minus0-theBit); // e.g 55-17=38
324  if (remain>=0) { // Need to continue
325  // We need the rest of the 32 bits
326  TheTotal+=BitCount(m_TheMap[index]& m_TheBitMaskArray[theBit]); // NB if we are at the last bit then the mask is 0x08000 not 0x00001 !!
327  }
328  else {
329  // Stop this y here because remain is negative
330  // We need all the rest of the bits from our start point (theBit) to theBit+range
331  // e.g. theBit=17, remain = 3, we needs bits 17,18,19
332  TheTotal+=BitCount(m_TheMap[index]& (m_TheBitMaskArray[theBit]^m_TheBitMaskArray[theBit+range]));
333  remain=0;
334  }
335  // Now if remain is >32 we need to take a whole PointerInt else only the low remain bits
336  while (remain>0) {
337  if (remain>__3264minus0) {
338  TheTotal+=BitCount(m_TheMap[++index]);
339  } else {
340  TheTotal+=BitCount(m_TheMap[++index]& m_TheBitMaskArray2[remain]); // Use a second array to avoid the extra operation of inverting the first
341  }
342  remain-=__3264minus0;
343  }
344  }
345  return int(TheTotal);
346 }

References __3264divide, __3264minus0, __3264minus1, BitCount(), m_maxx, m_maxy, m_TheBitMaskArray, m_TheBitMaskArray2, and m_TheMap.

◆ GetMapDensity32()

bool PositionMap::GetMapDensity32 ( unsigned  x,
unsigned  y 
)
485 {
486  // Returns true if there is another animal in 32x32m
487 
488  // IMPORTANT - this function does not include bounds checking
489  // Bounds checking on Y is needed before the call here
490 
491  // this is an odd density method. It assumes that all that is important is
492  // whether there is another beetle within the 32m represented by each point
493  // So two beetles could be side by side, but in different uints and not kill
494  // each other, but conversely, 31 m apart, in the same one and kill each other
495  // This function is therefore only used as a speed optimisation
496  //
497  PointerInt index;
498  PointerInt theBit; // Identifies which bit to check
499  for (unsigned int yoff=y-16; yoff<y; yoff++)
500  {
501  index = (x>> __3264divide )+(m_maxx*(yoff));
502  if (m_TheMap[index]>0) return true;
503  }
504  // Special case for 'y'
505  theBit= x & __3264minus1; // Identifies which bit to check
506  theBit=PointerInt(1)<<theBit;
507  index = (x>> __3264divide )+(m_maxx*(y));;
508  if((m_TheMap[index]^theBit)>0)
509  return true; // use XOR to remove the calling beetle
510 
511  for (unsigned int yoff=y+1; yoff<y+16; yoff++)
512  {
513  index = (x>> __3264divide )+(m_maxx*(yoff));
514  if (m_TheMap[index]>0) return true;
515  }
516  return false;
517 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

◆ GetMapDensity5x5()

int PositionMap::GetMapDensity5x5 ( unsigned  x,
unsigned  y 
)
417 {
418  if (y<2) y=2; // Don't run over the world backwards - big -ve number results
419  if (x<2) x=2;
420 
421  PointerInt index;
422  PointerInt TheTotal=0;
423  PointerInt theBit= (x-2) & __3264minus1; // Identifies which bit to check
424  index = (x>> __3264divide )+(m_maxx*(y+2));
425  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
426  index= (x>> __3264divide )+(m_maxx*(y+1));
427  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
428  index= (x>> __3264divide )+(m_maxx*(y));
429  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
430  index= (x>> __3264divide )+(m_maxx*(y-1));
431  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
432  index= (x>> __3264divide )+(m_maxx*(y-2));
433  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
434 
435  theBit= (x-1) & __3264minus1; // Identifies which bit to check
436  index = (x>> __3264divide )+(m_maxx*(y+2));
437  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
438  index= (x>> __3264divide )+(m_maxx*(y+1));
439  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
440  index= (x>> __3264divide )+(m_maxx*(y));
441  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
442  index= (x>> __3264divide )+(m_maxx*(y-1));
443  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
444  index= (x>> __3264divide )+(m_maxx*(y-2));
445  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
446 
447  theBit= x & __3264minus1;
448  index = (x>> __3264divide )+(m_maxx*(y+2));
449  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
450  index= (x>> __3264divide )+(m_maxx*(y+1));
451  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
452  index= (x>> __3264divide )+(m_maxx*(y-1));
453  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
454  index= (x>> __3264divide )+(m_maxx*(y-2));
455  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
456 
457  theBit= (x+1) & __3264minus1;
458  index = (x>> __3264divide )+(m_maxx*(y+2));
459  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
460  index= (x>> __3264divide )+(m_maxx*(y+1));
461  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
462  index= (x>> __3264divide )+(m_maxx*(y));
463  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
464  index= (x>> __3264divide )+(m_maxx*(y-1));
465  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
466  index= (x>> __3264divide )+(m_maxx*(y-2));
467  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
468 
469  theBit= (x+2) & __3264minus1;
470  index = (x>> __3264divide )+(m_maxx*(y+2));
471  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
472  index= (x>> __3264divide )+(m_maxx*(y+1));
473  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
474  index= (x>> __3264divide )+(m_maxx*(y));
475  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
476  index= (x>> __3264divide )+(m_maxx*(y-1));
477  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
478  index= (x>> __3264divide )+(m_maxx*(y-2));
479  TheTotal+=((m_TheMap[index] >> theBit) & 0x01);
480  return int(TheTotal);
481 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

◆ GetMapPositive()

bool PositionMap::GetMapPositive ( unsigned  x,
unsigned  y,
unsigned  range 
)
349 {
350  // THIS METHOD IS UNTESTED AND PROBABLY IS BUGGY!!
351 
352  // This method is called with the topleft coord as x,y - will probably need range checking in the calling function!
353  // for negative co-ords
354  // Efficiency is high for large areas, for small areas then it is less efficient than testing each square
355  // NB this method will automatically wrap-round if it meets the edge of X co-ord or Y-Coord
356  PointerInt theBit= PointerInt(x) & __3264minus1; // Identifies which bit to check first e.g. 49 & 31 = 17
357  PointerInt index= ( PointerInt(x)>> __3264divide )+( m_maxx * ( PointerInt(y) ) ); // This is the start index
358  PointerInt yextent=y+range;
359  if (yextent>m_maxy) {
360  yextent=yextent-m_maxy;
361  // This code is duplicated just to avoid the extra call and parameter pass
362  // NB BitCount is inline.
363  for (unsigned yy=y; yy<yextent; yy++) { // Do all this for each y
364  PointerInt remain=range-(__3264minus0-theBit); // e.g 55-17=38
365  if (remain>=0) { // Need to continue
366  // We need the rest of the 32 bits
367  if ((m_TheMap[index]& m_TheBitMaskArray[theBit])!=0) return true; // NB if we are at the last bit then the mask is 0x08000 not 0x00001 !!
368  }
369  else {
370  // Stop this y here because remain is negative
371  // We need all the rest of the bits from our start point (theBit) to theBit+range
372  // e.g. theBit=17, remain = 3, we needs bits 17,18,19
373  if ((m_TheMap[index]& (m_TheBitMaskArray[theBit]^m_TheBitMaskArray[theBit+range]))!=0) return true;
374  remain=0;
375  }
376  // Now if remain is >32 we need to take a whole PointerInt else only the low remain bits
377  while (remain>0) {
378  if (remain>__3264minus0) {
379  if(m_TheMap[++index]!=0) return true;
380  } else {
381  if ((m_TheMap[++index]& m_TheBitMaskArray2[remain])!=0) return true; // Use a second array to avoid the extra operation of inverting the first
382  }
383  remain-=__3264minus0;
384  }
385  }
386  yextent=m_maxy;
387  }
388  for (PointerInt yy=y; yy<yextent; yy++) { // Do all this for each y
389  PointerInt remain=range-(__3264minus0-theBit); // e.g 55-17=38
390  if (remain>=0) { // Need to continue
391  // We need the rest of the 32 bits
392  if ((m_TheMap[index]& m_TheBitMaskArray[theBit])!=0) return true; // NB if we are at the last bit then the mask is 0x08000 not 0x00001 !!
393  }
394  else {
395  // Stop this y here because remain is negative
396  // We need all the rest of the bits from our start point (theBit) to theBit+range
397  // e.g. theBit=17, remain = 3, we needs bits 17,18,19
398  if ((m_TheMap[index]& (m_TheBitMaskArray[theBit]^m_TheBitMaskArray[theBit+range]))!=0) return true;
399  remain=0;
400  }
401  // Now if remain is >32 we need to take a whole PointerInt else only the low remain bits
402  while (remain>0) {
403  if (remain>__3264minus0) {
404  if(m_TheMap[++index]!=0) return true;
405  } else {
406  if ((m_TheMap[++index]& m_TheBitMaskArray2[remain])!=0) return true; // Use a second array to avoid the extra operation of inverting the first
407  }
408  remain-=__3264minus0;
409  }
410  }
411  return false;
412 }

References __3264divide, __3264minus0, __3264minus1, m_maxx, m_maxy, m_TheBitMaskArray, m_TheBitMaskArray2, and m_TheMap.

◆ GetMapPositiveB()

bool PositionMap::GetMapPositiveB ( unsigned  x,
unsigned  y,
unsigned  range 
)
521 {
522  // This is a speed optimisation. We assume that we never need to go outside our actual uint
523  // so if our x is at 25 and range is 10 then we use x-3 (35-32) as the start point.
524 
525  PointerInt theBit= x & __3264minus1; // Identifies which bit to check first e.g. 49 & 31 = 17
526  PointerInt index= ( x>> __3264divide )+( m_maxx * ( y ) ); // This is the start index
527  // Create the mask
528  //theBit has 0-31
529  PointerInt n1=theBit+range;
530  PointerInt n2=(n1 & 32) << __3264divide; // check the 6th bit (or 7th in 64-bit)
531  // shift this down to the first bit
532  // Get the excess bits of our total range (will be 4 if n1 == 35) or zero if n2 is zero
533  PointerInt n5=theBit-((n1-__3264minus1)*n2); // move theBit along so that we don't over run the uint
534  // We now need from theBit bit to theBit+range mask - done fast because we have look up tables
535  PointerInt mask=(m_TheBitMaskArray[n5]^m_TheBitMaskArray[n5+range]);
536  PointerInt yextent=y+range;
537  if (yextent>m_maxy) yextent=m_maxy;
538  for (PointerInt yy=y; yy<yextent; yy++) { // Do all this for each y
539  //res=res|(m_TheMapSpmi[index]&mask); // Can also test for non-zero here, but in a sparse matrix this slows things down too much
540  if (m_TheMap[index]&mask) return true; // Can also test for non-zero here, but in a sparse matrix this slows things down too much
541  index+=m_maxx;
542  }
543 // if (res) return true; else return false;
544  return false;
545 }

References __3264divide, __3264minus1, m_maxx, m_maxy, m_TheBitMaskArray, and m_TheMap.

◆ GetMapValue()

int PositionMap::GetMapValue ( unsigned  x,
unsigned  y 
)
210 {
211  PointerInt theBit= x & __3264minus1;
212  // divide by 32
213  // Calculate index:
214  PointerInt index= (x>> __3264divide )+(m_maxx*y);
215  PointerInt res =((m_TheMap[index] >> theBit) & 0x01); // 0-1
216  return int(res);
217 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

Referenced by GetTotalN(), and GetTotalSpace().

◆ GetTotalN()

int PositionMap::GetTotalN ( int  x,
int  y 
)
238 {
239  // This is a debug function which returns the total filled area of the map
240  int space=0;
241  for (int i=0; i<x; i++)
242  {
243  for (int j=0; j<y; j++)
244  {
245  if (GetMapValue(i,j)!=0) space++;
246  }
247  }
248  return space;
249 }

References GetMapValue().

◆ GetTotalSpace()

int PositionMap::GetTotalSpace ( int  x,
int  y 
)
222 {
223  // This is a debug function which returns the total empty area of the map
224  int space=0;
225  for (int i=0; i<x; i++)
226  {
227  for (int j=0; j<y; j++)
228  {
229  if (GetMapValue(i,j)==0) space++;
230  }
231  }
232  return space;
233 }

References GetMapValue().

◆ Init()

void PositionMap::Init ( )
protected
157 {
158  for (unsigned y=0; y<m_maxy; y++)
159  {
160  for (unsigned x=0; x<m_xmaxx; x++)
161  {
162  ClearMapValue(x,y);
163  }
164  }
165  // I guess there is a neater way to do this, but this works at least!
166  m_TheBitMaskArray[0]=0;
167  for (int i=1; i<__3264minus0; i++) {
168  m_TheBitMaskArray[i]=m_TheBitMaskArray[i-1]+(PointerInt(1) << (i-1));
169  }
170  for (int i=0; i<__3264minus0; i++) {
171  m_TheBitMaskArray[i]^= 0xFFFFFFFFFFFFFFFF;
172  m_TheBitMaskArray2[i]= ~m_TheBitMaskArray[i]; // 1s compliment
173  }
174 #ifdef __64BIT
175  m_TheBitMaskArray[__3264minus0] = 0xFFFFFFFFFFFFFFFF;
176 #else
177  m_TheBitMaskArray[__3264minus0] = 0xFFFFFFFF;
178 #endif
180 }

References __3264minus0, ClearMapValue(), m_maxy, m_TheBitMaskArray, m_TheBitMaskArray2, and m_xmaxx.

Referenced by PositionMap().

◆ SetMapValue()

void PositionMap::SetMapValue ( unsigned  x,
unsigned  y 
)
185 {
186 
187  PointerInt theBit= x & __3264minus1;
188  // divide by 32
189  // Calculate index:
190  PointerInt index= (x>> __3264divide )+(m_maxx*y);
191  m_TheMap[index] = m_TheMap[index] | (PointerInt(0x01) << theBit);
192 
193 }

References __3264divide, __3264minus1, m_maxx, and m_TheMap.

Member Data Documentation

◆ m_ALandscape

Landscape* PositionMap::m_ALandscape
protected

Referenced by PositionMap().

◆ m_maxx

◆ m_maxy

◆ m_TheBitMaskArray

PointerInt PositionMap::m_TheBitMaskArray[65]

◆ m_TheBitMaskArray2

PointerInt PositionMap::m_TheBitMaskArray2[65]

Referenced by GetMapDensity(), GetMapPositive(), and Init().

◆ m_TheMap

◆ m_xmaxx

PointerInt PositionMap::m_xmaxx

Referenced by Init(), and PositionMap().


The documentation for this class was generated from the following files:
PositionMap::ClearMapValue
void ClearMapValue(unsigned x, unsigned y)
Definition: PositionMap.cpp:197
PositionMap::m_TheMap
PointerInt * m_TheMap
Definition: PositionMap.h:394
__3264minus1
#define __3264minus1
Definition: PositionMap.cpp:45
PositionMap::Init
void Init()
Definition: PositionMap.cpp:156
__3264minus0
#define __3264minus0
Definition: PositionMap.cpp:46
__3264divide
#define __3264divide
Definition: PositionMap.cpp:47
PointerInt
uint64 PointerInt
Definition: ALMaSS_Setup.h:43
PositionMap::m_TheBitMaskArray
PointerInt m_TheBitMaskArray[65]
Definition: PositionMap.h:396
PositionMap::GetMapValue
int GetMapValue(unsigned x, unsigned y)
Definition: PositionMap.cpp:209
Landscape::SupplySimAreaHeight
int SupplySimAreaHeight(void)
Gets the simulation landscape height.
Definition: Landscape.h:2302
Landscape::SupplySimAreaWidth
int SupplySimAreaWidth(void)
Gets the simulation landscape width.
Definition: Landscape.h:2297
PositionMap::m_maxy
PointerInt m_maxy
Definition: PositionMap.h:395
PositionMap::m_TheBitMaskArray2
PointerInt m_TheBitMaskArray2[65]
Definition: PositionMap.h:397
PositionMap::m_xmaxx
PointerInt m_xmaxx
Definition: PositionMap.h:395
PositionMap::BitCount
PointerInt BitCount(PointerInt n)
Definition: PositionMap.h:418
PositionMap::m_ALandscape
Landscape * m_ALandscape
Definition: PositionMap.h:413
PositionMap::m_maxx
PointerInt m_maxx
Definition: PositionMap.h:395