/* ----------------------------------------------------------------------- *//** * * @file ByteString_proto.hpp * *//* ----------------------------------------------------------------------- */ #ifndef MADLIB_POSTGRES_BYTESTRING_PROTO_HPP #define MADLIB_POSTGRES_BYTESTRING_PROTO_HPP namespace madlib { namespace dbconnector { namespace postgres { template class Reference; class ByteString { public: enum { isMutable = dbal::Immutable }; enum { kEffectiveHeaderSize = ((VARHDRSZ - 1) & ~(MAXIMUM_ALIGNOF - 1)) + MAXIMUM_ALIGNOF }; typedef char char_type; ByteString(const bytea* inByteString); const char_type* ptr() const; size_t size() const; const bytea* byteString() const; const char_type& operator[](size_t inIndex) const; protected: const bytea* mByteString; }; class MutableByteString : public ByteString { typedef ByteString Base; public: enum { isMutable = dbal::Mutable }; MutableByteString(bytea* inByteString); using Base::ptr; using Base::byteString; char_type* ptr(); bytea* byteString(); char_type& operator[](size_t inIndex); }; } // namespace postgres } // namespace dbconnector } // namespace madlib #endif // defined(MADLIB_POSTGRES_BYTESTRING_PROTO_HPP)