// Generated by gmmproc 2.66.3 -- DO NOT MODIFY!
#ifndef _GLIBMM_BYTEARRAY_H
#define _GLIBMM_BYTEARRAY_H
/* Copyright (C) 2013 The glibmm Development Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see .
*/
#include // std::size_t
#include
#include
#include
#include
#include
#ifndef DOXYGEN_SHOULD_SKIP_THIS
typedef struct _GByteArray GByteArray;
#endif
namespace Glib
{
/** ByteArray - Arrays of bytes.
* ByteArray is a mutable array of bytes, to provide arrays of bytes which grow
* automatically as elements are added.
*
* To create a new ByteArray use create(). To add elements to a ByteArray, use
* append(), and prepend().
*
* To set the size of a ByteArray, use set_size().
*
* @newin{2,36}
*/
class GLIBMM_API ByteArray final
{
public:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
using CppObjectType = ByteArray;
using BaseObjectType = GByteArray;
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
/** Increment the reference count for this object.
* You should never need to do this manually - use the object via a RefPtr instead.
*/
void reference() const;
/** Decrement the reference count for this object.
* You should never need to do this manually - use the object via a RefPtr instead.
*/
void unreference() const;
///Provides access to the underlying C instance.
GByteArray* gobj();
///Provides access to the underlying C instance.
const GByteArray* gobj() const;
///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
GByteArray* gobj_copy() const;
ByteArray() = delete;
// noncopyable
ByteArray(const ByteArray&) = delete;
ByteArray& operator=(const ByteArray&) = delete;
protected:
// Do not derive this. Glib::ByteArray can neither be constructed nor deleted.
void operator delete(void*, std::size_t);
private:
public:
/** A Slot type to compare two elements in the array. The slot should return
* -1 if the first value is less than the second, 0 if they are equal and 1
* if the first value is greater than the second.
*
* Slot Prototype:
*
*
* int compare(const guint8* first, const guint8* second);
*
*/
using SlotCompare = sigc::slot;
/** Creates a new ByteArray with a reference count of 1.
*
* @return The new ByteArray.
*/
static Glib::RefPtr create();
/** Adds the given bytes to the end of the ByteArray.
* The array will grow in size automatically if necessary.
*
* @param data The byte data to be added.
* @param len The number of bytes to add.
* @return The ByteArray.
*/
Glib::RefPtr append(const guint8* data, guint len);
/** Adds the given data to the start of the ByteArray.
* The array will grow in size automatically if necessary.
*
* @param data The byte data to be added.
* @param len The number of bytes to add.
* @return The ByteArray.
*/
Glib::RefPtr prepend(const guint8* data, guint len);
/** Gets the size of the byte array.
* @return The size.
* @newin{2,36}
*/
guint size() const;
/** Gets the data of the byte array.
* @return The data.
* @newin{2,36}
*/
guint8* get_data();
/** Gets the data of the byte array.
* @return The data.
* @newin{2,36}
*/
const guint8* get_data() const;
/** Removes the byte at the given index from a ByteArray.
* The following bytes are moved down one place.
*
* @param index The index of the byte to remove.
* @return The ByteArray.
*/
Glib::RefPtr remove_index(guint index);
/** Removes the byte at the given index from a ByteArray. The last
* element in the array is used to fill in the space, so this function
* does not preserve the order of the ByteArray. But it is faster
* than g_byte_array_remove_index().
*
* @param index The index of the byte to remove.
* @return The ByteArray.
*/
Glib::RefPtr remove_index_fast(guint index);
/** Removes the given number of bytes starting at the given index from a
* ByteArray. The following elements are moved to close the gap.
*
* @newin{2,4}
*
* @param index The index of the first byte to remove.
* @param length The number of bytes to remove.
* @return The ByteArray.
*/
Glib::RefPtr remove_range(guint index, guint length);
/** Like g_byte_array_sort(), but the comparison function takes an extra
* user data argument.
*
* @param slot Comparison function.
*/
void sort(const SlotCompare& slot);
/** Sets the size of the ByteArray, expanding it if necessary.
*
* @param length The new size of the ByteArray.
* @return The ByteArray.
*/
Glib::RefPtr set_size(guint length);
#ifndef DOXYGEN_SHOULD_SKIP_THIS
static GType get_type() G_GNUC_CONST;
#endif
};
#ifndef DOXYGEN_SHOULD_SKIP_THIS
template <>
class GLIBMM_API Value< Glib::RefPtr > : public ValueBase_Boxed
{
public:
static GType value_type() { return Glib::ByteArray::get_type(); }
void set(const Glib::RefPtr& array) { set_boxed(Glib::unwrap(array)); }
Glib::RefPtr get() { return Glib::RefPtr(reinterpret_cast(get_boxed())); }
};
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
} // namespace Glib
namespace Glib
{
/** A Glib::wrap() method for this object.
*
* @param object The C instance.
* @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
* @result A C++ instance that wraps this C instance.
*
* @relates Glib::ByteArray
*/
GLIBMM_API
Glib::RefPtr wrap(GByteArray* object, bool take_copy = false);
} // namespace Glib
#endif /* _GLIBMM_BYTEARRAY_H */