File: dimentable.C

package info (click to toggle)
battleball 2.0-13
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,016 kB
  • ctags: 3,097
  • sloc: cpp: 15,310; makefile: 48; csh: 34
file content (51 lines) | stat: -rw-r--r-- 1,451 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// Copyright (c) 1997 Philip A. Hardin (pahardin@cs.utexas.edu)
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License v2 or later.


#include "dimentable.h"



/*=========================================================================*/
dimension *dimenTable::Add(coord value, dimenTable& symmDims) {
  dimenList::iterator dim;
  dimension	*symmDim= NULL;
//  dimension	*halfDim= NULL;
//  dimension	*qrtrDim= NULL;

  for(dim= dimens.begin(); dim != dimens.end(); dim++) {
    if ((*dim).value== value)
      return &(*dim);
    if ((*dim).value== -value)
      symmDim= &(*dim);
  }

  dimension newdim;

  if (symmDim) {
    newdim= dimension(value,dimension::symmetric,symmDim);
    return & *symmDims.dimens.insert(dimens.end(),newdim);
  }

  newdim= dimension(value,dimension::unique);
  return & *dimens.insert(dimens.end(),newdim);
}


/*-------------------------------------------------------------------------*/
void dimenTable::Empty() {
  // notice that the first, zero-valued dimension should not be erased!
  dimens.erase(++(dimens.begin()),dimens.end());
}


/*-------------------------------------------------------------------------*/
// The first "always-0" dimension isn't counted
void dimenTable::CountProps(int accums[]) const {
  dimenList::const_iterator dim= dimens.begin();

  dim++;
  for( ; dim != dimens.end(); dim++)
    accums[(*dim).prop]++;
}