ruby-opencv/ext/opencv/cvmemstorage.cpp

69 lines
1.2 KiB
C++

/************************************************************
cvmemstorage.cpp -
$Author: lsxi $
Copyright (C) 2005 Masakazu Yonekura
************************************************************/
#include "cvmemstorage.h"
/*
* Document-class: OpenCV::CvMemStorage
*
* Internal memory management class used by CvSeq.
*/
__NAMESPACE_BEGIN_OPENCV
__NAMESPACE_BEGIN_CVMEMSTORAGE
VALUE rb_klass;
VALUE
rb_class()
{
return rb_klass;
}
void
init_ruby_class()
{
if (rb_klass)
return;
/*
* opencv = rb_define_module("OpenCV");
*
* note: this comment is used by rdoc.
*/
VALUE opencv = rb_module_opencv();
rb_klass = rb_define_class_under(opencv, "CvMemStorage", rb_cObject);
}
VALUE
rb_allocate(VALUE klass)
{
CvMemStorage *storage = rb_cvCreateMemStorage(0);
return Data_Wrap_Struct(klass, 0, cvmemstorage_free, storage);
}
void
cvmemstorage_free(void *ptr)
{
try {
cvReleaseMemStorage((CvMemStorage**)&ptr);
}
catch (cv::Exception& e) {
raise_cverror(e);
}
}
VALUE
new_object(int blocksize)
{
CvMemStorage *storage = rb_cvCreateMemStorage(blocksize);
return Data_Wrap_Struct(rb_klass, 0, cvmemstorage_free, storage);
}
__NAMESPACE_END_CVMEMSTORAGE
__NAMESPACE_END_OPENCV