public FrameBlock zeroOutOperations(FrameBlock result,IndexRange range,boolean complementary,int iRowStartSrc,int iRowStartDest,int brlen,int iMaxRowsToCopy) throws DMLRuntimeException {
  int clen=getNumColumns();
  if (result == null)   result=new FrameBlock(getSchema());
 else {
    result.reset(0,true);
    result.setSchema(getSchema());
  }
  result.ensureAllocatedColumns(brlen);
  if (complementary) {
    for (int r=(int)range.rowStart; r <= range.rowEnd && r + iRowStartDest < brlen; r++) {
      for (int c=(int)range.colStart; c <= range.colEnd; c++)       result.set(r + iRowStartDest,c,get(r + iRowStartSrc,c));
    }
  }
 else {
    int r=iRowStartDest;
    for (; r < (int)range.rowStart && r - iRowStartDest < iMaxRowsToCopy; r++)     for (int c=0; c < clen; c++)     result.set(r,c,get(r + iRowStartSrc - iRowStartDest,c));
    for (; r <= (int)range.rowEnd && r - iRowStartDest < iMaxRowsToCopy; r++) {
      for (int c=0; c < (int)range.colStart; c++)       result.set(r,c,get(r + iRowStartSrc - iRowStartDest,c));
      for (int c=(int)range.colEnd + 1; c < clen; c++)       result.set(r,c,get(r + iRowStartSrc - iRowStartDest,c));
    }
    for (; r - iRowStartDest < iMaxRowsToCopy; r++)     for (int c=0; c < clen; c++)     result.set(r,c,get(r + iRowStartSrc - iRowStartDest,c));
  }
  return result;
}

public FrameBlock zeroOutOperations ( FrameBlock result , IndexRange range , boolean complementary , int iRowStartSrc , int iRowStartDest , int brlen , int iMaxRowsToCopy ) throws DMLRuntimeException { int clen = getNumColumns ( ) ; if ( result == null ) result = new FrameBlock ( getSchema ( ) ) ; else { result . reset ( 0 , true ) ; result . setSchema ( getSchema ( ) ) ; } result . ensureAllocatedColumns ( brlen ) ; if ( complementary ) { for ( int r = ( int ) range . rowStart ; r <= range . rowEnd && r + iRowStartDest < brlen ; r ++ ) { for ( int c = ( int ) range . colStart ; c <= range . colEnd ; c ++ ) result . set ( r + iRowStartDest , c , get ( r + iRowStartSrc , c ) ) ; } } else { int r = iRowStartDest ; for ( ; r < ( int ) range . rowStart && r - iRowStartDest < iMaxRowsToCopy ; r ++ ) for ( int c = 0 ; c < clen ; c ++ ) result . set ( r , c , get ( r + iRowStartSrc - iRowStartDest , c ) ) ; for ( ; r <= ( int ) range . rowEnd && r - iRowStartDest < iMaxRowsToCopy ; r ++ ) { for ( int c = 0 ; c < ( int ) range . colStart ; c ++ ) result . set ( r , c , get ( r + iRowStartSrc - iRowStartDest , c ) ) ; for ( int c = ( int ) range . colEnd + 1 ; c < clen ; c ++ ) result . set ( r , c , get ( r + iRowStartSrc - iRowStartDest , c ) ) ; } for ( ; r - iRowStartDest < iMaxRowsToCopy ; r ++ ) for ( int c = 0 ; c < clen ; c ++ ) result . set ( r , c , get ( r + iRowStartSrc - iRowStartDest , c ) ) ; } return result ; }
this function zero out the data in the slicing window applicable for this block .
