ed0c0ed028
This adds some initial features for generating the ambient namespace files (the TS equivalent of .h files) for the C++ binding files. There are a few tests and it works on the sample code in tskit. I split the bindings/ folder into bindings/ and interface/ (for C++ and TS code, respectively). This can be tested locally by running make generate && make debug && make serve and verifying that everything compiles and runs in the browser. One thing I changed for easier parsing was making a @type annotation required, with an @optional tag for making a field or constant optional. Change-Id: If9c5a664e84fac4c734277cddd7774989a1f7bf8 Bug: skia:11826 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/407476 Reviewed-by: Nathaniel Nifong <nifong@google.com> Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
31 lines
953 B
TypeScript
31 lines
953 B
TypeScript
/// <reference path="load.ts" />
|
|
/// <reference path="../bindings/core.d.ts" />
|
|
/// <reference path="public_api.d.ts" />
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
namespace Core {
|
|
// Module is the C++ module with the private (and some public) bindings on it.
|
|
declare const Module: core.Bindings;
|
|
declare const CanvasKit: public_api.CanvasKit;
|
|
load.afterLoad(() => {
|
|
/**
|
|
* This function says hello
|
|
*
|
|
* @param x some number
|
|
* @param y some other number
|
|
* @ts sayHello(x: number, y: number): void;
|
|
*/
|
|
CanvasKit.sayHello = (x: number, y: number) => {
|
|
console.log('hello', Module._privateFunction(x, y));
|
|
};
|
|
|
|
/**
|
|
* This sets the name twice for good measure.
|
|
* @param name some param
|
|
* @ts Something::setName(name: string): void;
|
|
*/
|
|
CanvasKit.Something.prototype.setName = function setName(name: string) {
|
|
this._setName(name + name);
|
|
};
|
|
});
|
|
}
|