// This file is part of RAVL, Recognition And Vision Library // Copyright (C) 2001, University of Surrey // This code may be redistributed under the terms of the GNU Lesser // General Public License (LGPL). See the lgpl.licence file for details or // see http://www.gnu.org/copyleft/lesser.html // file-header-ends-here //! rcsid="$Id: exRBfAcc.cc,v 1.3 2002/07/07 21:41:12 craftit Exp $" //! lib=RavlCore //! file="Ravl/Core/Container/Buffer/exRBfAcc.cc" #include "Ravl/EntryPnt.hh" #include "Ravl/Types.hh" #include "Ravl/RBfAcc.hh" #include "Ravl/Stream.hh" using namespace RavlN; // This class enables to access member function // RangeBufferAccessC::Copy(). class RBAccC : public RangeBufferAccessC { public: RangeBufferAccessC Copy() const { return RangeBufferAccessC::Copy();} }; int ExRBfAcc(int, char * [] ) { cout << "Buffer access with known size example\n" << "=====================================\n"; char buffer[] = "absdefghijklmnopqrstuvwxyz\n"; RangeBufferAccessC acc1(buffer, 25); // map a memory RangeBufferAccessC acc2 = acc1 + 3; // map other access with a // different reference point RangeBufferAccessC acc3; // a default access RangeBufferAccessC acc4; // another default access acc4 = buffer + 5; // remap the access, but Size()==0 RangeBufferAccessC acc5 = acc4; // map an access acc5.Attach(acc2); // remap as acc2 RBAccC acc6; // a default access acc6.Attach(acc4, 10); // remap as acc4, but with a size RangeBufferAccessC acc7(acc6.Copy()); // a new buffer with an access acc6.Fill('*'); // modify the contents acc2 += 10; // shift indeces RangeBufferAccessC acc8(acc6); // a new buffer with an access acc8.ShiftIndexes(1); cout << acc8[0] << acc6[0] << "\n"; cout << "Buffer1 ? " << acc1.IsValid() << ' ' << acc1.IsEmpty() << ' ' << acc1.Size() << ' ' << acc1.ReferenceVoid() << '\n' << "Buffer2 ? " << acc2.IsValid() << ' ' << acc2.IsEmpty() << ' ' << acc2.Size() << ' ' << acc2.ReferenceVoid() << '\n' << "Buffer3 ? " << acc3.IsValid() << ' ' << acc3.IsEmpty() << ' ' << acc3.Size() << ' ' << acc3.ReferenceVoid() << '\n' << "Buffer4 ? " << acc4.IsValid() << ' ' << acc4.IsEmpty() << ' ' << acc4.Size() << ' ' << acc4.ReferenceVoid() << '\n' << "Buffer5 ? " << acc5.IsValid() << ' ' << acc5.IsEmpty() << ' ' << acc5.Size() << ' ' << acc5.ReferenceVoid() << '\n' << "Buffer6 ? " << acc6.IsValid() << ' ' << acc6.IsEmpty() << ' ' << acc6.Size() << ' ' << acc6.ReferenceVoid() << '\n' << "Buffer7 ? " << acc7.IsValid() << ' ' << acc7.IsEmpty() << ' ' << acc7.Size() << ' ' << acc7.ReferenceVoid() << '\n' << "Buffer1: " << acc1.ReferenceElm() << "Buffer2: " << acc2.DataStart() << "Buffer4: " << acc4.DataStart() << "Buffer5: " << acc5.DataStart() << "Buffer6: " << acc6.DataStart() << "Buffer7: " << acc7.DataStart() << '\n' << "Buffer8: " << acc7.DataStart() << '\n' << "Buffer2.Size() " << acc2.Size() << '\n' << "Buffer2.Range() " << acc2.Range() << '\n' << "Buffer2[16]: " << acc2[16] << '\n' << "\n"; cout << "End of the example\n"; return 0; } RAVL_ENTRY_POINT(ExRBfAcc)