1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00
ruby-opencv/ext/opencv/cvmemstorage.cpp
2011-08-12 15:59:58 +09:00

68 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
define_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