int  getTableSize()  {
           int    size = 0;
           int    numRows;
           int    numCols;
           int    rowSize;

           if (fRB.fTreeRoots[fRootIx] == null) {
               return 0;
           }

           size    = /*sizeof(RBBIStateTable) - 4 */ 16;    // The header, with no rows to the table.

           numRows = fDStates.size();
           numCols = fRB.fSetBuilder.getNumCharCategories();

           //  Note  The declaration of RBBIStateTableRow is for a table of two columns.
           //        Therefore we subtract two from numCols when determining
           //        how much storage to add to a row for the total columns.
           // rowSize = sizeof(RBBIStateTableRow) + sizeof(uint16_t)*(numCols-2);
           rowSize = 8 + 2*numCols;
           size   += numRows * rowSize;
           while (size % 8 > 0) {    // Size must be multiple of 8 bytes in size.
               size++;
           }

           return size;
       }
int getTableSize ( ) { int size = 0 ; int numRows ; int numCols ; int rowSize ; if ( fRB . fTreeRoots [ fRootIx ] == null ) { return 0 ; } size = 16 ; numRows = fDStates . size ( ) ; numCols = fRB . fSetBuilder . getNumCharCategories ( ) ; rowSize = 8 + 2 * numCols ; size += numRows * rowSize ; while ( size % 8 > 0 ) { size ++ ; } return size ; }
-----------------------------------------------------------------------------