Back to index

nordugrid-arc-nox  1.1.0~rc6
ByteArray.h
Go to the documentation of this file.
00001 // -*- indent-tabs-mode: nil -*-
00002 
00003 #ifndef __ARC_BYTE_ARRAY_H__
00004 #define __ARC_BYTE_ARRAY_H__
00005 
00006 #include <string>
00007 #define BYTE_ARRAY_PAD_SIZE (1024)
00008 
00009 namespace Arc {
00010 
00011   class MemoryAllocationException
00012     : public std::exception {
00013     virtual const char* what() const throw() {
00014       return "Memory allocation error ";
00015     }
00016   };
00017 
00018   class ByteArray {
00019   private:
00020     char *data_;
00021     size_t size_;
00022     size_t length_;
00023     void resize(size_t new_size);
00024     void init(size_t length);
00025   public:
00026     ByteArray() {
00027       data_ = NULL;
00028       size_ = 0;
00029       length_ = 0;
00030     }
00031     ByteArray(size_t length);
00032     ByteArray(void *buf, size_t size);
00033     ~ByteArray();
00034     void append(const void *buf, size_t size);
00035     void append(const std::string& str);
00036     void append(ByteArray& buf);
00037     void clean(void);
00038     char* data(void) {
00039       return data_;
00040     }
00041     size_t size(void) {
00042       return size_;
00043     }
00044     operator std::string(void) const;
00045   };
00046 
00047 } // namespace Arc
00048 
00049 #endif // __ARC_BYTE_ARRAY_H__