blob: cba2da73d529fa61c3ff4d4ec4628ccc09b2bc36 [file] [log] [blame]
/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* This is not a real C++ file, but used to test the parsing of gen_types
*/
#include <string>
#include "experimental/tskit/bindings/bindings.h"
EMSCRIPTEN_BINDINGS(Core) {
TS_PRIVATE_EXPORT("_privateFunction2(x: number, y: number): number")
function("_privateFunction2", optional_override([](int x, int y)->size_t {
return x * y;
}));
/**
* This function does a public thing.
* @param input an ice cream flavor
*/
TS_EXPORT("publicFunction2(input: string): void")
function("publicFunction2", optional_override([](std::string s)->void {
printf("Hello %s\n", s.c_str());
}));
/**
* The Something class is quite something. See SkSomething.h for more.
*/
class_<Something>("Something")
/**
* Returns a Something with the provided name.
* @param name
*/
TS_EXPORT("new(name: string): Something")
.constructor<std::string>()
/**
* Returns the associated name.
*/
TS_EXPORT("getName(): string")
.function("getName", &Something::getName)
TS_PRIVATE_EXPORT("_setName(name: string): void")
.function("_setName", &Something::setName);
/**
* The AnotherClass class is another class.
*/
class_<AnotherClass>("AnotherClass")
TS_EXPORT("new(): AnotherClass")
.constructor<>()
/**
* Returns a Something with the provided name.
* @param name
* @param thing - will be used, I promise.
*/
TS_EXPORT("new(name: string, thing: Something): AnotherClass")
.constructor<std::string,Something>()
/**
* Returns the associated thing.
*/
TS_EXPORT("get(): Something")
.function("get", &AnotherClass::get);
value_object<SomeValueObject>("SomeValueObject")
/**
The number of columns that the frobulator needs.
@type @optional number
*/
.field("columns", &SomeValueObject::columns)
/**
* The object associated with the frobulator.
* @type AnotherClass
*/
.field("object", &SomeValueObject::object)
/** @type string*/
.field("name", &SomeValueObject::slot)
/**
* @type boolean
*/
.field("isInteger", &SomeValueObject::isInteger);
TS_PRIVATE_EXPORT("_privateFunction1(ptr: number): number;")
function("_privateFunction1", &SkCanvas::whatever);
/**
* This function does another public thing.
* @param input an ice cream flavor
*/
TS_EXPORT("publicFunction1(): boolean;")
function("publicFunction1", &SkCanvas::blerg);
/**
* @type boolean
*/
constant("hasBird", true);
/**
* This is the flag which is a lot of fun.
* It is used in a variety of ways.
* #funwithflags
* @type number
*/
constant("SOME_FLAG", 0x2);
#ifdef SK_EXTRA_FEATURE
/**
* This is set if the extra feature is compiled in.
* @type @optional string
*/
constant("optionalConst", "foo");
#endif
}