1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci#include <string> 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_ci#include "experimental/tskit/bindings/bindings.h" 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ciclass Something { 12cb93a386Sopenharmony_cipublic: 13cb93a386Sopenharmony_ci Something(std::string n): fName(n) {} 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci const std::string getName() { 16cb93a386Sopenharmony_ci return fName; 17cb93a386Sopenharmony_ci } 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci void setName(std::string name) { 20cb93a386Sopenharmony_ci fName = name; 21cb93a386Sopenharmony_ci } 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ciprivate: 24cb93a386Sopenharmony_ci std::string fName; 25cb93a386Sopenharmony_ci}; 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ciEMSCRIPTEN_BINDINGS(Core) { 28cb93a386Sopenharmony_ci TS_PRIVATE_EXPORT("_privateFunction(x: number, y: number): number") 29cb93a386Sopenharmony_ci function("_privateFunction", optional_override([](int x, int y)->size_t { 30cb93a386Sopenharmony_ci return x * y; 31cb93a386Sopenharmony_ci })); 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci /** 34cb93a386Sopenharmony_ci * This function does a public thing. 35cb93a386Sopenharmony_ci * @param input an ice cream flavor 36cb93a386Sopenharmony_ci */ 37cb93a386Sopenharmony_ci TS_EXPORT("publicFunction(input: string): void") 38cb93a386Sopenharmony_ci function("publicFunction", optional_override([](std::string s)->void { 39cb93a386Sopenharmony_ci printf("Hello %s\n", s.c_str()); 40cb93a386Sopenharmony_ci })); 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci /** 43cb93a386Sopenharmony_ci * The Something class is quite something. See SkSomething.h for more. 44cb93a386Sopenharmony_ci */ 45cb93a386Sopenharmony_ci class_<Something>("Something") 46cb93a386Sopenharmony_ci /** 47cb93a386Sopenharmony_ci * Returns a Something with the provided name. 48cb93a386Sopenharmony_ci * @param name 49cb93a386Sopenharmony_ci */ 50cb93a386Sopenharmony_ci TS_EXPORT("new(name: string): Something") 51cb93a386Sopenharmony_ci .constructor<std::string>() 52cb93a386Sopenharmony_ci /** 53cb93a386Sopenharmony_ci * Returns the associated name. 54cb93a386Sopenharmony_ci */ 55cb93a386Sopenharmony_ci TS_EXPORT("getName(): string") 56cb93a386Sopenharmony_ci .function("getName", &Something::getName) 57cb93a386Sopenharmony_ci TS_PRIVATE_EXPORT("setName(name: string): void") 58cb93a386Sopenharmony_ci .function("_setName", &Something::setName); 59cb93a386Sopenharmony_ci} 60