skia2/experimental/tskit/bindings/core.cpp

60 lines
1.5 KiB
C++
Raw Normal View History

/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <string>
#include "experimental/tskit/bindings/bindings.h"
class Something {
public:
Something(std::string n): fName(n) {}
const std::string getName() {
return fName;
}
void setName(std::string name) {
fName = name;
}
private:
std::string fName;
};
EMSCRIPTEN_BINDINGS(Core) {
TS_PRIVATE_EXPORT("_privateFunction(x: number, y: number): number")
function("_privateFunction", 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("publicFunction(input: string): void")
function("publicFunction", 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);
}