array index: Introduce a union-friendly base class for ckarrayindex
authorRamprasad Venkataraman <ramv@illinois.edu>
Thu, 2 Jun 2011 22:05:37 +0000 (17:05 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Wed, 8 Jun 2011 15:37:42 +0000 (10:37 -0500)
commit5ba9470d30777078c0142a26856de070b832a37f
tree277e47de192bcadb81154e4787692119df97b199
parent7915a4af5ef82945e8cfc007df8e301560e1cfa7
array index: Introduce a union-friendly base class for ckarrayindex

There are only three entities in the charm codebase that put an array
index within a union:
    - envelope
    - callbacks
    - ckobjid

Create a base class that is used just by these three entities. CkArrayIndex is
now a safe and usable index class as it sports constructors, initialization
etc.  The remainder of the codebase and charm applications can and should use
the CkArrayIndex class.

Just at locations where the index objects in unions are handled, we provide a
somewhat "risky" cast operation from base to derived. This should be less
insane than casting across unrelated classes, which was the root of the
perennial problems with the original CkArrayIndex, IndexMax and IndexStruct
setup. However, we should actively explore mechanisms whereby even such casts
can be avoided without too much time/space costs.
src/ck-core/charm++.h
src/ck-core/ckarray.h
src/ck-core/ckcallback.C
src/ck-core/ckcallback.h
src/ck-core/ckobjid.h
src/ck-core/envelope.h