Change log for selectlib
========================

Open SOC-SPRs/SCRs:
    *none*

Version 4.68 - 2003-06-26 (GV)
------------
	+ (Region.h) Put a namespace around the code in an
	attempt to solve the cause of SOC-SPR-2444.
	
Version 4.67 - 2003-06-13 (GV)
------------
	+ Add a few include <cassert> to make gcc-3.3 happy.
	
Version 4.66 - 2003-05-30 (GV)
------------
	+ (test/Makefile) add slatec to USEDLIBS.
	
Version 4.65 - 2003-05-21 (UL)
------------
	+ added ShapeBasics::toColor()/toString()
	+ closed SPR 2441: Test harness failure on Mac OS X

Version 4.64 - 2003-05-16 (UL)
------------
	+ bug fix which caused crash with selection expression referring to
	  non-existing string columns in a table (e.g. (H5455 == ON) instead
	  of (H5455 == "ON") in OM_HKPARMINT_0003.CCF

Version 4.63 - 2003-03-19 (UL)
------------
	+ added new inquiry method DataFilter::expression()

Version 4.62 - 2003-02-27 (UL)
------------
	+ fixed minor bug in memory management
	+ fixed bug in expansion of attributes in selection expression (only
	  showed up under MacOSX)
	+ added missing caloalutils to USEDLIBS in test/Makefile
	+ work-around for gcc-3.1 include file bug under MacOSX (search for
	  'MacOSX' in src/selcore/NumericFunctors.cc for details)

Version 4.61 - 2002-02-17 (JBa)
------------
	+ (./cxx/*) prefixed with std::

Version 4.60.1 - 2002-11-26 (UL)
--------------
	+ minor transparent change in Region.h to support more user-friendly
	  selection of background regions in ds9

Version 4.60 - 2002-08-26 (UL)
------------
	+ fixed problem with combi-lib building (caused linking failure under
	  Tru64)

Version 4.59 - 2002-07-31 (UL)
------------
	+ added selectReleaseMemory() to src/service/datafilter.f90

Version 4.58 - 2002-07-29 (UL)
------------
	+ fixed problem with broken rgsregions due to 4.55 change in Region.h

Version 4.57 - 2002-07-22 (JBa)
------------
	+ (src/utils/TriangulatablePolygon.cc) making sure we pick up local
	  INFINITY definition (GNU stdc++ library defines INFINITY in cmath)

Version 4.56 - 2002-07-19 (UL)
------------
	+ various trivial C++ standard compliance fixes (code is gcc-3.1-clean now)

Version 4.55 - 2002-07-10 (UL)
------------
	+ transparent modifications to GeoRegion class
	+ implemented funtools/CIAO compliant region combination policy
	  (Venn diagram can now be generated with within one operation)
	+ added new test harness

Version 4.54 - 2002-07-09 (UL)
------------
	+ added f90 I/F to ExprColumnGenerator class (construction of table
	  column driven by arithmetic expressions)

Version 4.53 - 2002-06-28 (UL)
------------
	+ changed all occurences of 'strstream' to standard-conformant
	  'stringstream'

Version 4.52 - 2002-06-10 (UL)
------------
	+ minor addition to OGIPgti class

Version 4.51 - 2002-06-03 (UL)
------------
	+ added support for time and angle parameters

Version 4.50 - 2002-05-29 (UL)
------------
	+ Trigonometric functions and their inverse now use radians

Version 4.49 - 2002-05-29 (UL)
------------
	+ Allow single-quoted text literals (to faciliate string parameter
	  validation in param>=2.0)
	+ more robust identification of string identifier in textual contexts

Version 4.48 - 2002-05-27 (UL)
------------
	+ added support for vector algebra

Version 4.47 - 2002-04-22 (UL)
------------
	+ treat identifiers in textual contexts properly

Version 4.46.5 - 2002-04-08 (UL)
--------------
	+ allow timing attributes in GTI merging to be of mixed types real/int or
	  int/real for equality check

Version 4.46.4 - 2002-03-18 (UL)
--------------
	+ fixed minor problem related to utils-1.84 update

Version 4.46.3 - 2002-01-31 (UL)
--------------
	+ fixed problem inadvertently introduced in 4.46.1: timing related
	  keywords in GTI tables were not treated as optional

Version 4.46.2 - 2002-01-30 (UL)
--------------
	+ closed SPR 2264: yacc problem [was bug in selcore/past_ly]

Version 4.46.1 - 2002-01-29 (UL)
--------------
	+ added EllipticalAnnulus::toSelectExpression() (override base class
	  method)
	+ implemented SCR 58: propagate timing related keywords in GTI merging
	  (closes SPR 2204)
	+ relaxed too stringest base test with sector-filter (failed under Linux)

Version 4.46 - 2001-12-07 (UL)
------------
	+ redelivery of 4.45 for start of 5.3 RT

Version 4.45 - 2001-09-26 (UL)
------------
	+ implemented SCR 78: Addition of keyword to tabgtigen output

Version 4.44.3 - 2001-09-25 (UL)
--------------
	+ couple of trivial changes in utils/TrinagulatablePolygon.cc to make
	  optimizer happy

Version 4.44.2 - 2001-09-12 (UL)
--------------
	+ fixed problem in documentation introduced with 4.42
	+ fixed problem in method of new TrinagulatablePolygon that caused
	  problem reported in SPR 2153 on the CAL
	  (see src/utils/TriangulatablePolygon.cc for details)

Version 4.44.1 - 2001-08-17 (UL)
--------------
	+ corrected modification dates of files in src/selcore (.l/.y are
	  newer than .cc counterparts in src/selcore in 4.44)

Version 4.44 - 2001-08-15 (UL)
------------
	+ added new region filter 'polygon2' with a defined positive result for
	  test points exactly on a polygon segment
	+ test harness extended to cover new polygon2 filter
	+ fixed another compilation problem under Tru64

Version 4.43 - 2001-08-13 (UL)
------------
	+ fixed compilation problem in TriangulatablePolygon.cc under Tru64

Version 4.42.1 - 2001-08-11 (UL)
--------------
	+ moved SelecteError from selcore to utils

Version 4.42 - 2001-08-10 (UL)
------------
	+ case of SHAPE value in input CXC region tables is now indifferent
	  (used to require names in uppercase)
	+ implemented fast O(log N) polygon filter; typical speed up for
	  number of points ~200 is factor 5-10
	+ inclusion status of point on polygon boundaries remains uncertain;
	  now explained in doc; see also rejected SPR 2010
	+ consistent use of namespace std

Version 4.41 - 2001-07-05 (UL)
------------
	+ renamed local utility class WCS to SelectWCS to resolve name conflict
	  with caloalutils

Version 4.40.2 - 2001-05-15 (UL)
--------------
	+ fixed minor problem with timestamps of lex/yacc files

Version 4.40.1 - 2001-05-14 (UL)
--------------
	+ fixed bug in real-number pattern: caused 'E123' to be seen as valid
	  floating point constant

Version 4.40 - 2001-04-02 (UL)
------------
	+ changed obsolete old-style include statements

Version 4.39.9 - 2001-07-02 (UL)
--------------
	+ fixed compilation problem in one of the tests

Version 4.39.8 - 2001-05-02 (UL)
--------------
	+ added Shape::contains(): point-in-shape test

Version 4.39.7 - 2000-11-13 (UL)
--------------
	+ support for 'annulus' region (needed to in fix of SPR 1832)

Version 4.39.6 - 2000-11-11 (UL)
--------------
	+ a couple of trivial changes to eliminate warnings from optimizer

Version 4.39.5 - 2000-10-30 (UL)
--------------
	+ ExprColumnConstructor did not understand attribute references in
	  expression

Version 4.39.4 - 2000-10-27 (UL)
--------------
	+ added config/selectlib.info

Version 4.39.3 - 2000-10-25 (UL)
--------------
	+ bug fix: now release column data objects in ExprColumnGenerator

Version 4.39.2 - 2000-10-25 (UL)
--------------
	+ better warning message when trying to filter with empty GTI table
	+ fixed compilation problem introduced with 4.39.1

Version 4.39.1 - 2000-10-24 (UL)
--------------
	+ small change in region->expression conversion (selectutils) that allows
	  to fix SPR 1708: Seg fault when importing an invalid 1-d region fromgrace

Version 4.39 - 2000-09-27 (UL)
------------
	+ minor updated to documentation (usage of \sascite)
	+ small speed improvement in polygon filter

Version 4.38 - 2000-09-20 (UL)
------------
	+ constants in bases 2/8/16 have now to be prefixed by lowercase
	  letters 'b'/'o'/'h' in order to be recognized
	+ bug fix related to usage of table attributes in selection expression

Version 4.37 - 2000-09-04 (UL)
------------
	+ fixed typo in operator declarations in Gti.h

Version 4.36 - 2000-07-26 (UL)
------------
	+ fixed lowmem problem in one of the tests
	+ syntax change: octal numbers start now with 'o' instead of '0';
			 hex numbers can start with either '0x' or 'h'

Version 4.35.3 - 2000-07-07 (UL)
--------------
	+ fixed SPR 1663: syntax errors
	  (was due to bug in expression parser which was left in an undefined
	   state after an error condition)

Version 4.35.2 - 2000-07-06 (UL)
--------------
	+ bug fix in mask filter (was introduced in 4.35)

Version 4.35.1 - 2000-07-05 (UL)
--------------
	+ minor modification in one of the test harnesses

Version 4.35 - 2000-07-04
------------
	+ identical to 4.34.6 - minor version number bumped for making cal
	  dependent on new selectlib

Version 4.34.6 - 2000-07-03 (UL)
--------------
	+ fixed SCR	962: string columns
	+ fixed SCR 958: support for nulls
	+ documentation updated (new sections about string selection capabilities +
	  null support + typos corrected)
	+ now depends on utils-1.67 (fixed NAN mask for single precision reals)

Version 4.34.5 - 2000-06-23 (UL)
--------------
	+ terminal vertex in Polygons is now explictely removed/added when
	  reading/writing ASC region files; internally all polygons are treated
	  as open

Version 4.34.4 - 2000-06-22 (UL)
--------------
	+ fixed SPR 1600: missing ASCRegion POLYGON terminator

Version 4.34.3 - 2000-06-19 (UL)
--------------
	+ more reliable solution for SPR 1536: give .l/.y modication time
	  of 01010000 to avoid unnecessary generation of associated .cc
	+ bug fix in writing of OGIP GTI tables: caused overwriting of existing
	  tables to fail if the new table is smaller tan the old one
	  (fixes SPR 1578: tabgtigen creates wrong GTIs)

Version 4.34.2 - 2000-06-16 (UL)
--------------
	+ fixed SPR 1404: parser requires decimal pt when specifying floating pt
					  numbers
	+ fixed SPR 1556: DOC::broken links

Version 4.34.1 - 2000-05-31 (UL)
--------------
	+ fixed SPR 1365: selectlib uses yacc
	  (src/selectcore/SelectParser.cc must have a time stamp later than
	   SelectParser.y to suppress invocation of bison; same is true
	   for SelectLexer.{cc|l})

Version 4.34 - 2000-05-29 (UL)
------------
	+ bug fixed in parser which caused
		mask(m.ds, xOff, yOff, xCol, yCol)
	  and
		(xCol, yCol) in mask(m.ds, xOff, yOff)
	  to behave differently

Version 4.33 - 2000-05-25 (UL)
------------
	+ GTI data sets are now OGIP compliant
	  (this fixes SPR 1346 : gtimerge is not functional with evselect)
	+ OutOGIPgtiTable can now also be constructed from existing table
	+ bug fix in GTI table or-ing

Version 4.32 - 2000-05-22 (UL)
------------
	+ bug fix in OGIPgti classes which caused crash in lowmem mode

Version 4.31 - 2000-05-19 (UL)
------------
	+ brought in line with dal-1.119 (added missing CREATOR/DATE attributes
	  to data sets in test directory)

Version 4.30 - 2000-05-09 (UL)
------------
	+ fixed SPR 1246: Wrong usage of MACROs in LaTeX documentation
	+ minor fix in Region::toSelectExpression() (selectutils)

Version 4.29 - 2000-02-23 (UL)
------------
	+ point filter rounds coordinates to nearest integer prior to comparison

Version 4.28 - 2000-02-21 (UL)
------------
	+ changed internal convention for row flagging: selected rows are now
	  marked by _setting_ the selection bit (was: clearing the bit, despite
	  the comments in src/selectservice/DataFilter.cc which is _now_ correct)

Version 4.27 - 2000-02-17 (UL)
------------
	+ transparent internal changes in selectcore which make it possible
	  to have several instances of Evaluator object; this is needed as
	  of cal-3.49

Version 4.26 - 2000-02-03 (UL)
------------
	+ fixed SPR 1011: selectlib and low memory mode
	+ fixed SPR 1101: Behaviour with empty GTI tables
	+ fixed SPR 1114: selectlib: errortest gives SEGV in isValidExpression

Version 4.25 - 2000-01-23 (UL)
------------
	+ fixed SPR 1011 : selectlib and low memory mode
	  (failed because attempted to modify read-only objects)

Version 4.24 - 2000-01-04 (UL) - the Millenium selectlib!
------------
	+ fixed SPR 1060: Fails on LInux (gcc-2.95.1)

Version 4.23 - 1999-12-17 (UL)
------------
	+ modification to GTI filter: issue a warning message if a GTI with
	  start>stop is seen
	+ renamed 'Region' in selectutils to 'GeoRegion' to resolve name clash
	  with type in Qt header file

Version 4.22.1 - 1999-12-16 (UL)
--------------
	+ removed dependency on imgdisplay/dsplot

Version 4.22 - 1999-12-15 (UL)
------------
	+ closed several minor memory leaks
	+ new functionality in selectutils to deal with Region objects

Version 4.21 - 1999-11-17 (UL)
------------
	+ internal changes (wrapped lexer/parser into separate namespace
	  to resolve name clash conflict with lexer/parser in dsslib)

Version 4.20.2 - 1999-11-03 (UL)
--------------
	+ added support for new unsigned types available in dal>=1.80

Version 4.20.1 - 1999-10-29 (UL)
--------------
	+ brought test harness 'selectutiltest' in line with 4.20

Version 4.20 - 1999-10-27 (UL)
------------
	+ made it dependent on dsplot-1.0

Version 4.19 - 1999-10-25 (UL)
------------
	+ src/selectutils/ExprTranslator: added translation from 2D-Dsplot
	  regions to selectlib expression and other miscellaneous fixes

Version 4.18 - 1999-10-21 (UL)
------------
	+ bug fix in new GtiList::operator&=

Version 4.17 - 1999-10-20 (UL)
------------
	+ src/selectutils/Gti.h: added GtiList::operator|=/operator&=

Version 4.16 - 1999-10-12 (UL)
------------
	+ fixed SPR 874: Evaluator should not raise a 'fatal' error on an invalid
	  expression
	+ make use of INTERFACE/combilib mechanism
	+ error handling overhauled (has now optional exception handling)
	+ added Evaluator::isValidExpression()

Version 4.15 - 1999-10-08 (UL)
------------
	+ fixed SPR 879 : ROW is not recognized any more ?

Version 4.14 - 1999-09-21 (UL)
------------
	+ conversion of ds9/tng region specification takes in addition to
	  binning factors also image shifts into account

Version 4.13 - 1999-09-21 (UL)
------------
	+ bug fix in test harness (selectutilstest)

Version 4.12 - 1999-09-20 (UL)
------------
	+ classes in src/selectutis/ExprTranslator.h can now convert
	  imgdisplay/dsplot region specifications into selectlib expression;
	  the former takes x/y binning factors into account

Version 4.11 - 1999-09-13 (UL)
------------
	+ internal change in src/selectservice after closure of DAL
	  SPR 589 : incorrect treatment of FITS B-type
	+ added DISTRIBUTION file

Version 4.10 - 1999-08-18 (UL)
------------
	+ bug fix in modf function (was not accepting single argument)

Version 4.9 - 1999-08-17 (UL)
-----------
	+ added one test to test/selectutiltest

Version 4.8 - 1999-08-16 (UL)
-----------
	+ added more arithmetic functions: sinh, cosh, tanh, pow, ceil, floor,
	  int, fmod, modf

Version 4.7 - 1999-08-05 (UL)
-----------
	+ fixed SPR 723 : ExprColumnGenerator does not catch invalid column name
	  usage of non-existent column names in expression passed to
	  ExprColumnGenerator constructor leads now to a proper error message

Version 4.6 - 1999-06-28 (UL)
-----------
	+ two versions of region filter are now supported
		+ region(<regionfile>)
		+ region(<regionfile>, Xcolumn, Ycolumn)
	  in the former case, the name of the X/Y column are taken from the
	  contents of the MFORM attribute in the specified region file

Version 4.5 - 1999-06-03 (UL)
-----------
	+ bug fix in ServiceUtils::attributeFreeExression (reference to
	  non-existing attributes did not lead to an error)

Version 4.4 - 1999-05-12 (UL)
-----------
	+ added new methods to ServiceUtils class to expand symbolic references
	  to table attributes by their values in selection expressions

Version 4.3 - 1999-05-11 (UL)
-----------
	+ brought in line with error-1.18

Version 4.2 - 1999-05-07 (UL)
-----------
	+ src/selectutils/SetTabCol.h: added access mode to constructor

Version 4.1 - 1999-04-27 (UL)
-----------
	+ closed SPR 551: Filename.[h|cc]
	+ internal Changes in src/selectservice (ColumnGenerator is now
	  abstract base class)
	+ minor bug fix in src/selectutils/SetTabCol.cc

Version 4.0 - 1999-04-16 (UL)
-----------
	+ name of classes 'Filter' and 'Node' changed to 'DataFilter' and 'OpNode'
	  to resolve name clash with symbols in the Cal; this is likely
	  to break all selectlib clients, hence, the major version number
	  increment

Version 3.25 - 1999-04-15 (UL)
------------
	+ new utility classes in selectutils for disentangeling of specifiers
	  in the form set:block:column
	+ updates to test harnesses enforced by error-1.16
	+ all dataset-based filters accept the form set:block as valid
	  block specifiers

Version 3.24 - 1999-03-05 (UL)
------------
	+ more more changes to make it work with lowmem Dal

Version 3.23 - 1999-03-03 (UL)
------------
	+ several changes to make it work with the lowmem Dal; core remains
	  unchanged

Version 3.22 - 1999-02-17 (UL)
------------
	+ bug fix in new ExtrTranslator class: generated expression was invalid ;)

Version 3.21 - 1999-02-17 (UL)
------------
	+ src/selectutils: added utility class which provides static
	  methods to transform region specifications from imgdisplay/dsplot
	  into selectlib expressions; selectlib now dependent on these
	  two packages

Version 3.20 - 1999-01-29 (UL)
------------
	+ minor fixes to make compilation under egcs 1.1.1 go smoothly

Version 3.19 - 1999-01-27 (UL)
------------
	+ minor fixes to make compilation under gcc 2.8.1 go smoothly

Version 3.18 - 1999-01-20 (UL)
------------
	+ bug fix in MaskFilter::passFilter (responsible for SSC-SPR 872:
	  Y-flipping of mask images)

Version 3.17 - 1999-01-19 (UL)
------------
	+ bug fix in src/selectcore/SelFileFunc.cc@MaskFilter::MaskFilter
	  (mask images in primary arrays) which gave rise to SSC-SPR 872
	
Version 3.16 - 1998-11-16 (UL)
------------
   	+ fixed SPR 345: Lots of hardcoded rules ala Make.include
	  additonal rules nedded in src/selectcore (.l->.cc, .y->.cc) have
	  been moved to Make.include

Version 3.15 - 1998-11-13 (UL)
------------
	+ new build procedure in-line with what is done in the Dal: separate
	  libaries are build in each src-subdir which get combined in a
	  new directory 'interface'; this also contains now all needed symbolic
	  links to *.h/*.f90/*.mod

Version 3.14 - 1998-11-12 (UL)
------------
	+ fixed SPR 274: Need symbolic link

Version 3.13 - 1998-11-02 (UL)
------------
	+ in ColumnGenerator: handle case that newly to be generated column
	  exists already; we do now:
		o generate the new column with temporary name
		o delete original column
		o rename the new column

Version 3.12 - 1998-10-15 (UL)
------------
    + fixed non-working example of table filtering expression in documentation
	+ fixed bug in Polygon filter (caused crash on Dec Alpha)
    + changed implementation of bit complement operator to make it
      work on 64 bit architectures (Dec Alpha)
	+ make package dependent on sas-1.35 in which `configure' now defines the
	  'proper' order of math libraries when using NAGace (the pow()
	  function in the NAGace libray -lma claims '2**3 == 7.999999' which
	  breaks a selectlib test)

Version 3.11 - 1998-10-07 (UL)
------------
    + WCS support in mask filter (documentation updated accordingly)
    + explicit operator<< in Filename class

Version 3.10 - 1998-10-05 (MB)
------------
    + upgraded F90 message calls in test harness

Version 3.9 - 1998-10-02 (UL)
-----------
    + fixed SPR 395 : Bug: Evaluator uses long for bit operations (not
                      portable 64<->32)
    + fixed SPR 428 : Selectlib should depend on cal

Version 3.8 - 1998-09-10 (MB)
-----------
    + fixed concurrecny problem in Makefiles that caused missing .o's in
      library

Version 3.7 - 1998-08-27 (UL)
-----------
    + bug fix in implementation of Filter class (caused crash in FLAG
      column clearing when filtered table was empty - very rare though)

Version 3.6 - 1998-07-31 (UL)
-----------
    + bug fix in src/selectutils/Region.h affecting the RotRhombus filter

Version 3.5 - 1998-07-29 (UL)
-----------
    + maximum number of vertices in a polygon is no longer limited (was 30)

Version 3.4 - 1998-07-28 (UL)
-----------
    + bug fixes in src/selectservice/Filter.cc, src/selectcore/SelOpFuncs.cc

Version 3.3 - 1998-07-20 (UL)
-----------
    + depends now on utils 1.8
	+ works with sas-1.16 (required changes to Makefiles in src/selectservice,
	  src/selectutils)

Version 3.2 - 1998-07-07 (UL)
-----------
    + fixed portability problem in src/selectutils/Region.cc (SOC-SPR 356)
    + got rid of doc/selectlib.tex - this is now generated on the
      fly by 'make ps/html' - this fixes SOC-SPR 368

Version 3.1 - 1998-07-06 (UL)
-----------
    + get rid of several usepackage directives in doc/selectlib.tex
	
Version 3.0 - 1998-06-26 (UL)
-----------
    + overhauled code + documentation (now in-line with SAS doc. standard)
    + new user features:
          o 'selected' function (convenient for step-wise filtering)
          o 'in' operator (in preparation of DSS support)
          o references to extensions can now be made by name
    + fixed SOC-SPRs 341, 342, 344 (all about documentation), and
      343 (do not modify CXXFLAGS)
	
Version 2.3 - 1998-05-28 (UL)
-----------
    + added ArrayEvaluator class in to select services + corresponding
      f90 wrapper + updated test harness

Version 2.2 - 1998-05-27 (UL)
-----------
    + fixed SOC-SPR 221
    + fixed minor problem in Makefile

Version 2.1 - 1998-05-26 (UL)
-----------
    + fixed SOC-SPRs 219, 220, 222

Version 2.0 - 1998-05-19 (UL)
-----------
    + general code overhaul
    + library reorganization: the formerly
      three separate libraries filter/selectutils/selecto have been merged
      into one:
          libfilter.a+libutils.a+libselector.a -> libselector.a
      tasks need from now on only link to the latter, i.e, in the Makefile
          USEDLIBS = selector
    + speed has been improved by another factor 4
    + new functionality to construct table columns from arithmetic expressions
      involving operators/functions and other column names (see
      src/selectservices/ColumnGenerator.h)
    + mask images need no longer be of type int16 but can be in int8 or int32
      as well

Version 1.1 - 1998-04-29 (UL)
-----------
	+ initial version for SAS v1 integration