Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
{% import 'functional.cpp' as functional %} |
|
/* |
|
* file: {{fun.name}}.cpp |
|
* author: A trusty code generator |
|
* date: {{time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())}} |
|
* |
|
* This file was autogenerated, do not modify. |
|
* See LICENSE for full modification and redistribution details. |
|
* Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation |
|
*/ |
|
#include <string> |
|
#include <vector> |
|
#include <cassert> |
|
#include <exception> |
|
#include <opencv2/matlab/bridge.hpp> |
|
#include <opencv2/{{includes}}.hpp> |
|
using namespace cv; |
|
|
|
/* |
|
* {{ fun.name }} |
|
* {{ fun }} |
|
* Gateway routine |
|
* nlhs - number of return arguments |
|
* plhs - pointers to return arguments |
|
* nrhs - number of input arguments |
|
* prhs - pointers to input arguments |
|
*/ |
|
void mexFunction(int nlhs, mxArray*{% if fun|noutputs %} plhs[]{% else %}*{% endif %}, |
|
int nrhs, const mxArray*{% if fun|ninputs %} prhs[]{% else %}*{% endif %}) { |
|
|
|
// assertions |
|
conditionalError(nrhs >= {{fun.req|length - fun.req|only|outputs|length}}, "Too few required input arguments specified"); |
|
conditionalError(nrhs <= {{fun.req|length + fun.opt|length - fun.req|only|outputs|length - fun.opt|only|outputs|length}}, "Too many input arguments specified"); |
|
conditionalError(nlhs <= {{ fun.rtp|void|not + fun.req|outputs|length + fun.opt|outputs|length}}, "Too many output arguments specified"); |
|
|
|
{% if fun|ninputs or fun|noutputs %} |
|
// setup |
|
{% if fun|ninputs %} |
|
std::vector<Bridge> inputs(prhs, prhs+nrhs); |
|
{% endif -%} |
|
{%- if fun|noutputs %} |
|
std::vector<Bridge> outputs({{fun|noutputs}}); |
|
{% endif %} |
|
{% endif %} |
|
|
|
{{ functional.handleInputs(fun) }} |
|
{{ functional.composeWithExceptionHandler(fun) }} |
|
{{ functional.handleOutputs(fun) }} |
|
|
|
{% if fun|noutputs %} |
|
// push the outputs back to matlab |
|
for (size_t n = 0; n < static_cast<size_t>(std::max(nlhs,1)); ++n) { |
|
plhs[n] = outputs[n].toMxArray().releaseOwnership(); |
|
} |
|
{% endif %} |
|
} |
|
|
|
|