223
|
1 module Stone {
|
|
2 /**
|
|
3 * This file contains primitives to interface with WebAssembly and
|
|
4 * with the Stone framework.
|
|
5 **/
|
|
6
|
|
7 export declare type InitializationCallback = () => void;
|
|
8
|
|
9 export declare var StoneFrameworkModule : any;
|
|
10
|
|
11 //const ASSETS_FOLDER : string = "assets/lib";
|
|
12 //const WASM_FILENAME : string = "orthanc-framework";
|
|
13
|
|
14
|
|
15 export class Framework
|
|
16 {
|
|
17 private static singleton_ : Framework = null;
|
|
18
|
|
19 private constructor(verbose : boolean)
|
|
20 {
|
|
21 //this.ccall('Initialize', null, [ 'number' ], [ verbose ]);
|
|
22 }
|
|
23
|
|
24
|
|
25 public ccall(name: string,
|
|
26 returnType: string,
|
|
27 argTypes: Array<string>,
|
|
28 argValues: Array<any>) : any
|
|
29 {
|
|
30 return StoneFrameworkModule.ccall(name, returnType, argTypes, argValues);
|
|
31 }
|
|
32
|
|
33
|
|
34 public cwrap(name: string,
|
|
35 returnType: string,
|
|
36 argTypes: Array<string>) : any
|
|
37 {
|
|
38 return StoneFrameworkModule.cwrap(name, returnType, argTypes);
|
|
39 }
|
|
40
|
|
41
|
|
42 public static GetInstance() : Framework
|
|
43 {
|
|
44 if (Framework.singleton_ == null) {
|
|
45 throw new Error('The WebAssembly module is not loaded yet');
|
|
46 } else {
|
|
47 return Framework.singleton_;
|
|
48 }
|
|
49 }
|
|
50
|
|
51
|
|
52 public static Initialize(verbose: boolean,
|
|
53 callback: InitializationCallback)
|
|
54 {
|
|
55 console.log('Initializing WebAssembly');
|
|
56
|
|
57 (<any> window).StoneFrameworkModule = {
|
|
58 preRun: [
|
|
59 function() {
|
|
60 console.log('Loading the Stone Framework using WebAssembly');
|
|
61 }
|
|
62 ],
|
|
63 postRun: [
|
|
64 function() {
|
|
65 // This function is called by ".js" wrapper once the ".wasm"
|
|
66 // WebAssembly module has been loaded and compiled by the
|
|
67 // browser
|
|
68 console.log('WebAssembly is ready');
|
|
69 Framework.singleton_ = new Framework(verbose);
|
|
70 callback();
|
|
71 }
|
|
72 ],
|
|
73 print: function(text : string) {
|
|
74 console.log(text);
|
|
75 },
|
|
76 printErr: function(text : string) {
|
|
77 console.error(text);
|
|
78 },
|
|
79 totalDependencies: 0
|
|
80 };
|
|
81
|
|
82 // Dynamic loading of the JavaScript wrapper around WebAssembly
|
|
83 var script = document.createElement('script');
|
|
84 script.type = 'application/javascript';
|
|
85 script.src = "orthanc-stone.js"; // ASSETS_FOLDER + '/' + WASM_FILENAME + '.js';
|
|
86 script.async = true;
|
|
87 document.head.appendChild(script);
|
|
88 }
|
|
89 }
|
|
90 } |