00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_BUFFER_H
00024 #define _CLASS_BUFFER_H
00025
00026 #ifdef __cplusplus
00027
00028 #include "beecrypt/c++/lang/IllegalArgumentException.h"
00029 using beecrypt::lang::IllegalArgumentException;
00030 #include "beecrypt/c++/lang/Object.h"
00031 #include "beecrypt/c++/nio/InvalidMarkException.h"
00032 using beecrypt::nio::InvalidMarkException;
00033
00034 namespace beecrypt {
00035 namespace nio {
00036 class BEECRYPTCXXAPI Buffer : public beecrypt::lang::Object
00037 {
00038 protected:
00039 size_t _capacity;
00040 size_t _limit;
00041 size_t _mark;
00042 size_t _position;
00043 bool _marked;
00044 bool _readonly;
00045
00046 Buffer(size_t capacity, size_t limit, bool readonly);
00047
00048 public:
00049 virtual ~Buffer() {};
00050
00051 size_t capacity() const throw ();
00052 Buffer& clear() throw ();
00053 Buffer& flip() throw ();
00054 bool hasRemaining() const throw ();
00055 bool isReadOnly() const throw ();
00056 size_t limit() const throw ();
00057 Buffer& limit(size_t newLimit) throw (IllegalArgumentException);
00058 Buffer& mark() throw ();
00059 size_t position() const throw ();
00060 Buffer& position(size_t newPosition) throw (IllegalArgumentException);
00061 size_t remaining() const throw ();
00062 Buffer& reset() throw (InvalidMarkException);
00063 Buffer& rewind() throw ();
00064 };
00065 }
00066 }
00067
00068 #endif
00069
00070 #endif