/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
 * Copyright (C) 2013 Regents of the University of California.
 * @author: Jeff Thompson <jefft0@remap.ucla.edu>
 * See COPYING for copyright and distribution information.
 */

#include "../c/util/blob.h"
#include <ndn-cpp-dev/util/blob.hpp>

using namespace std;

namespace ndn {

Blob::Blob(const struct ndn_Blob& blobStruct)
  : ptr_lib::shared_ptr<const vector<uint8_t> >(new vector<uint8_t>(blobStruct.value, blobStruct.value + blobStruct.length))
{
}

void 
Blob::get(struct ndn_Blob& blobStruct) const 
{
  blobStruct.length = size(); 
  if (size() > 0)
    blobStruct.value = (uint8_t*)buf();
  else
    blobStruct.value = 0;
}

}
