blob: 7313cc92ada3b84dbf9074c6255feda8f10fa344 [file] [log] [blame]
/**
* Copyright (C) 2013 Regents of the University of California.
* @author: Jeff Thompson <jefft0@remap.ucla.edu>
* See COPYING for copyright and distribution information.
*/
#ifndef NDN_DYNAMIC_UCHAR_VECTOR_HPP
#define NDN_DYNAMIC_UCHAR_VECTOR_HPP
#include <vector>
#include "../common.hpp"
#include "../c/util/dynamic-uchar-array.h"
namespace ndn {
/**
* A DynamicUCharVector extends ndn_DynamicUCharArray to hold a shared_ptr<vector<unsigned char> > for use with
* C functions which need an ndn_DynamicUCharArray.
*/
class DynamicUCharVector : public ndn_DynamicUCharArray {
public:
/**
* Create a new DynamicUCharVector with an initial length.
* @param initialLength The initial size of the allocated vector.
*/
DynamicUCharVector(unsigned int initialLength);
/**
* Get the shared_ptr to the allocated vector.
* @return The shared_ptr to the allocated vector.
*/
const ptr_lib::shared_ptr<std::vector<unsigned char> >& get() { return vector_; }
private:
/**
* Implement the static realloc function using vector resize.
* @param self A pointer to this object.
* @param array Should be the front of the vector.
* @param length The new length for the vector.
* @return The front of the allocated vector.
*/
static unsigned char *realloc(struct ndn_DynamicUCharArray *self, unsigned char *array, unsigned int length);
ptr_lib::shared_ptr<std::vector<unsigned char> > vector_;
};
}
#endif