5
|
|
|
|
|
|
|
/*
* ***********************************************
*
* !!!! DO NOT EDIT !!!!
*
* This file was auto-generated by Build.PL.
*
* ***********************************************
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define CFP_TESTCFISH
#include "XSBind.h"
#include "testcfish_perl.h"
#include "Clownfish/Test/TestHashIterator.h"
#include "Clownfish/Test/TestLockFreeRegistry.h"
#include "Clownfish/Test/TestObj.h"
#include "Clownfish/Test/TestBoolean.h"
#include "Clownfish/Test/TestErr.h"
#include "Clownfish/Test/TestMethod.h"
#include "Clownfish/Test/TestString.h"
#include "Clownfish/Test/TestNum.h"
#include "Clownfish/Test/TestHash.h"
#include "Clownfish/Test/TestBlob.h"
#include "Clownfish/Test/TestCharBuf.h"
#include "Clownfish/Test/TestVector.h"
#include "Clownfish/Test/TestByteBuf.h"
#include "Clownfish/Test/TestPtrHash.h"
#include "Clownfish/Test/TestClass.h"
#include "Clownfish/Test/Util/TestAtomic.h"
#include "Clownfish/Test/Util/TestMemory.h"
#include "Clownfish/Test/TestString.h"
#include "Clownfish/Test/TestHost.h"
#include "Clownfish/Test.h"
#ifndef XS_INTERNAL
#define XS_INTERNAL XS
#endif
XS_INTERNAL(XS_Clownfish_Test_TestHashIterator_run);
XS_INTERNAL(XS_Clownfish_Test_TestHashIterator_run) {
dXSARGS;
SV *sv;
testcfish_TestHashIterator* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestHashIterator_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHashIterator*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHASHITERATOR, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHASHITERATOR, TESTCFISH_TestHashIterator_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestLockFreeRegistry_run);
XS_INTERNAL(XS_Clownfish_Test_TestLockFreeRegistry_run) {
dXSARGS;
SV *sv;
testcfish_TestLockFreeRegistry* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestLFReg_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestLockFreeRegistry*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTLOCKFREEREGISTRY, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTLOCKFREEREGISTRY, TESTCFISH_TestLFReg_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestObj_run);
XS_INTERNAL(XS_Clownfish_Test_TestObj_run) {
dXSARGS;
SV *sv;
testcfish_TestObj* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestObj_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestObj*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTOBJ, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTOBJ, TESTCFISH_TestObj_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestBoolean_run);
XS_INTERNAL(XS_Clownfish_Test_TestBoolean_run) {
dXSARGS;
SV *sv;
testcfish_TestBoolean* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestBoolean_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestBoolean*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTBOOLEAN, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTBOOLEAN, TESTCFISH_TestBoolean_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestErr_run);
XS_INTERNAL(XS_Clownfish_Test_TestErr_run) {
dXSARGS;
SV *sv;
testcfish_TestErr* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestErr_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestErr*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTERR, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTERR, TESTCFISH_TestErr_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestMethod_run);
XS_INTERNAL(XS_Clownfish_Test_TestMethod_run) {
dXSARGS;
SV *sv;
testcfish_TestMethod* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestMethod_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestMethod*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTMETHOD, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTMETHOD, TESTCFISH_TestMethod_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestString_run);
XS_INTERNAL(XS_Clownfish_Test_TestString_run) {
dXSARGS;
SV *sv;
testcfish_TestString* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestStr_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestString*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTSTRING, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTSTRING, TESTCFISH_TestStr_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestNum_run);
XS_INTERNAL(XS_Clownfish_Test_TestNum_run) {
dXSARGS;
SV *sv;
testcfish_TestNum* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestNum_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestNum*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTNUM, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTNUM, TESTCFISH_TestNum_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestHash_run);
XS_INTERNAL(XS_Clownfish_Test_TestHash_run) {
dXSARGS;
SV *sv;
testcfish_TestHash* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestHash_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHash*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHASH, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHASH, TESTCFISH_TestHash_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestBlob_run);
XS_INTERNAL(XS_Clownfish_Test_TestBlob_run) {
dXSARGS;
SV *sv;
testcfish_TestBlob* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestBlob_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestBlob*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTBLOB, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTBLOB, TESTCFISH_TestBlob_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestCharBuf_run);
XS_INTERNAL(XS_Clownfish_Test_TestCharBuf_run) {
dXSARGS;
SV *sv;
testcfish_TestCharBuf* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestCB_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestCharBuf*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTCHARBUF, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTCHARBUF, TESTCFISH_TestCB_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestVector_run);
XS_INTERNAL(XS_Clownfish_Test_TestVector_run) {
dXSARGS;
SV *sv;
testcfish_TestVector* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestVector_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestVector*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTVECTOR, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTVECTOR, TESTCFISH_TestVector_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestByteBuf_run);
XS_INTERNAL(XS_Clownfish_Test_TestByteBuf_run) {
dXSARGS;
SV *sv;
testcfish_TestByteBuf* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestBB_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestByteBuf*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTBYTEBUF, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTBYTEBUF, TESTCFISH_TestBB_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestPtrHash_run);
XS_INTERNAL(XS_Clownfish_Test_TestPtrHash_run) {
dXSARGS;
SV *sv;
testcfish_TestPtrHash* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestPtrHash_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestPtrHash*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTPTRHASH, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTPTRHASH, TESTCFISH_TestPtrHash_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestClass_run);
XS_INTERNAL(XS_Clownfish_Test_TestClass_run) {
dXSARGS;
SV *sv;
testcfish_TestClass* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestClass_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestClass*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTCLASS, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTCLASS, TESTCFISH_TestClass_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_Util_TestAtomic_run);
XS_INTERNAL(XS_Clownfish_Test_Util_TestAtomic_run) {
dXSARGS;
SV *sv;
testcfish_TestAtomic* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestAtomic_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestAtomic*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTATOMIC, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTATOMIC, TESTCFISH_TestAtomic_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_Util_TestMemory_run);
XS_INTERNAL(XS_Clownfish_Test_Util_TestMemory_run) {
dXSARGS;
SV *sv;
testcfish_TestMemory* arg_self;
cfish_TestBatchRunner* arg_runner;
TESTCFISH_TestMemory_Run_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, runner");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestMemory*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTMEMORY, NULL);
sv = ST(1);
arg_runner = (cfish_TestBatchRunner*)XSBind_arg_to_cfish(aTHX_ sv, "runner", CFISH_TESTBATCHRUNNER, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTMEMORY, TESTCFISH_TestMemory_Run);
method(arg_self, arg_runner);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_StringCallbackTest_unchanged_by_callback);
XS_INTERNAL(XS_Clownfish_Test_StringCallbackTest_unchanged_by_callback) {
dXSARGS;
SV *sv;
testcfish_StringCallbackTest* arg_self;
cfish_String* arg_str;
TESTCFISH_StrCbTest_Unchanged_By_Callback_t method;
bool retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, str");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_StringCallbackTest*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_STRINGCALLBACKTEST, NULL);
sv = ST(1);
arg_str = (cfish_String*)XSBind_arg_to_cfish(aTHX_ sv, "str", CFISH_STRING, CFISH_ALLOCA_OBJ(CFISH_STRING));
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_STRINGCALLBACKTEST, TESTCFISH_StrCbTest_Unchanged_By_Callback);
retval = method(arg_self, arg_str);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_StringCallbackTest_callback);
XS_INTERNAL(XS_Clownfish_Test_StringCallbackTest_callback) {
dXSARGS;
testcfish_StringCallbackTest* arg_self;
TESTCFISH_StrCbTest_Callback_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 1) {
XSBind_invalid_args_error(aTHX_ cv, "self");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_StringCallbackTest*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_STRINGCALLBACKTEST, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_STRINGCALLBACKTEST, TESTCFISH_StrCbTest_Callback);
method(arg_self);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_pos_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_pos_arg) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
cfish_Obj* arg_arg;
TESTCFISH_TestHost_Test_Obj_Pos_Arg_t method;
cfish_Obj* retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, arg");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
arg_arg = (cfish_Obj*)XSBind_arg_to_cfish(aTHX_ sv, "arg", CFISH_OBJ, CFISH_ALLOCA_OBJ(CFISH_STRING));
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Obj_Pos_Arg);
retval = method(arg_self, arg_arg);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_pos_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_pos_arg_def) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
cfish_Obj* arg_arg;
TESTCFISH_TestHost_Test_Obj_Pos_Arg_Def_t method;
cfish_Obj* retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items < 1 || items > 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, [arg]");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
arg_arg = 1 < items ? (cfish_Obj*)XSBind_arg_to_cfish_nullable(aTHX_ sv, "arg", CFISH_OBJ, CFISH_ALLOCA_OBJ(CFISH_STRING)) : NULL;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Obj_Pos_Arg_Def);
retval = method(arg_self, arg_arg);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_label_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_label_arg) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 1),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
cfish_Obj* arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Obj_Label_Arg_t method;
cfish_Obj* retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
arg_arg = (cfish_Obj*)XSBind_arg_to_cfish(aTHX_ sv, "arg", CFISH_OBJ, CFISH_ALLOCA_OBJ(CFISH_STRING));
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Obj_Label_Arg);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_label_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_obj_label_arg_def) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 0),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
cfish_Obj* arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Obj_Label_Arg_Def_t method;
cfish_Obj* retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
arg_arg = locations[0] < items ? (cfish_Obj*)XSBind_arg_to_cfish_nullable(aTHX_ sv, "arg", CFISH_OBJ, CFISH_ALLOCA_OBJ(CFISH_STRING)) : NULL;
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Obj_Label_Arg_Def);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_pos_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_pos_arg) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
int32_t arg_arg;
TESTCFISH_TestHost_Test_Int32_Pos_Arg_t method;
int32_t retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, arg");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
if (!XSBind_sv_defined(aTHX_ sv)) {
XSBind_undef_arg_error(aTHX_ "arg");
}
arg_arg = (int32_t)SvIV(sv);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Int32_Pos_Arg);
retval = method(arg_self, arg_arg);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_pos_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_pos_arg_def) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
int32_t arg_arg;
TESTCFISH_TestHost_Test_Int32_Pos_Arg_Def_t method;
int32_t retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items < 1 || items > 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, [arg]");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
arg_arg = 1 < items && XSBind_sv_defined(aTHX_ sv)
? (int32_t)SvIV(sv) : 101;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Int32_Pos_Arg_Def);
retval = method(arg_self, arg_arg);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_label_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_label_arg) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 1),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
int32_t arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Int32_Label_Arg_t method;
int32_t retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
if (!XSBind_sv_defined(aTHX_ sv)) {
XSBind_undef_arg_error(aTHX_ "arg");
}
arg_arg = (int32_t)SvIV(sv);
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Int32_Label_Arg);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_label_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_int32_label_arg_def) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 0),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
int32_t arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Int32_Label_Arg_Def_t method;
int32_t retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
arg_arg = locations[0] < items && XSBind_sv_defined(aTHX_ sv)
? (int32_t)SvIV(sv) : 101;
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Int32_Label_Arg_Def);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_pos_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_pos_arg) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
bool arg_arg;
TESTCFISH_TestHost_Test_Bool_Pos_Arg_t method;
bool retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, arg");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
if (!XSBind_sv_defined(aTHX_ sv)) {
XSBind_undef_arg_error(aTHX_ "arg");
}
arg_arg = XSBind_sv_true(aTHX_ sv);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Bool_Pos_Arg);
retval = method(arg_self, arg_arg);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_pos_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_pos_arg_def) {
dXSARGS;
SV *sv;
testcfish_TestHost* arg_self;
bool arg_arg;
TESTCFISH_TestHost_Test_Bool_Pos_Arg_Def_t method;
bool retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items < 1 || items > 2) {
XSBind_invalid_args_error(aTHX_ cv, "self, [arg]");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(1);
arg_arg = 1 < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : true;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Bool_Pos_Arg_Def);
retval = method(arg_self, arg_arg);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_label_arg);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_label_arg) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 1),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
bool arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Bool_Label_Arg_t method;
bool retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
if (!XSBind_sv_defined(aTHX_ sv)) {
XSBind_undef_arg_error(aTHX_ "arg");
}
arg_arg = XSBind_sv_true(aTHX_ sv);
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Bool_Label_Arg);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_label_arg_def);
XS_INTERNAL(XS_Clownfish_Test_TestHost_test_bool_label_arg_def) {
dXSARGS;
static const XSBind_ParamSpec param_specs[2] = {
XSBIND_PARAM("arg", 0),
XSBIND_PARAM("unused", 0)
};
int32_t locations[2];
SV *sv;
testcfish_TestHost* arg_self;
bool arg_arg;
bool arg_unused;
TESTCFISH_TestHost_Test_Bool_Label_Arg_Def_t method;
bool retval;
CFISH_UNUSED_VAR(cv);
if (items < 1) {
XSBind_invalid_args_error(aTHX_ cv, "self, ...");
}
SP -= items;
/* Locate args on Perl stack. */
XSBind_locate_args(aTHX_ &ST(0), 1, items, param_specs,
locations, 2);
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
sv = ST(locations[0]);
arg_arg = locations[0] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : true;
sv = ST(locations[1]);
arg_unused = locations[1] < items && XSBind_sv_defined(aTHX_ sv)
? XSBind_sv_true(aTHX_ sv) : false;
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Test_Bool_Label_Arg_Def);
retval = method(arg_self, arg_arg, arg_unused);
ST(0) = newSViv(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_invoke_invalid_callback_from_c);
XS_INTERNAL(XS_Clownfish_Test_TestHost_invoke_invalid_callback_from_c) {
dXSARGS;
testcfish_TestHost* arg_self;
TESTCFISH_TestHost_Invoke_Invalid_Callback_From_C_t method;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 1) {
XSBind_invalid_args_error(aTHX_ cv, "self");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Invoke_Invalid_Callback_From_C);
method(arg_self);
XSRETURN(0);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_perl_alias);
XS_INTERNAL(XS_Clownfish_Test_TestHost_perl_alias) {
dXSARGS;
testcfish_TestHost* arg_self;
TESTCFISH_TestHost_Aliased_t method;
cfish_String* retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 1) {
XSBind_invalid_args_error(aTHX_ cv, "self");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Aliased);
retval = method(arg_self);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
CFISH_DECREF(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
XS_INTERNAL(XS_Clownfish_Test_TestHost_invoke_aliased_from_c);
XS_INTERNAL(XS_Clownfish_Test_TestHost_invoke_aliased_from_c) {
dXSARGS;
testcfish_TestHost* arg_self;
TESTCFISH_TestHost_Invoke_Aliased_From_C_t method;
cfish_String* retval;
CFISH_UNUSED_VAR(cv);
SP -= items;
if (items != 1) {
XSBind_invalid_args_error(aTHX_ cv, "self");
}
/* Extract vars from Perl stack. */
arg_self = (testcfish_TestHost*)XSBind_perl_to_cfish_noinc(aTHX_ ST(0), TESTCFISH_TESTHOST, NULL);
/* Execute */
method = CFISH_METHOD_PTR(TESTCFISH_TESTHOST, TESTCFISH_TestHost_Invoke_Aliased_From_C);
retval = method(arg_self);
ST(0) = XSBind_cfish_to_perl(aTHX_ (cfish_Obj*)retval);
CFISH_DECREF(retval);
sv_2mortal( ST(0) );
XSRETURN(1);
}
MODULE = Clownfish::Test PACKAGE = Clownfish::Test
BOOT:
{
static const cfish_XSBind_ClassSpec class_specs[] = {
{ "Clownfish::Test::TestHashIterator", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestLockFreeRegistry", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestObj", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestBoolean", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestErr", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestMethod", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestString", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestNum", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestHash", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestBlob", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestCharBuf", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestVector", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestByteBuf", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestPtrHash", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::TestClass", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::Util::TestAtomic", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::Util::TestMemory", "Clownfish::TestHarness::TestBatch", 1 },
{ "Clownfish::Test::StringCallbackTest", "Clownfish::Obj", 2 },
{ "Clownfish::Test::TestHost", "Clownfish::Obj", 15 }
};
static const cfish_XSBind_XSubSpec xsub_specs[] = {
{ "run", XS_Clownfish_Test_TestHashIterator_run },
{ "run", XS_Clownfish_Test_TestLockFreeRegistry_run },
{ "run", XS_Clownfish_Test_TestObj_run },
{ "run", XS_Clownfish_Test_TestBoolean_run },
{ "run", XS_Clownfish_Test_TestErr_run },
{ "run", XS_Clownfish_Test_TestMethod_run },
{ "run", XS_Clownfish_Test_TestString_run },
{ "run", XS_Clownfish_Test_TestNum_run },
{ "run", XS_Clownfish_Test_TestHash_run },
{ "run", XS_Clownfish_Test_TestBlob_run },
{ "run", XS_Clownfish_Test_TestCharBuf_run },
{ "run", XS_Clownfish_Test_TestVector_run },
{ "run", XS_Clownfish_Test_TestByteBuf_run },
{ "run", XS_Clownfish_Test_TestPtrHash_run },
{ "run", XS_Clownfish_Test_TestClass_run },
{ "run", XS_Clownfish_Test_Util_TestAtomic_run },
{ "run", XS_Clownfish_Test_Util_TestMemory_run },
{ "unchanged_by_callback", XS_Clownfish_Test_StringCallbackTest_unchanged_by_callback },
{ "callback", XS_Clownfish_Test_StringCallbackTest_callback },
{ "test_obj_pos_arg", XS_Clownfish_Test_TestHost_test_obj_pos_arg },
{ "test_obj_pos_arg_def", XS_Clownfish_Test_TestHost_test_obj_pos_arg_def },
{ "test_obj_label_arg", XS_Clownfish_Test_TestHost_test_obj_label_arg },
{ "test_obj_label_arg_def", XS_Clownfish_Test_TestHost_test_obj_label_arg_def },
{ "test_int32_pos_arg", XS_Clownfish_Test_TestHost_test_int32_pos_arg },
{ "test_int32_pos_arg_def", XS_Clownfish_Test_TestHost_test_int32_pos_arg_def },
{ "test_int32_label_arg", XS_Clownfish_Test_TestHost_test_int32_label_arg },
{ "test_int32_label_arg_def", XS_Clownfish_Test_TestHost_test_int32_label_arg_def },
{ "test_bool_pos_arg", XS_Clownfish_Test_TestHost_test_bool_pos_arg },
{ "test_bool_pos_arg_def", XS_Clownfish_Test_TestHost_test_bool_pos_arg_def },
{ "test_bool_label_arg", XS_Clownfish_Test_TestHost_test_bool_label_arg },
{ "test_bool_label_arg_def", XS_Clownfish_Test_TestHost_test_bool_label_arg_def },
{ "invoke_invalid_callback_from_c", XS_Clownfish_Test_TestHost_invoke_invalid_callback_from_c },
{ "perl_alias", XS_Clownfish_Test_TestHost_perl_alias },
{ "invoke_aliased_from_c", XS_Clownfish_Test_TestHost_invoke_aliased_from_c }
};
size_t num_classes
= sizeof(class_specs) / sizeof(class_specs[0]);
const char* file = __FILE__;
testcfish_bootstrap_perl();
cfish_XSBind_bootstrap(aTHX_ num_classes, class_specs,
xsub_specs, file);
}
MODULE = Clownfish::Test PACKAGE = Clownfish::Test
SV*
create_test_suite()
CODE:
cfish_TestSuite *suite = testcfish_Test_create_test_suite();
RETVAL = CFISH_OBJ_TO_SV_NOINC(suite);
OUTPUT: RETVAL
void
invoke_to_string(obj)
cfish_Obj *obj;
PPCODE:
cfish_String *str = CFISH_Obj_To_String(obj);
CFISH_DECREF(str);
int
refcount(obj)
cfish_Obj *obj;
CODE:
RETVAL = (int)CFISH_REFCOUNT_NN(obj);
OUTPUT: RETVAL
|