--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lowlevellibsandfws/apputils/src/BACELL.CPP Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,135 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32std.h>
+#include <bacell.h>
+
+EXPORT_C TCellRef operator+(const TCellRef& aLeft,const TCellRef& aRight)
+ {
+ return TCellRef(aLeft.iRow+aRight.iRow,aLeft.iCol+aRight.iCol);
+ }
+
+EXPORT_C TCellRef operator-(const TCellRef& aLeft,const TCellRef& aRight)
+ {
+ return TCellRef(aLeft.iRow-aRight.iRow,aLeft.iCol-aRight.iCol);
+ }
+
+EXPORT_C void TCellRef::Offset(TInt aRowOffset,TInt aColOffset)
+/** Adds the specified row and column numbers to this cell's row and column values.
+
+@param aRowOffset The row number to be added. The value may be positive, zero
+or negative.
+@param aColOffset The column number to be added. The value may be positive,
+zero or negative. */
+ {
+ iRow += aRowOffset;
+ iCol += aColOffset;
+ }
+
+EXPORT_C void TCellRef::InternalizeL(RReadStream& aStream)
+/** Internalises an object of this class from a read stream.
+
+The presence of this function means that the standard templated operator>>()
+can be used to internalise objects of this class.
+
+Note that the function has assignment semantics. It replaces the old value
+of the object with a new value read from the read stream.
+
+@param aStream Stream from which the object is to be internalised. */
+ {
+ iRow = aStream.ReadInt32L();
+ iCol = aStream.ReadInt32L();
+ }
+
+// class TRangeRef
+
+EXPORT_C TBool TRangeRef::operator==(const TRangeRef& aRange) const
+/** Compares this cell range with the specified cell range for equality.
+
+@param aRange The cell range to be compared.
+@return ETrue, if the start cells and the end cells are the same. */
+ {
+ return aRange.iFrom==iFrom && aRange.iTo==iTo;
+ }
+
+EXPORT_C TInt TRangeRef::NoCells() const
+/** Gets the number of cells represented by the range.
+
+@return The number of cells. */
+ {
+ return NoRows()*NoCols();
+ }
+
+EXPORT_C TBool TRangeRef::Contains(const TCellRef& aCell) const
+/** Tests whether the specified cell is contained within the range.
+
+A range includes its outer perimeter.
+
+@param aCell The cell to be tested.
+@return ETrue, if the specified cell is contained within the range;
+EFalse, otherwise. */
+ {
+ TInt row=aCell.iRow;
+ TInt col=aCell.iCol;
+ return row>=iFrom.iRow && row<=iTo.iRow && col>=iFrom.iCol && col<=iTo.iCol;
+ }
+
+EXPORT_C void TRangeRef::InternalizeL(RReadStream& aStream)
+/** Internalises an object of this class from a read stream.
+
+The presence of this function means that the standard templated operator>>()
+can be used to internalise objects of this class.
+
+Note that the function has assignment semantics. It replaces the old value
+of the object with a new value read from the read stream.
+
+@param aStream Stream from which the object is to be internalised. */
+ {
+ aStream>>iFrom>>iTo;
+ }
+
+EXPORT_C void TRangeRef::ExternalizeL(RWriteStream& aStream) const
+/** Externalises an object of this class to a write stream.
+
+The presence of this function means that the standard templated operator<<()
+can be used to externalise objects of this class.
+
+@param aStream Stream to which the object should be externalised. */
+ {
+ aStream<<iFrom<<iTo;
+ }
+
+// TRangeRef::TIter
+
+EXPORT_C TRangeRef::TIter::TIter(const TRangeRef& aRange)
+ : iCurrent(aRange.iFrom),iRange(aRange)
+ {}
+
+EXPORT_C TBool TRangeRef::TIter::operator++()
+ {
+ if (iCurrent.iCol<iRange.iTo.iCol)
+ {
+ ++iCurrent.iCol;
+ }
+ else
+ {
+ ++iCurrent.iRow;
+ iCurrent.iCol = iRange.iFrom.iCol;
+ }
+ return iCurrent.iRow<=iRange.iFrom.iRow;
+ }
+
+
+/* End of $Workfile: bacell.cpp $*/