Browse Source

Use Corrade's Containers::ArrayReference for Buffer::set*Data().

Makes it more usable and allows to remove one overload. The old way is
preserved, but marked as deprecated and will be removed in future
releases.
pull/23/head
Vladimír Vondruš 13 years ago
parent
commit
06b6bc967d
  1. 50
      src/Buffer.h

50
src/Buffer.h

@ -642,8 +642,7 @@ class MAGNUM_EXPORT Buffer {
/** /**
* @brief Set buffer data * @brief Set buffer data
* @param size Data size * @param data Data
* @param data Pointer to data
* @param usage %Buffer usage * @param usage %Buffer usage
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)
* *
@ -653,29 +652,19 @@ class MAGNUM_EXPORT Buffer {
* @see setTargetHint(), @fn_gl{BindBuffer} and @fn_gl{BufferData} or * @see setTargetHint(), @fn_gl{BindBuffer} and @fn_gl{BufferData} or
* @fn_gl_extension{NamedBufferData,EXT,direct_state_access} * @fn_gl_extension{NamedBufferData,EXT,direct_state_access}
*/ */
Buffer& setData(GLsizeiptr size, const GLvoid* data, Usage usage) { Buffer& setData(Containers::ArrayReference<const void> data, Usage usage) {
(this->*dataImplementation)(size, data, usage); (this->*dataImplementation)(data.size(), data, usage);
return *this; return *this;
} }
/** /**
* @brief Set buffer data * @brief Set buffer data
* @param data Fixed-size array with data * @deprecated Use @ref Magnum::Buffer::setData(Containers::ArrayReference<const void>, Usage) "setData(Containers::ArrayReference<const void>, Usage)"
* @param usage %Buffer usage * instead.
* @return Reference to self (for method chaining)
*
* @see setData(GLsizeiptr, const GLvoid*, Usage).
*/ */
#ifdef CORRADE_GCC46_COMPATIBILITY Buffer& setData(GLsizeiptr size, const GLvoid* data, Usage usage) {
#define size size_ /* With GCC 4.6 it conflicts with size(). WTF. */ return setData({data, std::size_t(size)}, usage);
#endif
template<std::size_t size, class T> Buffer& setData(const T(&data)[size], Usage usage) {
setData(size*sizeof(T), data, usage);
return *this;
} }
#ifdef CORRADE_GCC46_COMPATIBILITY
#undef size
#endif
/** /**
* @brief Set buffer data * @brief Set buffer data
@ -699,8 +688,7 @@ class MAGNUM_EXPORT Buffer {
/** /**
* @brief Set buffer subdata * @brief Set buffer subdata
* @param offset Offset in the buffer * @param offset Offset in the buffer
* @param size Data size * @param data Data
* @param data Pointer to data
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)
* *
* If @extension{EXT,direct_state_access} is not available and the * If @extension{EXT,direct_state_access} is not available and the
@ -709,29 +697,19 @@ class MAGNUM_EXPORT Buffer {
* @see setTargetHint(), @fn_gl{BindBuffer} and @fn_gl{BufferSubData} * @see setTargetHint(), @fn_gl{BindBuffer} and @fn_gl{BufferSubData}
* or @fn_gl_extension{NamedBufferSubData,EXT,direct_state_access} * or @fn_gl_extension{NamedBufferSubData,EXT,direct_state_access}
*/ */
Buffer& setSubData(GLintptr offset, GLsizeiptr size, const GLvoid* data) { Buffer& setSubData(GLintptr offset, Containers::ArrayReference<const void> data) {
(this->*subDataImplementation)(offset, size, data); (this->*subDataImplementation)(offset, data.size(), data);
return *this; return *this;
} }
/** /**
* @brief Set buffer subdata * @brief Set buffer subdata
* @param offset Offset in the buffer * @deprecated Use @ref Magnum::Buffer::setSubData(GLintptr, Containers::ArrayReference<const void>) "setSubData(GLintptr, Containers::ArrayReference<const void>)"
* @param data Fixed-size array with data * instead.
* @return Reference to self (for method chaining)
*
* @see setSubData(GLintptr, GLsizeiptr, const GLvoid*)
*/ */
#ifdef CORRADE_GCC46_COMPATIBILITY Buffer& setSubData(GLintptr offset, GLsizeiptr size, const GLvoid* data) {
#define size size_ /* With GCC 4.6 it conflicts with size(). WTF. */ return setSubData(offset, {data, std::size_t(size)});
#endif
template<std::size_t size, class T> Buffer& setSubData(GLintptr offset, const T(&data)[size]) {
setSubData(offset, size*sizeof(T), data);
return *this;
} }
#ifdef CORRADE_GCC46_COMPATIBILITY
#undef size
#endif
/** /**
* @brief Set buffer subdata * @brief Set buffer subdata

Loading…
Cancel
Save