├── test3 ├── totoErr.txt ├── test.bat ├── FAXE t3.hxml ├── SndTV.hx ├── BUILD_WIN_DEBUG.bat ├── BUILD_SWITCH_DEBUG.bat ├── build_nx.hxml ├── build.hxml ├── Cpp.hx ├── hxd │ ├── Signal.hx │ └── Stack.hx ├── FAXE t3.hxproj ├── Test.hx ├── Snd.hx └── toto.txt ├── lib ├── Linux │ └── put api here.txt ├── Switch │ └── put api here.txt ├── Linux64 │ └── put api here.txt ├── Windows │ └── put api here.txt └── COPY_YOUR_FMOD_API_HERE ├── test2 ├── test.bat ├── FAXE t2.hxml ├── BUILD_SWITCH_DEBUG.bat ├── build_nx.hxml ├── build.hxml ├── Cpp.hx ├── FAXE t2.hxproj └── Test.hx ├── .gitignore ├── README.md ├── haxelib.json ├── test ├── build.hxml └── Test.hx ├── include.xml ├── LICENSE ├── linc ├── Linc.hx ├── linc_faxe.xml ├── linc_faxe.h └── linc_faxe.cpp └── faxe └── Faxe.hx /test3/totoErr.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/Linux/put api here.txt: -------------------------------------------------------------------------------- 1 | yes here :) -------------------------------------------------------------------------------- /lib/Switch/put api here.txt: -------------------------------------------------------------------------------- 1 | yes here :) -------------------------------------------------------------------------------- /lib/Linux64/put api here.txt: -------------------------------------------------------------------------------- 1 | yes here :) -------------------------------------------------------------------------------- /lib/Windows/put api here.txt: -------------------------------------------------------------------------------- 1 | yes here :) -------------------------------------------------------------------------------- /test2/test.bat: -------------------------------------------------------------------------------- 1 | cd cpp 2 | CALL Test-debug.exe -------------------------------------------------------------------------------- /test3/test.bat: -------------------------------------------------------------------------------- 1 | cd cpp 2 | CALL Test-debug.exe -------------------------------------------------------------------------------- /lib/COPY_YOUR_FMOD_API_HERE: -------------------------------------------------------------------------------- 1 | in the right platform folder -------------------------------------------------------------------------------- /test2/FAXE t2.hxml: -------------------------------------------------------------------------------- 1 | -cp 2 | -cpp cpp 3 | -main Main 4 | windows 5 | -------------------------------------------------------------------------------- /test3/FAXE t3.hxml: -------------------------------------------------------------------------------- 1 | -lib faxe 2 | -cp 3 | -cpp cpp 4 | -main Test 5 | windows 6 | -------------------------------------------------------------------------------- /test3/SndTV.hx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ashea-code/faxe/HEAD/test3/SndTV.hx -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib/api/* 2 | lib/bin/* 3 | lib/doc/* 4 | test/cpp 5 | /test2/cpp 6 | /lib/Windows/api 7 | /test2/BUILD_WIN_DEBUG.bat 8 | /test2/toto.txt 9 | /test2/totoErr.txt 10 | /lib/Switch/api 11 | /test3/cpp 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # faxe 2 | FMOD Audio Engine for Haxe 3 | 4 | I have continued the work of Aaron Shea and modernized it a bit to play fmod io low level stuff. ( see https://github.com/AaronShea/faxe ) 5 | 6 | LICENCE : MIT 7 | -------------------------------------------------------------------------------- /test3/BUILD_WIN_DEBUG.bat: -------------------------------------------------------------------------------- 1 | echo "adding win vars" 2 | @echo off 3 | SET HAXEPATH=C:\HaxeToolkit_347\haxe\ 4 | SET NEKO_INSTPATH=C:\HaxeToolkit_347\neko\ 5 | SET PATH=C:\HaxeToolkit_347\haxe;%PATH% 6 | SET HAXELIB_PATH=C:\HaxeToolkit_347\haxelibs 7 | @echo on 8 | haxe build.hxml 9 | -------------------------------------------------------------------------------- /test2/BUILD_SWITCH_DEBUG.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo "adding switch vars" 3 | SET HAXEPATH=C:\HaxeToolkit_347\haxe\ 4 | SET NEKO_INSTPATH=C:\HaxeToolkit_347\neko\ 5 | SET PATH=C:\HaxeToolkit_347\haxe;%PATH% 6 | SET HAXELIB_PATH=C:\HaxeToolkit_347\haxelibs 7 | @echo on 8 | haxe build_nx.hxml 9 | -------------------------------------------------------------------------------- /test3/BUILD_SWITCH_DEBUG.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo "adding switch vars" 3 | SET HAXEPATH=C:\HaxeToolkit_347\haxe\ 4 | SET NEKO_INSTPATH=C:\HaxeToolkit_347\neko\ 5 | SET PATH=C:\HaxeToolkit_347\haxe;%PATH% 6 | SET HAXELIB_PATH=C:\HaxeToolkit_347\haxelibs 7 | @echo on 8 | haxe build_nx.hxml 9 | -------------------------------------------------------------------------------- /haxelib.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "faxe", 3 | "url" : "https://github.com/delahee/faxe/", 4 | "license" : "MIT", 5 | "tags": ["fmod","audio","crossplatform"], 6 | 7 | "description" : "cpp fmod binding", 8 | "version" : "0.0.66", 9 | "releasenote" : "", 10 | "contributors" : ["delahee"], 11 | "dependencies" : { } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /test/build.hxml: -------------------------------------------------------------------------------- 1 | -main Test.hx 2 | -cpp cpp/ 3 | -cp ../ 4 | -debug 5 | # pick a target 6 | 7 | #-D mac 8 | -D windows 9 | #-D linux 10 | #-D ios 11 | #-D android 12 | 13 | # To build 32 or 64 bit 14 | #(if not using the default for your platform): 15 | 16 | #-D HXCPP_M64 17 | #-D HXCPP_M32 18 | 19 | # For android/ios you have these and more: 20 | #-D HXCPP_ARMV7 21 | #-D HXCPP_ARMV6 22 | #-D HXCPP_ARM64 -------------------------------------------------------------------------------- /test2/build_nx.hxml: -------------------------------------------------------------------------------- 1 | -main Test.hx 2 | 3 | -cpp cpp 4 | -cp ../ 5 | -debug 6 | # pick a target 7 | 8 | #-D mac 9 | #-D windows 10 | #-D linux 11 | #-D ios 12 | #-D android 13 | -D switch 14 | 15 | # To build 32 or 64 bit 16 | #(if not using the default for your platform): 17 | 18 | -D HXCPP_M64 19 | #-D HXCPP_M32 20 | 21 | # For android/ios you have these and more: 22 | #-D HXCPP_ARMV7 23 | #-D HXCPP_ARMV6 24 | #-D HXCPP_ARM64 -------------------------------------------------------------------------------- /test3/build_nx.hxml: -------------------------------------------------------------------------------- 1 | -main Test.hx 2 | 3 | -cpp cpp 4 | -cp ../ 5 | -debug 6 | # pick a target 7 | 8 | #-D mac 9 | #-D windows 10 | #-D linux 11 | #-D ios 12 | #-D android 13 | -D switch 14 | 15 | # To build 32 or 64 bit 16 | #(if not using the default for your platform): 17 | 18 | -D HXCPP_M64 19 | #-D HXCPP_M32 20 | 21 | # For android/ios you have these and more: 22 | #-D HXCPP_ARMV7 23 | #-D HXCPP_ARMV6 24 | #-D HXCPP_ARM64 -------------------------------------------------------------------------------- /test2/build.hxml: -------------------------------------------------------------------------------- 1 | -main Test.hx 2 | 3 | -cpp cpp 4 | 5 | -cp .. 6 | #-lib faxe 7 | #-cp . 8 | 9 | 10 | -debug 11 | # pick a target 12 | 13 | #-D mac 14 | -D windows 15 | #-D linux 16 | #-D ios 17 | #-D android 18 | 19 | # To build 32 or 64 bit 20 | #(if not using the default for your platform): 21 | 22 | #-D HXCPP_M64 23 | #-D HXCPP_M32 24 | 25 | # For android/ios you have these and more: 26 | #-D HXCPP_ARMV7 27 | #-D HXCPP_ARMV6 28 | #-D HXCPP_ARM64 -------------------------------------------------------------------------------- /test3/build.hxml: -------------------------------------------------------------------------------- 1 | -main Test.hx 2 | 3 | -cpp cpp 4 | 5 | -cp .. 6 | #-lib faxe 7 | #-cp . 8 | 9 | 10 | -debug 11 | # pick a target 12 | 13 | #-D mac 14 | -D windows 15 | #-D linux 16 | #-D ios 17 | #-D android 18 | 19 | # To build 32 or 64 bit 20 | #(if not using the default for your platform): 21 | 22 | #-D HXCPP_M64 23 | #-D HXCPP_M32 24 | 25 | # For android/ios you have these and more: 26 | #-D HXCPP_ARMV7 27 | #-D HXCPP_ARMV6 28 | #-D HXCPP_ARM64 -------------------------------------------------------------------------------- /test2/Cpp.hx: -------------------------------------------------------------------------------- 1 | typedef Ptr = cpp.Pointer; 2 | 3 | @:keep 4 | class Cpp { 5 | 6 | @:generic 7 | @:extern 8 | public static inline function addr( a : T ){ 9 | return cpp.Pointer.addressOf(a); 10 | } 11 | 12 | @:generic 13 | @:extern 14 | public static inline function nullptr() : cpp.Pointer { 15 | return cast null; 16 | } 17 | 18 | 19 | @:generic 20 | @:extern 21 | public static inline function ref( a : cpp.Pointer ) { 22 | return cast a.ref; 23 | } 24 | 25 | 26 | } -------------------------------------------------------------------------------- /include.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
-------------------------------------------------------------------------------- /test3/Cpp.hx: -------------------------------------------------------------------------------- 1 | typedef Ptr = cpp.Pointer; 2 | 3 | @:keep 4 | class Cpp { 5 | 6 | @:generic 7 | @:extern 8 | public static inline function addr( a : T ){ 9 | return cpp.Pointer.addressOf(a); 10 | } 11 | 12 | @:generic 13 | @:extern 14 | public static inline function nullptr() : cpp.Pointer { 15 | return cast null; 16 | } 17 | 18 | @:generic 19 | @:extern 20 | public static inline function ref( a : cpp.Pointer ) { 21 | return cast a.ref; 22 | } 23 | 24 | public static inline function cstring( str : String ) : cpp.ConstCharStar { 25 | return cpp.ConstCharStar.fromString(str); 26 | } 27 | 28 | 29 | 30 | } -------------------------------------------------------------------------------- /test/Test.hx: -------------------------------------------------------------------------------- 1 | import faxe.Faxe; 2 | 3 | class Test 4 | { 5 | static function main() 6 | { 7 | Faxe.fmod_init(36); 8 | 9 | // Load a sound bank 10 | Faxe.fmod_load_bank("./MasterBank.bank"); 11 | 12 | // Make sure to load the STRINGS file to enable loading 13 | // stuff by FMOD Path 14 | Faxe.fmod_load_bank("./MasterBank.strings.bank"); 15 | 16 | // Load a test event 17 | Faxe.fmod_load_event("event:/testEvent","toto"); 18 | Faxe.fmod_play_event("event:/testEvent"); 19 | 20 | // Get and set an even parameter to change effect values 21 | trace("Lowpass param defaults to: " + Faxe.fmod_get_param("event:/testEvent", "Lowpass")); 22 | trace("Setting Lowpass param to 50.0"); 23 | Faxe.fmod_set_param("event:/testEvent", "Lowpass", 50.0); 24 | 25 | // Bad little forever loop to pump FMOD commands 26 | while (true) 27 | { 28 | // trace("event:/testEvent is playing: " + Faxe.fmod_event_is_playing("event:/testEvent")); 29 | Faxe.fmod_update(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /test3/hxd/Signal.hx: -------------------------------------------------------------------------------- 1 | package hxd; 2 | 3 | class Signal { 4 | var signals:ArrayVoid> = []; 5 | var signalsOnce:ArrayVoid> = []; 6 | 7 | public var isTriggerring = false; 8 | public inline function add(f:Void->Void) signals.push( f ); 9 | public inline function addOnce(f:Void->Void) signalsOnce.push( f ); 10 | public inline function new() {} 11 | public function trigger() { 12 | isTriggerring = true; 13 | 14 | if( signals.length > 0 ) 15 | for (s in signals) 16 | s(); 17 | 18 | if( signalsOnce.length > 0 ){ 19 | for (s in signalsOnce) s(); 20 | signalsOnce = []; 21 | } 22 | isTriggerring = false; 23 | } 24 | 25 | public inline function remove(f) { 26 | signals.remove(f); 27 | signalsOnce.remove(f); 28 | } 29 | 30 | public inline function purge() { 31 | dispose(); 32 | } 33 | 34 | public inline function dispose() { 35 | signals = []; 36 | signalsOnce = []; 37 | } 38 | 39 | 40 | public inline function getHandlerCount() return signals.length + signalsOnce.length; 41 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Aaron M. Shea 4 | Copyright (c) 2019 David "Blackmagic" Elahee 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /test2/FAXE t2.hxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | haxe build.hxml 47 | 48 | 49 | 50 | 51 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /test3/FAXE t3.hxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | haxe build.hxml 48 | 49 | 50 | 51 | 52 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /test2/Test.hx: -------------------------------------------------------------------------------- 1 | import faxe.Faxe; 2 | import Cpp; 3 | 4 | class Test 5 | { 6 | 7 | 8 | static function main() 9 | { 10 | Faxe.fmod_init(36); 11 | 12 | var file = "accuser_nodrums.wav"; 13 | 14 | 15 | var file = "Bomblasta_nodrums.ogg"; 16 | var file = "Draculaugh.wav"; 17 | var file = "04 - Flesh And Bones (feat. Benjamin Guerry).mp3"; 18 | var file = "07 - Crush (feat. Jay Kloeckner).mp3"; 19 | Faxe.fmod_load_sound(file); 20 | 21 | var chan : FmodChannelRef = FaxeRef.playSound(file , false); 22 | 23 | { 24 | var f : cpp.Float32 = 0.0; 25 | chan.getVolume( Cpp.addr(f) ); 26 | trace(f); 27 | //chan.ptr.setVolume( 0.1 ); 28 | } 29 | 30 | { //seek 31 | //chan.setPosition( 60*1000, FmodTimeUnit.FTM_MS); 32 | } 33 | 34 | { 35 | var f : cpp.UInt32 = 0; 36 | chan.getPosition( Cpp.addr(f), FmodTimeUnit.FTM_MS); 37 | trace(f); 38 | } 39 | 40 | { 41 | var b : Bool = false; 42 | chan.isPlaying( Cpp.addr(b)); 43 | trace(b); 44 | } 45 | 46 | {//set to loop 47 | chan.setMode(FmodMode.FMOD_LOOP_NORMAL); 48 | chan.setLoopCount(10); 49 | } 50 | 51 | chan.getVolume; 52 | chan.setVolume; 53 | chan.getPosition; 54 | chan.setPosition; 55 | chan.stop; 56 | chan.isPlaying; 57 | chan.getMode; 58 | chan.getLoopCount; 59 | chan.setLoopCount; 60 | chan.setMode; 61 | 62 | var snd : FmodSoundRef = FaxeRef.getSound(file); 63 | snd.getMode; 64 | snd.getLoopCount; 65 | snd.setLoopCount; 66 | snd.setMode; 67 | snd.getPosition; 68 | snd.setPosition; 69 | 70 | var s : Ptr = Cpp.nullptr(); 71 | 72 | var len : cpp.UInt32 = 0; 73 | var res = snd.getLength( Cpp.addr(len), FmodTimeUnit.FTM_MS); 74 | snd.release; 75 | 76 | var ptr : Ptr = Faxe.fmod_get_system(); 77 | var sys = ptr.ref; 78 | sys.getSoundRAM; 79 | 80 | var sys : FmodSystemRef = FaxeRef.getSystem(); 81 | sys.getSoundRAM; 82 | 83 | // Bad little forever loop to pump FMOD commands 84 | while (true) 85 | { 86 | // trace("event:/testEvent is playing: " + Faxe.fmod_event_is_playing("event:/testEvent")); 87 | Faxe.fmod_update(); 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /linc/Linc.hx: -------------------------------------------------------------------------------- 1 | package linc; 2 | 3 | import haxe.io.Path; 4 | import haxe.macro.Expr; 5 | import haxe.macro.Context; 6 | 7 | using haxe.macro.PositionTools; 8 | 9 | 10 | class Linc { 11 | 12 | /** Adds a private internal inline static variable called __touch, 13 | which sets the value to the current time so that builds are always 14 | updated by the code, and native changes are dragged in automatically (except for header only changes) */ 15 | macro public static function touch() : Array { 16 | 17 | var _fields = Context.getBuildFields(); 18 | 19 | _fields.push({ 20 | name: '__touch', pos: Context.currentPos(), 21 | doc: null, meta: [], access: [APrivate, AStatic, AInline], 22 | kind: FVar(macro : String, macro $v{ Std.string(Date.now().getTime()) }), 23 | }); 24 | 25 | return _fields; 26 | 27 | } //touch 28 | 29 | /** Adds a @:buildXml meta node with a linc and an tag. 30 | The set is named LINC_${_lib}_PATH, and points to the root folder of the library. 31 | That path is calculated from the calling file using the optional _relative_root, default ../ 32 | This means that somelib/ is the root. 33 | somelib/somelib/Somelib.hx is the calling file. 34 | LINC_SOMELIB_PATH is set to somelib/ 35 | ${LINC_SOMELIB_PATH}/linc/linc_${_lib}.xml is added directly. */ 36 | macro public static function xml(_lib:String, _relative_root:String='../'):Array { 37 | 38 | var _pos = Context.currentPos(); 39 | var _pos_info = _pos.getInfos(); 40 | var _class = Context.getLocalClass(); 41 | 42 | var _source_path = Path.directory(_pos_info.file); 43 | if( !Path.isAbsolute(_source_path) ) { 44 | _source_path = Path.join([Sys.getCwd(), _source_path]); 45 | } 46 | 47 | _source_path = Path.normalize(_source_path); 48 | 49 | var _linc_lib_path = Path.normalize(Path.join([_source_path, _relative_root])); 50 | var _linc_include_path = Path.normalize(Path.join([ _linc_lib_path, './linc/linc_${_lib}.xml' ])); 51 | var _linc_lib_var = 'LINC_${_lib.toUpperCase()}_PATH'; 52 | 53 | var _define = ''; 54 | var _import_path = '$${$_linc_lib_var}linc/linc_${_lib}.xml'; 55 | var _import = ''; 56 | 57 | _class.get().meta.add(":buildXml", [{ expr:EConst( CString( '$_define\n$_import' ) ), pos:_pos }], _pos ); 58 | 59 | return Context.getBuildFields(); 60 | 61 | } //xml 62 | 63 | } //Linc -------------------------------------------------------------------------------- /linc/linc_faxe.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 | 7 |
8 | 9 |
10 | 11 |
12 | 13 |
14 | 15 |
16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 | 38 |
39 | 40 |
41 | 42 | 43 |
44 | 45 |
46 | 47 | 48 |
49 | 50 |
51 | 52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |
63 | 64 | 65 |
66 | 67 | 68 |
69 | 70 |
71 | 72 | 73 |
74 |
75 | 76 | 77 |
78 | -------------------------------------------------------------------------------- /test3/hxd/Stack.hx: -------------------------------------------------------------------------------- 1 | package hxd; 2 | 3 | 4 | private class StackIterator { 5 | var b : Array; 6 | var len : Int; 7 | var pos : Int; 8 | public inline function new( b : Array,len:Int ) { 9 | this.b = b; 10 | this.len = len; 11 | this.pos = 0; 12 | } 13 | public inline function hasNext() { 14 | return pos < len; 15 | } 16 | public inline function next() { 17 | return b[pos++]; 18 | } 19 | } 20 | 21 | private class BackwardStackIterator { 22 | var b : Array; 23 | var len : Int; 24 | var pos : Int; 25 | public inline function new( b : Array,len:Int ) { 26 | this.b = b; 27 | this.len = len; 28 | this.pos = 0; 29 | } 30 | public inline function hasNext() { 31 | return pos < len; 32 | } 33 | public inline function next() { 34 | return b[len - pos++ - 1]; 35 | } 36 | } 37 | 38 | //could be an abstract but they are not reliable enough at the time I write this 39 | @:generic 40 | class Stack { 41 | var arr : Array=[]; 42 | var pos = 0; 43 | 44 | public var length(get, never):Int; inline function get_length() return pos; 45 | public var quota(get, never):Int; inline function get_quota() return arr.length; 46 | 47 | public inline function new() {} 48 | 49 | /** 50 | * slow, breaks order but no realloc nor mass move 51 | */ 52 | public inline function remove(v:T):Bool{ 53 | var i = arr.indexOf(v); 54 | return removeAt(i); 55 | } 56 | 57 | public inline function random():T{ 58 | return arr[Std.random( get_length() )]; 59 | } 60 | 61 | public inline function removeOrdered(v:T):Bool { 62 | if ( pos == 0 ) return false; 63 | var i = arr.indexOf(v); 64 | if ( i < 0 ) return false; 65 | 66 | return 67 | if ( i >= pos ) { 68 | arr[i] = null; 69 | false; 70 | } else 71 | removeOrderedAt(i); 72 | } 73 | 74 | public inline function removeOrderedAt(idx:Int):Bool { 75 | if ( idx < 0 ) return false; 76 | if ( pos == 0 ) return false; 77 | for ( i in idx...pos) 78 | arr[i] = arr[i + 1]; 79 | pos--; 80 | return true; 81 | } 82 | 83 | public inline function removeAt(i:Int):Bool { 84 | if ( i < 0 ) return false; 85 | if( pos > 1 ){ 86 | arr[i] = arr[pos-1]; 87 | arr[pos-1] = null; 88 | pos--; 89 | } 90 | else { 91 | arr[0] = null; 92 | pos = 0; 93 | } 94 | return true; 95 | } 96 | 97 | public function reverse() { 98 | for ( i in 0...length>>1) { 99 | var t = arr[i]; 100 | arr[i] = arr[length - 1 - i]; 101 | arr[length - 1 - i] = t; 102 | } 103 | } 104 | 105 | @:noDebug 106 | public inline function reserve(n) { 107 | if (arr.length < n ) 108 | arr[n] = null; 109 | return this; 110 | } 111 | 112 | public inline function push(v:T) { 113 | arr[pos++] = v; 114 | } 115 | 116 | public inline function pop() : T { 117 | if ( pos == 0 ) return null; 118 | 119 | var v = arr[pos-1]; 120 | arr[--pos] = null; 121 | return v; 122 | } 123 | 124 | public inline function first() : T { 125 | if ( pos == 0 ) return null; 126 | return arr[0]; 127 | } 128 | 129 | public function pushFront(v:T){ 130 | for ( i in 0...pos ) 131 | arr[pos - i] = arr[pos - i - 1]; 132 | arr[0] = v; 133 | pos++; 134 | } 135 | 136 | public function swap(i0,i1) { 137 | if ( i0 == i1) return; 138 | var t = arr[i0]; 139 | arr[i0] = arr[i1]; 140 | arr[i1] = t; 141 | } 142 | 143 | public inline function last() : T { 144 | if ( pos == 0 ) return null; 145 | return arr[pos - 1]; 146 | } 147 | 148 | public inline function indexOf(elem:T) : Int { 149 | return arr.indexOf(elem); 150 | } 151 | 152 | public inline function unsafeGet(idx:Int) { 153 | return arr[idx]; 154 | } 155 | 156 | public inline function hardReset() { 157 | for ( i in 0...arr.length) arr[i] = null; 158 | pos = 0; 159 | } 160 | 161 | public inline function reset() { 162 | pos = 0; 163 | } 164 | 165 | public inline function iterator() return new StackIterator(arr,get_length()); 166 | public inline function backWardIterator() return new BackwardStackIterator(arr,get_length()); 167 | public inline function toString() { 168 | var s = ""; 169 | for ( i in 0...pos) { 170 | s += Std.string(arr[i]); 171 | } 172 | return s; 173 | } 174 | 175 | public inline function toData() return arr; 176 | public inline function toArray() return arr; 177 | 178 | public inline function fill(arr:Array) { 179 | for ( a in arr ) 180 | push( a ); 181 | return this; 182 | } 183 | 184 | public inline function get(pos:Int) { 185 | return arr[pos]; 186 | } 187 | 188 | public inline function set(pos:Int, v:T):T { 189 | arr[pos] = v; 190 | return v; 191 | } 192 | 193 | public function has( v:T ){ 194 | var idx = arr.indexOf(v); 195 | return idx >= 0 && idx < pos; 196 | } 197 | 198 | public function scramble() { 199 | var rd = Std.random; 200 | for(x in 0...(length + rd( length )) ){ 201 | var b = rd(length); 202 | var a = rd(length); 203 | var temp = arr[a]; 204 | arr[ a ] = arr[ b ]; 205 | arr[ b ] = temp; 206 | } 207 | } 208 | } 209 | 210 | class StackTest { 211 | public static function test() { 212 | var a : hxd.Stack> = new hxd.Stack>(); 213 | a.fill([1, 2, 3, 4]); 214 | a.removeOrdered(3); 215 | if ( a.get(0) != 1 || a.get(2) != 4) throw "assert"; 216 | trace(a); 217 | 218 | var a : hxd.Stack> = new hxd.Stack>() 219 | .fill([1, 2, 3, 4]); 220 | 221 | a.pushFront( 0 ); 222 | if ( a.get(0) != 0 || a.get(2) != 2) throw "assert"; 223 | 224 | var a : hxd.Stack> = new hxd.Stack>(); 225 | a.pushFront( 66 ); 226 | trace(a); 227 | } 228 | } -------------------------------------------------------------------------------- /linc/linc_faxe.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Faxe - FMOD bindings for Haxe 3 | * 4 | * The MIT License (MIT) 5 | * 6 | * Copyright (c) 2016 Aaron M. Shea 7 | * 8 | * Permission is hereby granted, free of charge, to any person obtaining a copy 9 | * of this software and associated documentation files (the "Software"), to deal 10 | * in the Software without restriction, including without limitation the rights 11 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the Software is 13 | * furnished to do so, subject to the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be included in 16 | * all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | * THE SOFTWARE. 25 | */ 26 | #pragma once 27 | 28 | #define IMPLEMENT_API 29 | 30 | #if (defined __MWERKS__) 31 | #include 32 | #endif 33 | 34 | #include 35 | 36 | namespace linc 37 | { 38 | namespace faxe 39 | { 40 | //// Baisc FMOD operations 41 | 42 | /** 43 | * Initialization of FMOD sound system 44 | * \param[numChannels] number of channels to allocate for this sound system 45 | */ 46 | extern void faxe_init(int numChannels = 32); 47 | 48 | extern void faxe_set_debug(bool onOff); 49 | 50 | /** 51 | * Update the FMOD command buffer, should be called once per "tick" 52 | */ 53 | extern void faxe_update(); 54 | 55 | /** 56 | * Clean up allocated objects from the FMOD sound system 57 | */ 58 | extern void faxe_shutdown(); 59 | 60 | //// Sound + Bank operations 61 | 62 | /** 63 | * Load a FMOD sound bank file 64 | * \param[bankName] ::String the file path of the sound bank to load 65 | */ 66 | extern void faxe_load_bank(const ::String& bankName); 67 | 68 | /** 69 | * Unload a FMOD sound bank file 70 | * \param[bankName] ::String the file path of the sound bank to unload 71 | */ 72 | extern void faxe_unload_bank(const ::String& bankName); 73 | 74 | /** 75 | * Load an arbitrary sound into FMOD 76 | * \param[sndName] ::String the file path of the sound to load 77 | */ 78 | extern FMOD_RESULT faxe_load_sound(const ::String& sndName, bool looping = false, bool streaming = false); 79 | 80 | extern FMOD::Sound * faxe_get_sound(const ::String& sndName); 81 | 82 | /** 83 | * plays a sound without further ado 84 | */ 85 | extern FMOD_RESULT faxe_play_sound(const ::String& sndName, bool paused = false); 86 | 87 | extern FMOD_RESULT faxe_play_sound_with_handle( FMOD::Sound * snd); 88 | 89 | /** 90 | * plays a sound without further ado and gets result channel 91 | */ 92 | extern FMOD::Channel * faxe_play_sound_with_channel(const ::String& sndName, bool paused); 93 | 94 | /** 95 | * Unload a sound from FMOD 96 | * \param[sndName] ::String the file path of the sound to unload 97 | */ 98 | extern void faxe_unload_sound(const ::String& sndName); 99 | 100 | //// Event operations 101 | 102 | /** 103 | * Load an event from a loaded bank 104 | * \param[eventPath] ::String the path of the event to load into memory 105 | * \param[eventName] ::String the name you wish to give this event instance 106 | */ 107 | extern void faxe_load_event(const ::String& eventPath, const ::String& eventName); 108 | 109 | 110 | /** 111 | * Play an already loaded event 112 | * \param[eventName] ::String the name of the event to play 113 | */ 114 | extern void faxe_play_event(const ::String& eventName); 115 | 116 | /** 117 | * Play an already loaded event 118 | * \param[eventName] ::String the name of the event to play 119 | * \param[forceStop] ::Bool should we force the event to stop immediately? 120 | */ 121 | extern void faxe_stop_event(const ::String& eventName, bool forceStop = false); 122 | 123 | 124 | /** 125 | * Check to see if an event is currently playing 126 | * \param[eventName] ::String the name of the event to check playing status of 127 | * \return ::Bool if the event is currently playing 128 | */ 129 | extern bool faxe_event_playing(const ::String& eventName); 130 | 131 | /** 132 | * Check to see if an event is currently playing 133 | * \param[eventName] ::String the name of the event to get param value from 134 | * \param[paramName] ::String the name of the param to GET 135 | * \return float the current value of the param from the specified event 136 | */ 137 | extern float faxe_get_event_param(const ::String& eventName, const ::String& paramName); 138 | 139 | /** 140 | * Set the parameter value of a loaded event 141 | * \param[eventName] ::String the name of the event that contains the parameter to set 142 | * \param[paramName] ::String the name of the param to SET 143 | * \param[sValue] float the new value to set the param to 144 | */ 145 | extern void faxe_set_event_param(const ::String& eventName, const ::String& paramName, float sValue); 146 | 147 | //// Channel operations 148 | extern void faxe_stop_all_channels(); 149 | extern void faxe_stop_channel(int channelID); 150 | extern void faxe_set_channel_gain(int channelID, float gainDb); 151 | extern void faxe_set_channel_position(int channelID, float x, float y, float z); 152 | extern bool faxe_channel_playing(int channelID); 153 | 154 | extern FMOD::System* faxe_get_system(); 155 | 156 | } // faxe + fmod namespace 157 | } // linc namespace 158 | -------------------------------------------------------------------------------- /test3/Test.hx: -------------------------------------------------------------------------------- 1 | import faxe.Faxe; 2 | import Cpp; 3 | 4 | import SndTV; 5 | 6 | class Test{ 7 | 8 | 9 | static function main() 10 | { 11 | Snd.init(); 12 | 13 | 14 | if ( false ){ 15 | var file = "07 - Crush (feat. Jay Kloeckner).mp3"; 16 | Faxe.fmod_load_sound( file ); 17 | 18 | var s = Faxe.fmod_get_sound(file); 19 | 20 | var len : cpp.UInt32 = -1; 21 | s.ptr.getLength( Cpp.addr(len), FmodTimeUnit.FTM_MS ); 22 | 23 | trace(len); 24 | Faxe.fmod_play_sound_with_handle( s ); 25 | } 26 | 27 | if ( false ){ 28 | var file = "07 - Crush (feat. Jay Kloeckner).mp3"; 29 | Faxe.fmod_load_sound( file ); 30 | Faxe.fmod_play_sound( file ); 31 | } 32 | 33 | if ( false ){ 34 | var file = "07 - Crush (feat. Jay Kloeckner).mp3"; 35 | Faxe.fmod_load_sound( file ); 36 | var sound : Snd = Snd.fromFaxe( file ); 37 | //sound.play(); 38 | 39 | Faxe.fmod_play_sound_with_handle( cast sound.sound.getData() ); 40 | } 41 | 42 | if ( false ){ 43 | var file = "07 - Crush (feat. Jay Kloeckner).mp3"; 44 | Faxe.fmod_load_sound( file ); 45 | var sound : Snd = Snd.fromFaxe( file ); 46 | sound.play(); 47 | } 48 | 49 | if( false ){ 50 | var sound : Snd = Snd.loadSfx( "07 - Crush (feat. Jay Kloeckner).mp3"); 51 | if ( sound == null){ 52 | trace("err loading sound!"); 53 | } 54 | 55 | trace("len:"+sound.getDuration()); 56 | 57 | sound.play(); 58 | if(sound.isPlaying()) 59 | trace("playing!"); 60 | } 61 | 62 | if( false ){ 63 | var sound : Snd = Snd.loadSfx( "07 - Crush (feat. Jay Kloeckner).mp3"); 64 | sound.play(); 65 | trace(sound.volume); 66 | haxe.Timer.delay( function(){ 67 | sound.fadeStop( 5000 ); 68 | }, 10 * 1000 ); 69 | } 70 | 71 | if( false ){ 72 | var sound : Snd = Snd.loadSfx( "07 - Crush (feat. Jay Kloeckner).mp3"); 73 | sound.play(); 74 | trace(sound.volume); 75 | haxe.Timer.delay( function(){ 76 | trace("panning"); 77 | sound.tweenPan(1, TEase, 2000); 78 | }, 5 * 1000 ); 79 | } 80 | 81 | if ( false ){ 82 | var file = "snd/music/credits.mp3"; 83 | var file = "snd/music/Hell_master.mp3"; 84 | var file = "snd/music/MUSIC_INTRO.mp3"; 85 | var file = "snd/music/WorldMap_master.mp3"; 86 | var sound : Snd = Snd.loadSfx( file ); 87 | sound.play(); 88 | } 89 | 90 | if ( false ){ 91 | var file = "win/snd/music/credits.ogg"; 92 | var file = "win/snd/music/Hell_master.ogg"; 93 | var file = "win/snd/music/MUSIC_INTRO.ogg"; 94 | var file = "win/snd/music/WorldMap_master.ogg"; 95 | var file = "win/music/accuser_cymbals.ogg"; 96 | var file = "win/music/BM3_nodrums.ogg"; 97 | var file = "win/snd/samples/deathmetal1_cymbal1.wav"; 98 | var sound : Snd = Snd.loadSfx( file ); 99 | if (sound!=null) sound.play(); 100 | else { 101 | trace( "no such sound " + file); 102 | } 103 | } 104 | 105 | if ( false ){ 106 | var file = "win/snd/samples/deathmetal1_cymbal1.wav"; 107 | var sound : Snd = Snd.loadSfx( file ); 108 | if (sound != null) { 109 | sound.playLoop(5); 110 | } else { 111 | trace( "no such sound " + file); 112 | } 113 | } 114 | 115 | if ( false ){ 116 | var file = "win/snd/samples/deathmetal1_cymbal1.wav"; 117 | var sound : Snd = Snd.loadSfx( file ); 118 | if (sound != null) { 119 | var d = 800; 120 | for( i in 0...10) 121 | haxe.Timer.delay( function(){ 122 | sound.startNoStop(); 123 | }, i * 200 ); 124 | } else { 125 | trace( "no such sound " + file); 126 | } 127 | } 128 | 129 | if ( false ){ 130 | var file = "win/snd/samples/deathmetal1_cymbal1.wav"; 131 | var sound : Snd = Snd.loadSfx( file ); 132 | if (sound != null) { 133 | var d = 800; 134 | for( i in 0...10) 135 | haxe.Timer.delay( function(){ 136 | sound.play(); 137 | }, i * 200 ); 138 | } else { 139 | trace( "no such sound " + file); 140 | } 141 | } 142 | 143 | if ( false ){ 144 | trace("reading"); 145 | var all :Map = new Map(); 146 | var dir = "win/snd/SFX"; 147 | for ( path in sys.FileSystem.readDirectory(dir)){ 148 | var snd = Snd.loadSfx( dir + "/" + path ); 149 | if( snd !=null ) 150 | all.set(path, snd); 151 | else{ 152 | trace("not loaded " + snd); 153 | } 154 | } 155 | all.get("BBdino_grunt4.wav").playLoop( 10 ); 156 | } 157 | 158 | if ( false ){ 159 | trace("reading"); 160 | var t0 = haxe.Timer.stamp(); 161 | var all :Map = new Map(); 162 | var dir = "win/snd/SFX"; 163 | for ( path in sys.FileSystem.readDirectory(dir)){ 164 | var snd = Snd.loadSfx( dir + "/" + path ); 165 | if( snd !=null ) 166 | all.set(path, snd); 167 | else{ 168 | trace("not loaded " + snd); 169 | } 170 | } 171 | var t1 = haxe.Timer.stamp(); 172 | trace("time to load" + (t1 - t0) + "sec"); 173 | all.get("wind1_loop.wav").fadePlay( 10000 ); 174 | } 175 | 176 | 177 | if ( false ){ 178 | var file = "win/snd/music/Hell_master.ogg"; 179 | var sound : Snd = Snd.loadSfx( file ); 180 | if (sound != null) { 181 | sound.play(); 182 | 183 | sound.onStop.addOnce(function(){ 184 | trace("disposing"); 185 | sound.dispose(); 186 | }); 187 | 188 | haxe.Timer.delay( function(){ 189 | trace("fading..."); 190 | sound.fadeStop( 10000 ); 191 | },1000); 192 | } 193 | else { 194 | trace( "no such sound " + file); 195 | } 196 | } 197 | 198 | if ( false ){ 199 | var file = "win/snd/music/Hell_master.ogg"; 200 | var sound : Snd = Snd.loadSfx( file ); 201 | if (sound != null) { 202 | sound.play(); 203 | haxe.Timer.delay( function(){ 204 | trace("lower"); 205 | Snd.setGlobalVolume( 0.5 ); 206 | }, 5000); 207 | 208 | haxe.Timer.delay( function(){ 209 | trace("top"); 210 | Snd.setGlobalVolume( 1.0 ); 211 | }, 10000); 212 | 213 | haxe.Timer.delay( function(){ 214 | trace("zero"); 215 | Snd.setGlobalVolume( 0.0 ); 216 | }, 15000); 217 | } 218 | else { 219 | trace( "no such sound " + file); 220 | } 221 | } 222 | 223 | if ( false ){ 224 | var file = "win/snd/music/Hell_master.ogg"; 225 | var sound : Snd = Snd.loadSong( file ); 226 | if (sound != null) { 227 | sound.play(); 228 | haxe.Timer.delay( function(){ 229 | sound.setPlayCursorSec( 60 ); 230 | }, 5000); 231 | } 232 | else { 233 | trace( "no such sound " + file); 234 | } 235 | 236 | } 237 | 238 | if ( false ){ 239 | var file = "win/snd/music/Hell_master.ogg"; 240 | var fmod = FaxeRef.getSystem(); 241 | trace("fm init mem:\t" + Snd.dumpMemory()); 242 | var sound : Snd = Snd.loadSfx( file ); 243 | trace("load mem:\t\t" + Snd.dumpMemory()); 244 | 245 | if (sound != null) { 246 | sound.play(); 247 | 248 | haxe.Timer.delay( function(){ 249 | trace("playin mem:\t" + Snd.dumpMemory()); 250 | sound.dispose(); 251 | trace("dispose mem:\t" + Snd.dumpMemory()); 252 | cpp.vm.Gc.run(true); 253 | trace("gc runmem:" + Snd.dumpMemory()); 254 | },5000); 255 | 256 | haxe.Timer.delay( function(){ 257 | trace("long aftermem: \t" + Snd.dumpMemory()); 258 | Sys.command("pause"); 259 | Sys.exit(0); 260 | },10000); 261 | } 262 | else { 263 | trace( "no such sound " + file); 264 | } 265 | } 266 | 267 | if ( true ){ 268 | var file = "win/snd/music/Hell_master.ogg"; 269 | var fmod = FaxeRef.getSystem(); 270 | trace("fm init mem:\t" + Snd.dumpMemory()); 271 | var sound : Snd = Snd.loadSong( file ); 272 | trace("load mem:\t\t" + Snd.dumpMemory()); 273 | 274 | if (sound != null) { 275 | sound.play(); 276 | 277 | haxe.Timer.delay( function(){ 278 | trace("playin mem:\t" + Snd.dumpMemory()); 279 | sound.dispose(); 280 | trace("dispose mem:\t" + Snd.dumpMemory()); 281 | cpp.vm.Gc.run(true); 282 | trace("gc runmem:\t" + Snd.dumpMemory()); 283 | },5000); 284 | 285 | haxe.Timer.delay( function(){ 286 | trace("long aftermem:\t" + Snd.dumpMemory()); 287 | Sys.command("pause"); 288 | Sys.exit(0); 289 | },10000); 290 | } 291 | else { 292 | trace( "no such sound " + file); 293 | } 294 | } 295 | 296 | var h = new haxe.Timer( 15); 297 | h.run = function(){ 298 | Snd.update(); 299 | //trace("update"); 300 | } 301 | } 302 | 303 | 304 | } 305 | -------------------------------------------------------------------------------- /linc/linc_faxe.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Faxe - FMOD bindings for Haxe 3 | * 4 | * The MIT License (MIT) 5 | * 6 | * Copyright (c) 2016 Aaron M. Shea 7 | * 8 | * Permission is hereby granted, free of charge, to any person obtaining a copy 9 | * of this software and associated documentation files (the "Software"), to deal 10 | * in the Software without restriction, including without limitation the rights 11 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | * copies of the Software, and to permit persons to whom the Software is 13 | * furnished to do so, subject to the following conditions: 14 | * 15 | * The above copyright notice and this permission notice shall be included in 16 | * all copies or substantial portions of the Software. 17 | * 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | * THE SOFTWARE. 25 | */ 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #include "linc_faxe.h" 33 | 34 | namespace linc 35 | { 36 | namespace faxe 37 | { 38 | // FMOD Sound System 39 | FMOD::Studio::System* fmodSoundSystem; 40 | FMOD::System* fmodLowLevelSoundSystem; 41 | 42 | // Maps to track what has been loaded already 43 | std::map<::String, FMOD::Studio::Bank*> loadedBanks; 44 | std::map<::String, FMOD::Sound*> loadedSounds; 45 | std::map<::String, FMOD::Studio::EventInstance*> loadedEvents; 46 | 47 | bool faxe_debug = false; 48 | void faxe_set_debug(bool onOff){ 49 | faxe_debug = onOff; 50 | } 51 | 52 | FMOD::System* faxe_get_system(){ 53 | return fmodLowLevelSoundSystem; 54 | } 55 | 56 | //// FMOD Init 57 | void faxe_init(int numChannels) 58 | { 59 | // Create our new fmod system 60 | if (FMOD::Studio::System::create(&fmodSoundSystem) != FMOD_OK) 61 | { 62 | if(faxe_debug) printf("Failure starting FMOD sound system!"); 63 | return; 64 | } 65 | 66 | // All OK - Setup some channels to work with! 67 | fmodSoundSystem->initialize(numChannels, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, nullptr); 68 | fmodSoundSystem->getLowLevelSystem(&fmodLowLevelSoundSystem); 69 | if(faxe_debug) printf("FMOD Sound System Started with %d channels!\n", numChannels); 70 | } 71 | 72 | void faxe_update() 73 | { 74 | fmodSoundSystem->update(); 75 | } 76 | 77 | //// Sound Banks 78 | void faxe_load_bank(const ::String& bankName) 79 | { 80 | // Ensure this isn't already loaded 81 | if (loadedBanks.find(bankName) != loadedBanks.end()) 82 | { 83 | return; 84 | } 85 | 86 | // Try and load the bank file 87 | FMOD::Studio::Bank* tempBank; 88 | auto result = fmodSoundSystem->loadBankFile(bankName.c_str(), FMOD_STUDIO_LOAD_BANK_NORMAL, &tempBank); 89 | if (result != FMOD_OK) 90 | { 91 | if(faxe_debug) printf("FMOD failed to LOAD sound bank %s with error %s\n", bankName.c_str(), FMOD_ErrorString(result)); 92 | return; 93 | } 94 | 95 | // List is as loaded 96 | loadedBanks[bankName] = tempBank; 97 | } 98 | 99 | void faxe_unload_bank(const ::String& bankName) 100 | { 101 | // Ensure this bank exists 102 | auto found = loadedBanks.find(bankName); 103 | if (found != loadedBanks.end()) 104 | { 105 | // Remove from loaded banks map 106 | loadedBanks.erase(bankName); 107 | 108 | // Unload the bank that matches 109 | found->second->unload(); 110 | } 111 | } 112 | 113 | FMOD::Sound* faxe_get_sound(const ::String& sndName) { 114 | if (loadedSounds.find(sndName) == loadedSounds.end()){ 115 | if(faxe_debug) printf("not loaded \n"); 116 | return nullptr; 117 | } 118 | return loadedSounds[sndName]; 119 | } 120 | 121 | 122 | 123 | FMOD_RESULT faxe_load_sound(const ::String& sndName, bool looping, bool streaming) 124 | { 125 | // Ensure the sound has not already been loaded 126 | if (loadedSounds.find(sndName) != loadedSounds.end()) 127 | { 128 | if(faxe_debug) printf("already loaded\n"); 129 | return FMOD_OK; 130 | } 131 | 132 | FMOD_MODE loadSndMode = FMOD_DEFAULT; 133 | if (looping) loadSndMode |= FMOD_LOOP_NORMAL; 134 | if (streaming) loadSndMode |= FMOD_CREATESTREAM; 135 | 136 | // Try and load this sound 137 | FMOD::Sound* tempSound; 138 | auto result = fmodLowLevelSoundSystem->createSound(sndName.c_str(), loadSndMode, nullptr, &tempSound); 139 | if (result != FMOD_OK) 140 | { 141 | if(faxe_debug) printf("FMOD failed to LOAD sound %s with error %s\n", sndName.c_str(), FMOD_ErrorString(result)); 142 | return result; 143 | } 144 | 145 | // Store in loaded sounds map 146 | loadedSounds[sndName] = tempSound; 147 | return result; 148 | } 149 | 150 | FMOD_RESULT faxe_play_sound_with_handle( FMOD::Sound * snd) 151 | { 152 | FMOD_RESULT res = fmodLowLevelSoundSystem->playSound(snd, nullptr, false, nullptr); 153 | if(faxe_debug && res ) printf("error playing\n"); 154 | return res; 155 | } 156 | 157 | FMOD_RESULT faxe_play_sound(const ::String& sndName, bool paused) 158 | { 159 | if (loadedSounds.find(sndName) == loadedSounds.end()) 160 | { 161 | if(faxe_debug) printf("not loaded \n"); 162 | return FMOD_ERR_INVALID_PARAM; 163 | } 164 | 165 | FMOD::Sound* snd = loadedSounds[sndName]; 166 | FMOD_RESULT res = fmodLowLevelSoundSystem->playSound(snd, nullptr, paused, nullptr); 167 | if(faxe_debug && res ) printf("error playing\n"); 168 | return res; 169 | } 170 | 171 | FMOD::Channel * faxe_play_sound_with_channel(const ::String& sndName, bool paused) 172 | { 173 | if (loadedSounds.find(sndName) == loadedSounds.end()) 174 | { 175 | if(faxe_debug) printf("not loaded \n"); 176 | return nullptr; 177 | } 178 | 179 | FMOD::Sound* snd = loadedSounds[sndName]; 180 | FMOD::Channel * chan = nullptr; 181 | int res = fmodLowLevelSoundSystem->playSound(snd, nullptr, paused, &chan); 182 | return chan; 183 | } 184 | 185 | void faxe_unload_sound(const ::String& sndName) 186 | { 187 | auto found = loadedSounds.find(sndName); 188 | 189 | // Ensure the sound has already been loaded 190 | if (found != loadedSounds.end()) 191 | { 192 | // Remove from loaded map 193 | loadedSounds.erase(sndName); 194 | 195 | // Unload the sound 196 | found->second->release(); 197 | } 198 | } 199 | 200 | void faxe_load_event(const ::String& eventPath, const ::String& eventName) 201 | { 202 | // Check it's not already loaded 203 | if (loadedEvents.find(eventName) != loadedEvents.end()) 204 | { 205 | return; 206 | } 207 | 208 | // Try and load this event description 209 | FMOD::Studio::EventDescription* tempEvnDesc; 210 | 211 | auto result = fmodSoundSystem->getEvent(eventPath.c_str(), &tempEvnDesc); 212 | 213 | if (result != FMOD_OK) 214 | { 215 | if(faxe_debug) printf("FMOD failed to LOAD event instance %s with error %s\n", eventPath.c_str(), FMOD_ErrorString(result)); 216 | return; 217 | } 218 | 219 | // Now create an instance of this event that we can keep in memory 220 | FMOD::Studio::EventInstance* tempEvnInst; 221 | result = tempEvnDesc->createInstance(&tempEvnInst); 222 | 223 | if (result != FMOD_OK) 224 | { 225 | if(faxe_debug) printf("FMOD failed to CREATE INSTANCE of event instance %s with error %s\n", eventPath.c_str(), FMOD_ErrorString(result)); 226 | return; 227 | } 228 | 229 | // Store in event map 230 | loadedEvents[eventName] = tempEvnInst; 231 | } 232 | 233 | void faxe_play_event(const ::String& eventName) 234 | { 235 | // Ensure that the event is loaded first 236 | auto targetEvent = loadedEvents.find(eventName); 237 | if (targetEvent != loadedEvents.end()) 238 | { 239 | // Start the event instance 240 | targetEvent->second->start(); 241 | } else { 242 | if(faxe_debug) printf("Event %s is not loaded!\n", eventName.c_str()); 243 | } 244 | } 245 | 246 | void faxe_stop_event(const ::String& eventName, bool forceStop) 247 | { 248 | // Find the event first 249 | auto targetStopEvent = loadedEvents.find(eventName); 250 | if (targetStopEvent != loadedEvents.end()) 251 | { 252 | FMOD_STUDIO_STOP_MODE stopMode; 253 | 254 | if (forceStop) 255 | { 256 | stopMode = FMOD_STUDIO_STOP_IMMEDIATE; 257 | } else { 258 | stopMode = FMOD_STUDIO_STOP_ALLOWFADEOUT; 259 | } 260 | 261 | // Stop the event 262 | targetStopEvent->second->stop(stopMode); 263 | 264 | } else { 265 | if(faxe_debug) printf("Event %s is not loaded!\n", eventName.c_str()); 266 | } 267 | } 268 | 269 | bool faxe_event_playing(const ::String& eventName) 270 | { 271 | auto targetEvent = loadedEvents.find(eventName); 272 | if (targetEvent != loadedEvents.end()) 273 | { 274 | // Check the playback state of this event 275 | FMOD_STUDIO_PLAYBACK_STATE currentState; 276 | auto result = targetEvent->second->getPlaybackState(¤tState); 277 | 278 | if (result != FMOD_OK) 279 | { 280 | if(faxe_debug) printf("FMOD failed to GET PLAYBACK STATUS of event instance %s with error %s\n", eventName.c_str(), FMOD_ErrorString(result)); 281 | return false; 282 | } 283 | 284 | return (currentState == FMOD_STUDIO_PLAYBACK_PLAYING); 285 | } else { 286 | if(faxe_debug) printf("Event %s is not loaded!\n", eventName.c_str()); 287 | return false; 288 | } 289 | } 290 | 291 | float faxe_get_event_param(const ::String& eventName, const ::String& paramName) 292 | { 293 | auto targetEvent = loadedEvents.find(eventName); 294 | if (targetEvent != loadedEvents.end()) 295 | { 296 | // Try and get the float param from EventInstance 297 | float currentValue; 298 | auto result = targetEvent->second->getParameterValue(paramName.c_str(), ¤tValue); 299 | 300 | if (result != FMOD_OK) 301 | { 302 | if(faxe_debug) printf("FMOD failed to GET PARAM %s of event instance %s with error %s\n", paramName.c_str(), eventName.c_str(), FMOD_ErrorString(result)); 303 | return -1; 304 | } 305 | 306 | return currentValue; 307 | } else { 308 | if(faxe_debug) printf("Event %s is not loaded!\n", eventName.c_str()); 309 | return -1; 310 | } 311 | } 312 | 313 | void faxe_set_event_param(const ::String& eventName, const ::String& paramName, float sValue) 314 | { 315 | auto targetEvent = loadedEvents.find(eventName); 316 | if (targetEvent != loadedEvents.end()) 317 | { 318 | auto result = targetEvent->second->setParameterValue(paramName.c_str(), sValue); 319 | 320 | if (result != FMOD_OK) 321 | { 322 | if(faxe_debug) printf("FMOD failed to SET PARAM %s of event instance %s with error %s\n", paramName.c_str(), eventName.c_str(), FMOD_ErrorString(result)); 323 | } 324 | } else { 325 | if(faxe_debug) printf("Event %s is not loaded!\n", eventName.c_str()); 326 | } 327 | } 328 | 329 | } // faxe + fmod namespace 330 | } // linc namespace 331 | -------------------------------------------------------------------------------- /faxe/Faxe.hx: -------------------------------------------------------------------------------- 1 | package faxe; 2 | 3 | private typedef Ptr = cpp.Pointer; 4 | 5 | @:keep 6 | @:include('linc_faxe.h') 7 | #if !display 8 | @:build(linc.Linc.touch()) 9 | @:build(linc.Linc.xml('faxe')) 10 | #end 11 | extern class Faxe 12 | { 13 | @:native("linc::faxe::faxe_init") 14 | public static function fmod_init(numChannels:Int = 128):Void; 15 | 16 | @:native("linc::faxe::faxe_update") 17 | public static function fmod_update():Void; 18 | 19 | @:native("linc::faxe::faxe_load_bank") 20 | public static function fmod_load_bank(bankFilePath:String):Void; 21 | 22 | @:native("linc::faxe::faxe_unload_bank") 23 | public static function fmod_unload_bank(bankFilePath:String):Void; 24 | 25 | /** 26 | * registered the sounds internally 27 | */ 28 | @:native("linc::faxe::faxe_load_sound") 29 | public static function fmod_load_sound(soundPath:String, looping:Bool = false, streaming:Bool = false):FmodResult; 30 | 31 | /** 32 | * get registerd sounds 33 | */ 34 | @:native("linc::faxe::faxe_get_sound") 35 | public static function fmod_get_sound(soundPath:String):cpp.Pointer; 36 | 37 | @:native("linc::faxe::faxe_unload_sound") 38 | public static function fmod_unload_sound(bankFilePath:String):Void; 39 | 40 | @:native("linc::faxe::faxe_load_event") 41 | public static function fmod_load_event(eventPath:String, eventName:String):Void; 42 | 43 | @:native("linc::faxe::faxe_play_event") 44 | public static function fmod_play_event(eventName:String):Void; 45 | 46 | @:native("linc::faxe::faxe_play_sound") 47 | public static function fmod_play_sound(soundName:String, paused:Bool = false):FmodResult; 48 | 49 | @:native("linc::faxe::faxe_play_sound_with_handle") 50 | public static function fmod_play_sound_with_handle(snd : cpp.Pointer):FmodResult; 51 | 52 | @:native("linc::faxe::faxe_play_sound_with_channel") 53 | public static function fmod_play_sound_with_channel(soundName:String, paused:Bool): cpp.Pointer; 54 | 55 | @:native("linc::faxe::faxe_stop_event") 56 | public static function fmod_stop_event(eventName:String, forceStop:Bool):Void; 57 | 58 | @:native("linc::faxe::faxe_event_playing") 59 | public static function fmod_event_is_playing(eventName:String):Bool; 60 | 61 | @:native("linc::faxe::faxe_get_event_param") 62 | public static function fmod_get_param(eventName:String, paramName:String):Float; 63 | 64 | @:native("linc::faxe::faxe_set_event_param") 65 | public static function fmod_set_param(eventName:String, paramName:String, sValue:Float):Void; 66 | 67 | @:native("linc::faxe::faxe_get_system") 68 | public static function fmod_get_system() : cpp.Pointer; 69 | 70 | @:native("linc::faxe::faxe_set_debug") 71 | public static function fmod_set_debug(onOff : Bool):Void; 72 | } 73 | 74 | @:enum abstract FmodTimeUnit(Int) from Int to Int { 75 | var FTM_MS = 0x00000001; 76 | var FTM_PCM = 0x00000002; 77 | var FTM_PCMBYTES = 0x00000004; 78 | var FTM_RAWBYTES = 0x00000008; 79 | var FTM_PCMFRACTION = 0x00000010; 80 | var FTM_MODORDER = 0x00000100; 81 | var FTM_MODROW = 0x00000200; 82 | var FTM_MODPATTERN = 0x00000400; 83 | } 84 | 85 | @:enum abstract FmodResult(Int) from Int to Int { 86 | var FMOD_OK = 0; 87 | var FMOD_ERR_BADCOMMAND = 1; 88 | var FMOD_ERR_CHANNEL_ALLOC = 2; 89 | var FMOD_ERR_CHANNEL_STOLEN = 3; 90 | var FMOD_ERR_DMA = 4; 91 | var FMOD_ERR_DSP_CONNECTION = 5; 92 | var FMOD_ERR_DSP_DONTPROCESS = 6; 93 | var FMOD_ERR_DSP_FORMAT = 7; 94 | var FMOD_ERR_DSP_INUSE = 8; 95 | var FMOD_ERR_DSP_NOTFOUND = 9; 96 | var FMOD_ERR_DSP_RESERVED = 10; 97 | var FMOD_ERR_DSP_SILENCE = 11; 98 | var FMOD_ERR_DSP_TYPE = 12; 99 | var FMOD_ERR_FILE_BAD = 13; 100 | var FMOD_ERR_FILE_COULDNOTSEEK = 14; 101 | var FMOD_ERR_FILE_DISKEJECTED = 15; 102 | var FMOD_ERR_FILE_EOF = 16; 103 | var FMOD_ERR_FILE_ENDOFDATA = 17; 104 | var FMOD_ERR_FILE_NOTFOUND = 18; 105 | var FMOD_ERR_FORMAT = 19; 106 | var FMOD_ERR_HEADER_MISMATCH = 20; 107 | var FMOD_ERR_HTTP = 21; 108 | var FMOD_ERR_HTTP_ACCESS = 22; 109 | var FMOD_ERR_HTTP_PROXY_AUTH = 23; 110 | var FMOD_ERR_HTTP_SERVER_ERROR = 24; 111 | var FMOD_ERR_HTTP_TIMEOUT = 25; 112 | var FMOD_ERR_INITIALIZATION = 26; 113 | var FMOD_ERR_INITIALIZED = 27; 114 | var FMOD_ERR_INTERNAL = 28; 115 | var FMOD_ERR_INVALID_FLOAT = 29; 116 | var FMOD_ERR_INVALID_HANDLE = 30; 117 | var FMOD_ERR_INVALID_PARAM = 31; 118 | var FMOD_ERR_INVALID_POSITION = 32; 119 | var FMOD_ERR_INVALID_SPEAKER = 33; 120 | var FMOD_ERR_INVALID_SYNCPOINT = 34; 121 | var FMOD_ERR_INVALID_THREAD = 35; 122 | var FMOD_ERR_INVALID_VECTOR = 36; 123 | var FMOD_ERR_MAXAUDIBLE = 37; 124 | var FMOD_ERR_MEMORY = 38; 125 | var FMOD_ERR_MEMORY_CANTPOINT = 39; 126 | var FMOD_ERR_NEEDS3D = 40; 127 | var FMOD_ERR_NEEDSHARDWARE = 41; 128 | var FMOD_ERR_NET_CONNECT = 42; 129 | var FMOD_ERR_NET_SOCKET_ERROR = 43; 130 | var FMOD_ERR_NET_URL = 44; 131 | var FMOD_ERR_NET_WOULD_BLOCK = 45; 132 | var FMOD_ERR_NOTREADY = 46; 133 | var FMOD_ERR_OUTPUT_ALLOCATED = 47; 134 | var FMOD_ERR_OUTPUT_CREATEBUFFER = 48; 135 | var FMOD_ERR_OUTPUT_DRIVERCALL = 49; 136 | var FMOD_ERR_OUTPUT_FORMAT = 50; 137 | var FMOD_ERR_OUTPUT_INIT = 51; 138 | var FMOD_ERR_OUTPUT_NODRIVERS = 52; 139 | var FMOD_ERR_PLUGIN = 53; 140 | var FMOD_ERR_PLUGIN_MISSING = 54; 141 | var FMOD_ERR_PLUGIN_RESOURCE = 55; 142 | var FMOD_ERR_PLUGIN_VERSION = 56; 143 | var FMOD_ERR_RECORD = 57; 144 | var FMOD_ERR_REVERB_CHANNELGROUP = 58; 145 | var FMOD_ERR_REVERB_INSTANCE = 59; 146 | var FMOD_ERR_SUBSOUNDS = 60; 147 | var FMOD_ERR_SUBSOUND_ALLOCATED = 61; 148 | var FMOD_ERR_SUBSOUND_CANTMOVE = 62; 149 | var FMOD_ERR_TAGNOTFOUND = 63; 150 | var FMOD_ERR_TOOMANYCHANNELS = 64; 151 | var FMOD_ERR_TRUNCATED = 65; 152 | var FMOD_ERR_UNIMPLEMENTED = 66; 153 | var FMOD_ERR_UNINITIALIZED = 67; 154 | var FMOD_ERR_UNSUPPORTED = 68; 155 | var FMOD_ERR_VERSION = 69; 156 | var FMOD_ERR_EVENT_ALREADY_LOADED = 70; 157 | var FMOD_ERR_EVENT_LIVEUPDATE_BUSY = 71; 158 | var FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH = 72; 159 | var FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT = 73; 160 | var FMOD_ERR_EVENT_NOTFOUND = 74; 161 | var FMOD_ERR_STUDIO_UNINITIALIZED = 75; 162 | var FMOD_ERR_STUDIO_NOT_LOADED = 76; 163 | var FMOD_ERR_INVALID_STRING = 77; 164 | var FMOD_ERR_ALREADY_LOCKED = 78; 165 | var FMOD_ERR_NOT_LOCKED = 79; 166 | var FMOD_ERR_RECORD_DISCONNECTED = 80; 167 | var FMOD_ERR_TOOMANYSAMPLES = 81; 168 | } 169 | 170 | @:enum abstract FmodMode(Int) from Int to Int { 171 | var FMOD_DEFAULT = 0x00000000; 172 | var FMOD_LOOP_OFF = 0x00000001; 173 | var FMOD_LOOP_NORMAL = 0x00000002; 174 | var FMOD_LOOP_BIDI = 0x00000004; 175 | var FMOD_2D = 0x00000008; 176 | var FMOD_3D = 0x00000010; 177 | var FMOD_CREATESTREAM = 0x00000080; 178 | var FMOD_CREATESAMPLE = 0x00000100; 179 | var FMOD_CREATECOMPRESSEDSAMPLE = 0x00000200; 180 | var FMOD_OPENUSER = 0x00000400; 181 | var FMOD_OPENMEMORY = 0x00000800; 182 | var FMOD_OPENMEMORY_POINT = 0x10000000; 183 | var FMOD_OPENRAW = 0x00001000; 184 | var FMOD_OPENONLY = 0x00002000; 185 | var FMOD_ACCURATETIME = 0x00004000; 186 | var FMOD_MPEGSEARCH = 0x00008000; 187 | var FMOD_NONBLOCKING = 0x00010000; 188 | var FMOD_UNIQUE = 0x00020000; 189 | var FMOD_3D_HEADRELATIVE = 0x00040000; 190 | var FMOD_3D_WORLDRELATIVE = 0x00080000; 191 | var FMOD_3D_INVERSEROLLOFF = 0x00100000; 192 | var FMOD_3D_LINEARROLLOFF = 0x00200000; 193 | var FMOD_3D_LINEARSQUAREROLLOFF = 0x00400000; 194 | var FMOD_3D_INVERSETAPEREDROLLOFF = 0x00800000; 195 | var FMOD_3D_CUSTOMROLLOFF = 0x04000000; 196 | var FMOD_3D_IGNOREGEOMETRY = 0x40000000; 197 | var FMOD_IGNORETAGS = 0x02000000; 198 | var FMOD_LOWMEM = 0x08000000; 199 | var FMOD_LOADSECONDARYRAM = 0x20000000; 200 | var FMOD_VIRTUAL_PLAYFROMSTART = 0x80000000; 201 | } 202 | 203 | @:keep 204 | @:include('linc_faxe.h') 205 | @:native("FMOD::Sound") 206 | extern class FmodSound { 207 | @:native('getMode') 208 | function getMode( mode : cpp.Pointer ) : FmodResult; 209 | 210 | @:native('getLoopCount') 211 | function getLoopCount( nb:cpp.Pointer ) : FmodResult; 212 | 213 | @:native('setLoopCount') 214 | function setLoopCount( nb:Int ) : FmodResult; 215 | 216 | @:native('setMode') 217 | function setMode( mode:FmodMode ) : FmodResult; 218 | 219 | @:native('getPosition') 220 | function getPosition( position : cpp.Pointer, postype : FmodTimeUnit ) : FmodResult; 221 | 222 | @:native('setPosition') 223 | function setPosition( position : cpp.UInt32, postype : FmodTimeUnit ) : FmodResult; 224 | 225 | @:native('getLength') 226 | function getLength( len : cpp.Pointer, postype : FmodTimeUnit ) : FmodResult; 227 | 228 | //use faxe release to fully release memory... 229 | @:native('release') 230 | function release() : FmodResult; 231 | } 232 | 233 | 234 | @:keep 235 | @:include('linc_faxe.h') 236 | @:native("FMOD::ChannelGroup") 237 | extern class FmodChannelGroup { 238 | 239 | } 240 | 241 | @:keep 242 | @:include('linc_faxe.h') 243 | @:native("::cpp::Reference") 244 | extern class FmodSoundRef extends FmodSound {} 245 | 246 | @:include('linc_faxe.h') 247 | @:native("FMOD::Channel") 248 | extern class FmodChannel { 249 | 250 | @:native('getVolume') 251 | function getVolume( volume : cpp.Pointer ) : FmodResult; 252 | 253 | @:native('setVolume') 254 | function setVolume( volume : cpp.Float32 ) : FmodResult; 255 | 256 | @:native('getPosition') 257 | function getPosition( position : cpp.Pointer, postype : FmodTimeUnit ) : FmodResult; 258 | 259 | @:native('setPosition') 260 | function setPosition( position : cpp.UInt32, postype : FmodTimeUnit ) : FmodResult; 261 | 262 | /** 263 | * Stops the channel (or all channels in the channel group) from playing. Makes it available for re-use by the priority system. 264 | */ 265 | @:native('stop') 266 | function stop() : FmodResult; 267 | 268 | @:native('release') 269 | function release() : FmodResult; 270 | 271 | @:native('isPlaying') 272 | function isPlaying( isPlaying : cpp.Pointer ) : FmodResult; 273 | 274 | @:native('getMode') 275 | function getMode( mode : cpp.Pointer ) : FmodResult; 276 | 277 | @:native('getLoopCount') 278 | function getLoopCount( nb:cpp.Pointer ) : FmodResult; 279 | 280 | @:native('setLoopCount') 281 | function setLoopCount( nb:Int ) : FmodResult; 282 | 283 | @:native('setMode') 284 | function setMode( mode:FmodMode ) : FmodResult; 285 | 286 | @:native('getPaused') 287 | function getPaused( paused : cpp.Pointer ) : FmodResult; 288 | 289 | @:native('setPaused') 290 | function setPaused( paused : Bool ) : FmodResult; 291 | 292 | @:native('setPan') 293 | function setPan( pan : Float ) : FmodResult; 294 | } 295 | 296 | @:keep 297 | @:include('linc_faxe.h') 298 | @:native("::cpp::Reference") 299 | extern class FmodChannelRef extends FmodChannel {} 300 | 301 | @:keep 302 | @:include('linc_faxe.h') 303 | @:native("FMOD::System") 304 | extern class FmodSystem { 305 | 306 | @:native('close') 307 | function close() : FmodResult; 308 | 309 | @:native('createSound') 310 | function createSound( 311 | name_or_data : cpp.ConstCharStar, 312 | mode : FmodMode, 313 | createExInfo : cpp.Pointer, 314 | sound:cpp.RawPointer>) : FmodResult; 315 | 316 | 317 | @:native('getSoundRAM') 318 | function getSoundRAM( 319 | currentAlloced:cpp.Pointer, 320 | maxAlloced:cpp.Pointer, 321 | total:cpp.Pointer 322 | ) : FmodResult; 323 | 324 | @:native('playSound') 325 | function playSound( 326 | sound : cpp.Pointer, 327 | channelgroup : cpp.Pointer, 328 | paused : Bool, 329 | channel : cpp.RawPointer> 330 | ) : FmodResult; 331 | } 332 | 333 | @:keep 334 | @:include('linc_faxe.h') 335 | @:native("::cpp::Reference") 336 | extern class FmodSystemRef extends FmodSystem {} 337 | 338 | @:keep 339 | @:include('linc_faxe.h') 340 | class FaxeRef { 341 | @:extern 342 | public static inline function getSystem() : FmodSystemRef{ 343 | var ptr : cpp.Pointer = Faxe.fmod_get_system(); 344 | return cast ptr.ref; 345 | } 346 | 347 | @:extern 348 | public static inline function playSound(name:String, ?paused = false) : FmodChannelRef { 349 | var ptr : cpp.Pointer = Faxe.fmod_play_sound_with_channel(name,paused); 350 | return cast ptr.ref; 351 | } 352 | 353 | public static function Memory_GetStats(currentAlloced:Ptr, maxAlloced:Ptr, isBlockingOrFast:Bool) : FmodResult { 354 | return untyped __cpp__("FMOD::Memory_GetStats({0},{1},{2})",currentAlloced,maxAlloced,isBlockingOrFast); 355 | } 356 | 357 | @:generic 358 | @:extern 359 | public static inline function nullptr() : cpp.Pointer { 360 | return cast null; 361 | } 362 | 363 | @:generic 364 | @:extern 365 | public static inline function nullptrR() : cpp.RawPointer { 366 | return cast null; 367 | } 368 | 369 | public static function playSoundWithHandle(snd:FmodSoundRef, ?paused : Bool = false) 370 | : cpp.Pointer 371 | { 372 | var fmod : FmodSystemRef = getSystem(); 373 | 374 | var cgroup : cpp.Pointer = nullptr(); 375 | var chan : cpp.RawPointer = nullptrR(); 376 | var chanPtr : cpp.RawPointer> = cpp.RawPointer.addressOf(chan); 377 | 378 | //Reference are actually pointers ! 379 | var sndPtr : cpp.Pointer = cast snd; 380 | 381 | var res = fmod.playSound( sndPtr, cgroup, paused, chanPtr ); 382 | 383 | if ( res != FMOD_OK ){ 384 | #if debug 385 | trace("[Faxe] Play sound error "+res); 386 | #end 387 | return null; 388 | } 389 | 390 | return cpp.Pointer.fromRaw(chan); 391 | } 392 | 393 | @:extern 394 | public static inline function getSound(name:String) : FmodSoundRef { 395 | var ptr : cpp.Pointer = Faxe.fmod_get_sound(name); 396 | return cast ptr.ref; 397 | } 398 | } 399 | 400 | @:keep 401 | @:include('linc_faxe.h') 402 | @:native("FMOD_CREATESOUNDEXINFO") 403 | extern class FmodCreateSoundExInfo { 404 | 405 | } -------------------------------------------------------------------------------- /test3/Snd.hx: -------------------------------------------------------------------------------- 1 | import faxe.Faxe; 2 | 3 | import SndTV; 4 | 5 | class Channel { 6 | public var data : FmodChannelRef = null; 7 | public var onEnd : Void -> Void = null; 8 | 9 | var started = true; 10 | var paused = false; 11 | 12 | public inline function new( data : cpp.Pointer ){ 13 | this.data = cast data.ref; 14 | started = true; 15 | paused = false; 16 | } 17 | 18 | public function getData(){ 19 | return data; 20 | } 21 | 22 | public inline function stop(){ 23 | data.stop(); 24 | started = false; 25 | } 26 | 27 | public inline function pause(){ 28 | paused = false; 29 | started = true; 30 | data.setPaused(true); 31 | } 32 | 33 | public inline function resume(){ 34 | paused = true; 35 | started = true; 36 | data.setPaused(false); 37 | } 38 | 39 | var disposed = false; 40 | public inline function dispose(){ 41 | if (disposed) return; 42 | disposed = true; 43 | data = null; 44 | } 45 | 46 | public inline function isPlaying(){ 47 | var b : Bool = false; 48 | data.isPlaying( Cpp.addr(b)); 49 | return b; 50 | } 51 | 52 | //returns in secs 53 | public inline function getPlayCursor() : Float { 54 | var pos : cpp.UInt32 = 0; 55 | var res = data.getPosition( Cpp.addr(pos), faxe.Faxe.FmodTimeUnit.FTM_MS ); 56 | var posF : Float = 1.0 * pos * 1000.0; 57 | return posF; 58 | } 59 | 60 | public inline function setPlayCursorSec(posSec:Float) { 61 | setPlayCursorMs( posSec * 1000.0 ); 62 | } 63 | 64 | public inline function setPlayCursorMs(posMs:Float) { 65 | if ( posMs < 0.0) posMs = 0.0; 66 | var posU : cpp.UInt32 = 0; 67 | posU = Math.round( posMs ); 68 | var res = data.setPosition( posU, FmodTimeUnit.FTM_MS ); 69 | if ( res != FMOD_OK){ 70 | #if debug 71 | trace("[SND][Channel] Repositionning S err " + res); 72 | #end 73 | } 74 | } 75 | 76 | public inline function setNbLoops(nb:Int){ 77 | data.setMode(FmodMode.FMOD_LOOP_NORMAL); 78 | data.setLoopCount(nb); 79 | } 80 | 81 | public inline function getVolume():Float{ 82 | var vol : cpp.Float32 = 0.0; 83 | var res = data.getVolume( Cpp.addr(vol) ); 84 | if ( res != FMOD_OK){ 85 | #if debug 86 | trace("[SND][Channel] getVolume err " + res); 87 | #end 88 | } 89 | return vol; 90 | } 91 | 92 | public inline function setVolume(v:Float){ 93 | var res = data.setVolume( v ); 94 | if ( res != FMOD_OK){ 95 | #if debug 96 | trace("[SND][Channel] getVolume err " + res); 97 | #end 98 | } 99 | } 100 | 101 | public function onComplete() { 102 | stop(); 103 | if( onEnd!=null ) { 104 | var cb = onEnd; 105 | onEnd = null; 106 | cb(); 107 | } 108 | } 109 | 110 | public inline function isComplete(){ 111 | return started && !isPlaying(); 112 | } 113 | 114 | public function setPan( pan : Float ){ 115 | var res = data.setPan(pan); 116 | if ( res != FMOD_OK){ 117 | #if debug 118 | trace("[SND][Channel] setPan err " + res); 119 | #end 120 | } 121 | } 122 | } 123 | 124 | class Sound { 125 | public var length(get, null) : Float; 126 | public var data : FmodSoundRef = null; 127 | public var id3 : Dynamic = null; 128 | 129 | public function new( data : cpp.Pointer ){ 130 | this.data = Cpp.ref(data); 131 | disposed = false; 132 | } 133 | 134 | public function getData(){ 135 | return data; 136 | } 137 | 138 | //returns in secs 139 | function get_length() : Float{ 140 | if (disposed) return 0.0; 141 | 142 | var pos : cpp.UInt32 = 0; 143 | var res = data.getLength( Cpp.addr(pos), FmodTimeUnit.FTM_MS ); 144 | if ( res != FMOD_OK ){ 145 | #if debug 146 | trace("impossible to retrieve sound len"); 147 | #end 148 | } 149 | var posF = 1.0 * pos / 1000.0; 150 | return posF; 151 | } 152 | 153 | var disposed = false; 154 | public function dispose(){ 155 | if (disposed) return; 156 | disposed = true; 157 | data.release(); 158 | data = null; 159 | } 160 | 161 | public function play( ?offsetMs : Float = 0.0, ?nbLoops:Int = 1, ?volume:Float = 1.0, ?pan:Float = 0.0 ) : Channel{ 162 | var nativeChan : cpp.Pointer = FaxeRef.playSoundWithHandle( data , false); 163 | var chan = new Channel( nativeChan ); 164 | 165 | chan.setPlayCursorMs( offsetMs ); 166 | chan.setVolume( volume ); 167 | chan.setPan( pan ); 168 | if( nbLoops > 1 ) chan.setNbLoops( nbLoops ); 169 | 170 | return chan; 171 | } 172 | } 173 | 174 | class Snd { 175 | static var PLAYING : hxd.Stack = new hxd.Stack(); 176 | static var MUTED = false; 177 | static var DISABLED = false; 178 | static var GLOBAL_VOLUME = 1.0; 179 | static var TW = new SndTV(); 180 | 181 | public var name : String ; 182 | public var pan : Float = 0.0; 183 | public var volume : Float = 1.0; 184 | public var curPlay : Null = null; 185 | 186 | /** 187 | * for when stop is called explicitly 188 | * allows disposal 189 | */ 190 | public var onStop = new hxd.Signal(); 191 | public var sound : Sound = null; 192 | 193 | var onEnd : NullVoid> = null; 194 | 195 | static var fmodSystem : FmodSystemRef = null; 196 | 197 | public function new( snd : Sound, ?name:String ) { 198 | volume = 1; 199 | pan = 0; 200 | sound = snd; 201 | muted = false; 202 | this.name = name; 203 | sound = snd; 204 | } 205 | 206 | public function isLoaded() { 207 | return sound!=null; 208 | } 209 | 210 | public function stop(){ 211 | if ( isPlaying() ) { 212 | curPlay.stop(); 213 | curPlay = null; 214 | PLAYING.remove(this); 215 | onStop.trigger(); 216 | } 217 | } 218 | 219 | public function dispose(){ 220 | if ( curPlay != null) { 221 | curPlay.stop(); 222 | curPlay.dispose(); 223 | } 224 | 225 | if ( sound != null) sound.dispose(); 226 | onStop.dispose(); 227 | sound = null; 228 | onEnd = null; 229 | curPlay = null; 230 | } 231 | 232 | public inline function getPlayCursor() : Float { 233 | if ( curPlay == null) return 0.0; 234 | return curPlay.getPlayCursor(); 235 | } 236 | 237 | 238 | public function play(?vol:Float, ?pan:Float) : Snd { 239 | if( vol == null ) vol = volume; 240 | if( pan == null ) pan = this.pan; 241 | 242 | start(0, vol, pan, 0.0); 243 | return this; 244 | } 245 | 246 | 247 | /** 248 | * launches the sound, stops previous and rewrite the cur play dropping it into oblivion for the gc 249 | */ 250 | public function start(loops:Int=0, vol:Float=1.0, ?pan:Float=0.0, ?startOffsetMs:Float=0.0) { 251 | if ( DISABLED ) { 252 | #if debug 253 | trace("[SND] Disabled"); 254 | #end 255 | return; 256 | } 257 | if ( sound == null ){ 258 | #if debug 259 | trace("[SND] no inner sound"); 260 | #end 261 | return; 262 | } 263 | 264 | if ( isPlaying() ){ 265 | stop(); 266 | } 267 | 268 | TW.terminate(this); 269 | 270 | this.volume = vol; 271 | this.pan = normalizePanning(pan); 272 | 273 | //was removed from playing by stop 274 | PLAYING.push(this); 275 | curPlay = sound.play( startOffsetMs, loops, getRealVolume(), pan); 276 | } 277 | 278 | /** 279 | * launches the sound and rewrite the cur play dropping it into oblivion for the gc 280 | */ 281 | public function startNoStop(?loops:Int=0, ?vol:Float=1.0, ?pan:Float=0.0, ?startOffsetMs:Float=0.0) : Null{ 282 | if ( DISABLED ) { 283 | #if debug 284 | trace("[SND] Disabled"); 285 | #end 286 | return null; 287 | } 288 | if ( sound == null ){ 289 | #if debug 290 | trace("[SND] no inner sound"); 291 | #end 292 | return null; 293 | } 294 | 295 | this.volume = vol; 296 | this.pan = normalizePanning(pan); 297 | 298 | curPlay = sound.play( startOffsetMs, loops, getRealVolume(), pan); 299 | return curPlay; 300 | } 301 | 302 | public inline function getDuration() { 303 | return sound.length; 304 | } 305 | 306 | public static inline 307 | function trunk(v:Float, digit:Int) : Float{ 308 | var hl = Math.pow( 10.0 , digit ); 309 | return Std.int( v * hl ) / hl; 310 | } 311 | 312 | public static function dumpMemory(){ 313 | var v0 : Int = 0; 314 | var v1 : Int = 0; 315 | var v2 : Int = 0; 316 | 317 | var v0p : cpp.Pointer = Cpp.addr(v0); 318 | var v1p : cpp.Pointer = Cpp.addr(v1); 319 | var v2p : cpp.Pointer = Cpp.addr(v2); 320 | var str = ""; 321 | var res = fmodSystem.getSoundRAM( v0p, v1p, v2p ); 322 | if ( res != FMOD_OK){ 323 | #if debug 324 | trace("[SND] cannot fetch snd ram dump "); 325 | #end 326 | } 327 | 328 | inline function f( val :Float) : Float{ 329 | return trunk(val, 2); 330 | } 331 | 332 | if( v2 > 0 ){ 333 | str+="fmod Sound chip RAM all:" + f(v0 / 1024.0) + "KB \t max:" + f(v1 / 1024.0) + "KB \t total: " + f(v2 / 1024.0) + " KB\r\n"; 334 | } 335 | 336 | v0 = 0; 337 | v1 = 0; 338 | 339 | var res = FaxeRef.Memory_GetStats( v0p, v1p, false ); 340 | str += "fmod Motherboard chip RAM all:" + f(v0 / 1024.0) + "KB \t max:" + f(v1 / 1024.0) + "KB \t total: " + f(v2 / 1024.0) + " KB"; 341 | return str; 342 | } 343 | 344 | public function playLoop(?loops = 9999, ?vol:Float, ?startOffset = 0.0) { 345 | if( vol==null ) 346 | vol = volume; 347 | 348 | start(loops, vol, 0, startOffset); 349 | return this; 350 | } 351 | 352 | public function setVolume(v:Float) { 353 | volume = v; 354 | refresh(); 355 | } 356 | 357 | public inline function getRealPanning() { 358 | return pan; 359 | } 360 | 361 | public function setPanning(p:Float) { 362 | pan = p; 363 | refresh(); 364 | } 365 | 366 | public function onEndOnce(cb:Void->Void) { 367 | onEnd = cb; 368 | } 369 | 370 | public function fadePlay(?fadeDuration = 100, ?endVolume:Float=1.0 ) { 371 | var p = play(0); 372 | tweenVolume(endVolume, fadeDuration); 373 | return p; 374 | } 375 | 376 | public function fadePlayLoop(?fadeDuration = 100, ?endVolume:Float=1.0 , ?loops=9999) { 377 | var p = playLoop(loops,0); 378 | tweenVolume(endVolume, fadeDuration); 379 | return p; 380 | } 381 | 382 | public function fadeStop( ?fadeDuration = 100 ) { 383 | tweenVolume(0, fadeDuration).onEnd = _stop; 384 | } 385 | 386 | public var muted : Bool = false; 387 | 388 | public function toggleMute() { 389 | muted = !muted;//todo 390 | setVolume(volume); 391 | } 392 | public function mute() { 393 | muted = true; 394 | setVolume(volume); 395 | } 396 | public function unmute() { 397 | muted = false; 398 | setVolume(volume); 399 | } 400 | 401 | public function isPlaying(){ 402 | if ( curPlay == null ) return false; 403 | return curPlay.isPlaying(); 404 | } 405 | 406 | public static function init(){ 407 | #if debug 408 | trace("[Snd] fmod init"); 409 | #end 410 | Faxe.fmod_init( 256 ); 411 | fmodSystem = FaxeRef.getSystem(); 412 | } 413 | 414 | public static function setGlobalVolume(vol:Float) { 415 | GLOBAL_VOLUME = normalizeVolume(vol); 416 | refreshAll(); 417 | } 418 | 419 | inline function refresh() { 420 | if ( isPlaying() ) { 421 | var lpan = normalizePanning(pan); 422 | var vol = getRealVolume(); 423 | 424 | curPlay.setVolume( vol ); 425 | curPlay.setPan( lpan ); 426 | } 427 | else { 428 | #if debug 429 | trace("[Snd] no playin no refresh"); 430 | #end 431 | } 432 | } 433 | 434 | public function setPlayCursorSec( pos:Float ) if (curPlay != null) curPlay.setPlayCursorSec(pos); 435 | public function setPlayCursorMs( pos:Float ) if (curPlay != null) curPlay.setPlayCursorMs(pos); 436 | 437 | public function tweenVolume(v:Float, ?easing:SndTV.TVType, milliseconds:Float) : TweenV { 438 | TW.terminate(this); 439 | if ( easing == null ) easing = TVType.TEase; 440 | var t = TW.create(this, TVVVolume, v, TEase, milliseconds); 441 | refresh(); 442 | t.onUpdate = _refresh; 443 | t.onEnd = _refresh; 444 | return t; 445 | } 446 | 447 | public function tweenPan(v:Float, ?easing:SndTV.TVType, milliseconds:Float) : TweenV { 448 | TW.terminate(this); 449 | if ( easing == null ) easing = TVType.TEase; 450 | var t = TW.create(this, TVVPan, v, easing, milliseconds); 451 | refresh(); 452 | t.onUpdate = _refresh; 453 | t.onEnd = _refresh; 454 | return t; 455 | } 456 | 457 | public inline function getRealVolume() { 458 | var v = volume * GLOBAL_VOLUME * (DISABLED?0:1) * (MUTED?0:1) * (muted?0:1); 459 | return normalizeVolume(v); 460 | } 461 | 462 | static inline function normalizeVolume(f:Float) { 463 | return Math.max(0, Math.min(1, f)); 464 | } 465 | 466 | static inline function normalizePanning(f:Float) { 467 | return Math.max(-1, Math.min(1, f)); 468 | } 469 | 470 | static var _stop = function(t:TweenV){ 471 | t.parent.stop(); 472 | } 473 | 474 | static var _refresh = function(t:TweenV) { 475 | t.parent.refresh(); 476 | } 477 | 478 | static inline function refreshAll() { 479 | for(s in PLAYING) 480 | s.refresh(); 481 | } 482 | 483 | function onComplete(){ 484 | if (curPlay != null) curPlay.onComplete(); 485 | } 486 | 487 | public function isComplete(){ 488 | if ( curPlay == null ) { 489 | //trace("comp: no cur play"); 490 | return false; 491 | } 492 | return curPlay.isComplete(); 493 | } 494 | 495 | ////////////////////////////////////// 496 | /////////////////////STATICS////////// 497 | ////////////////////////////////////// 498 | public static function loadSound( path:String, streaming : Bool ) : Sound { 499 | var mode = FMOD_DEFAULT; 500 | 501 | if ( streaming ) 502 | mode |= FMOD_CREATESTREAM; 503 | 504 | mode |= FmodMode.FMOD_2D; 505 | 506 | var snd : cpp.RawPointer = cast null; 507 | var sndR : cpp.RawPointer> = cpp.RawPointer.addressOf(snd); 508 | 509 | var res : FmodResult = fmodSystem.createSound( 510 | Cpp.cstring(path), 511 | mode, 512 | Cpp.nullptr(), 513 | sndR 514 | ); 515 | 516 | if ( res != FMOD_OK){ 517 | #if debug 518 | trace("unable to load " + path + " code:" + res); 519 | #end 520 | return null; 521 | } 522 | 523 | return new Sound(cpp.Pointer.fromRaw(snd)); 524 | } 525 | 526 | public static function fromFaxe( path:String ) : Snd { 527 | var s : cpp.Pointer = faxe.Faxe.fmod_get_sound(path ); 528 | if ( s == null){ 529 | #if debug 530 | trace("unable to find " + path); 531 | #end 532 | return null; 533 | } 534 | return new Snd( new Sound(s), path); 535 | } 536 | 537 | public static function loadSfx( path:String ) : Snd { 538 | var s : Sound = loadSound(path, false); 539 | if ( s == null) return null; 540 | return new Snd( s, path); 541 | } 542 | 543 | public static function loadSong( path:String ) : Snd { 544 | var s : Sound = loadSound(path, true); 545 | if ( s == null) return null; 546 | return new Snd( s, path); 547 | } 548 | 549 | public static function terminateTweens() { 550 | TW.terminateAll(); 551 | } 552 | 553 | public static function update() { 554 | for ( p in PLAYING.backWardIterator()) 555 | if ( p.isComplete()){ 556 | //trace("[Snd] isComplete " + p); 557 | p.onComplete(); 558 | } 559 | TW.update(); 560 | Faxe.fmod_update(); 561 | } 562 | } -------------------------------------------------------------------------------- /test3/toto.txt: -------------------------------------------------------------------------------- 1 | 2 | C:\HaxeToolkit_347\haxelibs\faxe\git\test2>echo "adding win vars" 3 | "adding win vars" 4 | 5 | C:\HaxeToolkit_347\haxelibs\faxe\git\test2>haxe build.hxml -v 6 | Classpath : ../;C:\HaxeToolkit_347\haxe\extraLibs/;;C:\HaxeToolkit_347\haxe\std/cpp/_std/;C:\HaxeToolkit_347\haxe\std/ 7 | Defines : windows;true;sys;source-header=Generated by Haxe 3.4.7;hxcpp_api_level=331;haxe_ver=3.407;haxe3;debug;dce=std;cpp 8 | Parsed C:\HaxeToolkit_347\haxe\std/StdTypes.hx 9 | Parsed C:\HaxeToolkit_347\haxe\std/String.hx 10 | Parsed C:\HaxeToolkit_347\haxe\std/Array.hx 11 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/EnumTools.hx 12 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/_std/Std.hx 13 | Parsed Test.hx 14 | Parsed ../faxe/Faxe.hx 15 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/ConstCharStar.hx 16 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/RawConstPointer.hx 17 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Char.hx 18 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Pointer.hx 19 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/extern/AsVar.hx 20 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/ConstPointer.hx 21 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Star.hx 22 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/RawPointer.hx 23 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Reference.hx 24 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/AutoCast.hx 25 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Void.hx 26 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/Vector.hx 27 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/NativeArray.hx 28 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/ArrayBase.hx 29 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/Float32.hx 30 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/UInt32.hx 31 | Parsed C:\HaxeToolkit_347\haxe\std/StdTypes.hx 32 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/String.hx 33 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Array.hx 34 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/EnumTools.hx 35 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/macro/Expr.hx 36 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/macro/Type.hx 37 | Parsed C:\HaxeToolkit_347\haxe\std/Map.hx 38 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/haxe/ds/StringMap.hx 39 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/haxe/ds/IntMap.hx 40 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/HashMap.hx 41 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/haxe/ds/ObjectMap.hx 42 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/WeakMap.hx 43 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/EnumValueMap.hx 44 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Constraints.hx 45 | Parsed C:\HaxeToolkit_347\haxe\std/EnumValue.hx 46 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/BalancedTree.hx 47 | Parsed C:\HaxeToolkit_347\haxe\std/Enum.hx 48 | Parsed C:\HaxeToolkit_347\haxe\std/neko/NativeArray.hx 49 | Typing macro String.__split 50 | Parsed C:\HaxeToolkit_347\haxe\std/neko/Lib.hx 51 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Bytes.hx 52 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesData.hx 53 | Parsed C:\HaxeToolkit_347\haxe\std/neko/NativeString.hx 54 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int64.hx 55 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int32.hx 56 | Typing macro neko.Lib.load 57 | Typing macro neko.NativeString.ofString 58 | Typing macro neko.NativeString.toString 59 | Typing macro String.new 60 | Typing macro neko.NativeString.length 61 | Typing macro neko.NativeString.alloc 62 | Typing macro haxe._Int64.Int64_Impl_._new 63 | Typing macro haxe._Int64.Int64_Impl_.copy 64 | Typing macro haxe._Int64.Int64_Impl_.ofInt 65 | Typing macro haxe._Int64.Int64_Impl_.make 66 | Typing macro haxe._Int64.___Int64.new 67 | Typing macro haxe._Int64.Int64_Impl_.get_high 68 | Typing macro haxe._Int64.Int64_Impl_.get_low 69 | Typing macro haxe._Int64.Int64_Impl_.toInt 70 | Typing macro haxe._Int64.Int64_Impl_.is 71 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Std.hx 72 | Parsed C:\HaxeToolkit_347\haxe\std/Class.hx 73 | Typing macro Std.is 74 | Parsed C:\HaxeToolkit_347\haxe\std/neko/Boot.hx 75 | Typing macro neko.Boot.__instanceof 76 | Typing macro neko.Boot.__interfLoop 77 | Parsed C:\HaxeToolkit_347\haxe\std/IntIterator.hx 78 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Type.hx 79 | Typing macro Type.getClass 80 | Typing macro Type.getEnum 81 | Typing macro Type.getSuperClass 82 | Typing macro Type.getClassName 83 | Typing macro Array.join 84 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/StringBuf.hx 85 | Typing macro StringBuf.new 86 | Typing macro StringBuf.__make 87 | Typing macro StringBuf.add 88 | Typing macro StringBuf.__add 89 | Typing macro StringBuf.toString 90 | Typing macro StringBuf.__to_string 91 | Typing macro StringBuf.get_length 92 | Typing macro StringBuf.__get_length 93 | Typing macro StringBuf.addSub 94 | Typing macro StringBuf.__add_sub 95 | Typing macro StringBuf.addChar 96 | Typing macro StringBuf.__add_char 97 | Typing macro Type.getEnumName 98 | Typing macro Type.resolveClass 99 | Typing macro String.split 100 | Typing macro Array.new 101 | Typing macro neko.NativeArray.alloc 102 | Typing macro Array.push 103 | Typing macro Array.__grow 104 | Typing macro neko.NativeArray.length 105 | Typing macro neko.NativeArray.blit 106 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Reflect.hx 107 | Typing macro Reflect.field 108 | Typing macro Reflect.hasField 109 | Typing macro Reflect.setField 110 | Typing macro Reflect.getProperty 111 | Typing macro Reflect.setProperty 112 | Typing macro Reflect.callMethod 113 | Typing macro Array.__neko 114 | Typing macro neko.NativeArray.sub 115 | Typing macro Reflect.fields 116 | Typing macro Array.new1 117 | Typing macro Array.remove 118 | Typing macro Reflect.isFunction 119 | Typing macro Reflect.compare 120 | Typing macro Reflect.compareMethods 121 | Typing macro Reflect.same_closure 122 | Typing macro Reflect.isObject 123 | Typing macro Reflect.isEnumValue 124 | Typing macro Reflect.deleteField 125 | Typing macro Reflect.copy 126 | Typing macro Reflect.makeVarArgs 127 | Typing macro Type.resolveEnum 128 | Typing macro Type.createInstance 129 | Typing macro Type.createEmptyInstance 130 | Typing macro Type.createEnum 131 | Typing macro Type.createEnumIndex 132 | Typing macro Type.getInstanceFields 133 | Typing macro Type.getClassFields 134 | Typing macro Type.getEnumConstructs 135 | Typing macro Array.copy 136 | Typing macro Type.typeof 137 | Typing macro Type.enumEq 138 | Typing macro Type.enumConstructor 139 | Typing macro Type.enumParameters 140 | Typing macro Type.enumIndex 141 | Typing macro Type.allEnums 142 | Typing macro IntIterator.new 143 | Typing macro IntIterator.hasNext 144 | Typing macro IntIterator.next 145 | Typing macro neko.Boot.__tmp_str 146 | Typing macro neko.Boot.__enum_str 147 | Typing macro neko.Boot.__serialize 148 | Typing macro neko.Boot.__tagserialize 149 | Typing macro neko.Boot.__unserialize 150 | Typing macro Std.string 151 | Typing macro neko.Boot.__init 152 | Typing macro Std.instance 153 | Typing macro Std.int 154 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Math.hx 155 | Typing macro _Math.MathImpl._rand_float 156 | Typing macro _Math.MathImpl._rand_int 157 | Typing macro _Math.MathImpl.min 158 | Typing macro _Math.MathImpl.max 159 | Typing macro _Math.MathImpl.random 160 | Typing macro _Math.MathImpl.isNaN 161 | Typing macro _Math.MathImpl.isFinite 162 | Typing macro _Math.MathImpl.__init__ 163 | Typing macro Std.parseInt 164 | Typing macro Std.parseFloat 165 | Typing macro Std.random 166 | Typing macro Std.__init__ 167 | Typing macro haxe._Int64.Int64_Impl_.getHigh 168 | Typing macro haxe._Int64.Int64_Impl_.getLow 169 | Typing macro haxe._Int64.Int64_Impl_.isNeg 170 | Typing macro haxe._Int64.Int64_Impl_.isZero 171 | Typing macro haxe._Int64.Int64_Impl_.eq 172 | Typing macro haxe._Int64.Int64_Impl_.compare 173 | Typing macro haxe._Int32.Int32_Impl_.sub 174 | Typing macro haxe._Int32.Int32_Impl_.clamp 175 | Typing macro haxe._Int32.Int32_Impl_.ucompare 176 | Typing macro haxe._Int64.Int64_Impl_.ucompare 177 | Typing macro haxe._Int64.Int64_Impl_.toStr 178 | Typing macro haxe._Int64.Int64_Impl_.toString 179 | Typing macro haxe._Int64.Int64_Impl_.neq 180 | Typing macro haxe._Int64.Int64_Impl_.divMod 181 | Typing macro haxe._Int64.Int64_Impl_.neg 182 | Typing macro haxe._Int32.Int32_Impl_.postIncrement 183 | Typing macro haxe._Int64.Int64_Impl_.shl 184 | Typing macro haxe._Int64.Int64_Impl_.or 185 | Typing macro haxe._Int64.Int64_Impl_.sub 186 | Typing macro haxe._Int32.Int32_Impl_.postDecrement 187 | Typing macro haxe._Int64.Int64_Impl_.ushr 188 | Typing macro haxe._Int32.Int32_Impl_.add 189 | Typing macro haxe._Int32.Int32_Impl_.addInt 190 | Typing macro haxe._Int32.Int32_Impl_.toFloat 191 | Typing macro haxe._Int64.Int64_Impl_.parseString 192 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int64Helper.hx 193 | Parsed C:\HaxeToolkit_347\haxe\std/StringTools.hx 194 | Typing macro haxe.Int64Helper.parseString 195 | Typing macro StringTools.trim 196 | Typing macro StringTools.ltrim 197 | Typing macro StringTools.isSpace 198 | Typing macro String.charCodeAt 199 | Typing macro String.substr 200 | Typing macro StringTools.rtrim 201 | Typing macro String.charAt 202 | Typing macro String.substring 203 | Typing macro haxe._Int64.Int64_Impl_.mul 204 | Typing macro haxe._Int64.Int64_Impl_.add 205 | Typing macro StringTools.urlEncode 206 | Typing macro StringTools._urlEncode 207 | Typing macro StringTools.urlDecode 208 | Typing macro StringTools._urlDecode 209 | Typing macro StringTools.htmlEscape 210 | Typing macro StringTools.htmlUnescape 211 | Typing macro StringTools.startsWith 212 | Typing macro StringTools.endsWith 213 | Typing macro StringTools.lpad 214 | Typing macro StringTools.rpad 215 | Typing macro StringTools.replace 216 | Typing macro StringTools.hex 217 | Typing macro StringTools.fastCodeAt 218 | Typing macro StringTools.isEof 219 | Typing macro StringTools.quoteUnixArg 220 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/EReg.hx 221 | Typing macro EReg.match 222 | Typing macro EReg.regexp_match 223 | Typing macro EReg.new 224 | Typing macro EReg.regexp_new_options 225 | Typing macro EReg.matched 226 | Typing macro EReg.regexp_matched 227 | Typing macro EReg.matchedLeft 228 | Typing macro EReg.regexp_matched_pos 229 | Typing macro EReg.matchedRight 230 | Typing macro EReg.matchedPos 231 | Typing macro EReg.matchSub 232 | Typing macro EReg.split 233 | Typing macro EReg.replace 234 | Typing macro EReg.map 235 | Typing macro StringTools.winMetaCharacters 236 | Typing macro StringTools.quoteWinArg 237 | Typing macro String.indexOf 238 | Typing macro Array.indexOf 239 | Typing macro haxe.Int64Helper.fromFloat 240 | Typing macro haxe._Int64.Int64_Impl_.fromFloat 241 | Typing macro haxe._Int64.Int64_Impl_.preIncrement 242 | Typing macro haxe._Int64.Int64_Impl_.postIncrement 243 | Typing macro haxe._Int64.Int64_Impl_.preDecrement 244 | Typing macro haxe._Int64.Int64_Impl_.postDecrement 245 | Typing macro haxe._Int64.Int64_Impl_.addInt 246 | Typing macro haxe._Int64.Int64_Impl_.subInt 247 | Typing macro haxe._Int64.Int64_Impl_.intSub 248 | Typing macro haxe._Int64.Int64_Impl_.mulInt 249 | Typing macro haxe._Int64.Int64_Impl_.div 250 | Typing macro haxe._Int64.Int64_Impl_.divInt 251 | Typing macro haxe._Int64.Int64_Impl_.intDiv 252 | Typing macro haxe._Int64.Int64_Impl_.mod 253 | Typing macro haxe._Int64.Int64_Impl_.modInt 254 | Typing macro haxe._Int64.Int64_Impl_.intMod 255 | Typing macro haxe._Int64.Int64_Impl_.eqInt 256 | Typing macro haxe._Int64.Int64_Impl_.neqInt 257 | Typing macro haxe._Int64.Int64_Impl_.lt 258 | Typing macro haxe._Int64.Int64_Impl_.ltInt 259 | Typing macro haxe._Int64.Int64_Impl_.intLt 260 | Typing macro haxe._Int64.Int64_Impl_.lte 261 | Typing macro haxe._Int64.Int64_Impl_.lteInt 262 | Typing macro haxe._Int64.Int64_Impl_.intLte 263 | Typing macro haxe._Int64.Int64_Impl_.gt 264 | Typing macro haxe._Int64.Int64_Impl_.gtInt 265 | Typing macro haxe._Int64.Int64_Impl_.intGt 266 | Typing macro haxe._Int64.Int64_Impl_.gte 267 | Typing macro haxe._Int64.Int64_Impl_.gteInt 268 | Typing macro haxe._Int64.Int64_Impl_.intGte 269 | Typing macro haxe._Int64.Int64_Impl_.complement 270 | Typing macro haxe._Int64.Int64_Impl_.and 271 | Typing macro haxe._Int64.Int64_Impl_.xor 272 | Typing macro haxe._Int64.Int64_Impl_.shr 273 | Typing macro haxe._Int64.Int64_Impl_.set_high 274 | Typing macro haxe._Int64.Int64_Impl_.set_low 275 | Typing macro haxe._Int32.Int32_Impl_.preIncrement 276 | Typing macro haxe._Int32.Int32_Impl_.preDecrement 277 | Typing macro haxe._Int32.Int32_Impl_.subInt 278 | Typing macro haxe._Int32.Int32_Impl_.intSub 279 | Typing macro haxe._Int64.___Int64.toString 280 | Typing macro haxe.io.Bytes.new 281 | Typing macro haxe.io.Bytes.get 282 | Typing macro haxe.io.Bytes.set 283 | Typing macro haxe.io.Bytes.blit 284 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Error.hx 285 | Typing macro haxe.io.Bytes.fill 286 | Typing macro haxe.io.Bytes.sub 287 | Typing macro haxe.io.Bytes.compare 288 | Typing macro haxe.io.Bytes.getDouble 289 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/FPHelper.hx 290 | Typing macro haxe.io.FPHelper.i64ToDouble 291 | Typing macro haxe.io.FPHelper.helperd 292 | Parsed C:\HaxeToolkit_347\haxe\std/neko/vm/Tls.hx 293 | Typing macro neko.vm.Tls.new 294 | Typing macro neko.vm.Tls.tls_create 295 | Typing macro haxe.io.FPHelper._double_of_bytes 296 | Typing macro haxe.io.Bytes.getInt32 297 | Typing macro neko.vm.Tls.get_value 298 | Typing macro neko.vm.Tls.tls_get 299 | Typing macro neko.vm.Tls.set_value 300 | Typing macro neko.vm.Tls.tls_set 301 | Typing macro haxe.io.FPHelper.i64tmp 302 | Typing macro haxe.io.FPHelper.helperf 303 | Typing macro haxe.io.FPHelper._float_of_bytes 304 | Typing macro haxe.io.FPHelper._float_bytes 305 | Typing macro haxe.io.FPHelper._double_bytes 306 | Typing macro haxe.io.FPHelper.i32ToFloat 307 | Typing macro haxe.io.FPHelper.floatToI32 308 | Typing macro haxe.io.FPHelper.doubleToI64 309 | Typing macro haxe.io.Bytes.getFloat 310 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesInput.hx 311 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Input.hx 312 | Typing macro haxe.io.BytesInput.new 313 | Typing macro haxe.io.Bytes.getData 314 | Typing macro haxe.io.Input.readFloat 315 | Typing macro haxe.io.Input.readInt32 316 | Typing macro haxe.io.Input.readByte 317 | Typing macro haxe.io.BytesInput.get_position 318 | Typing macro haxe.io.BytesInput.get_length 319 | Typing macro haxe.io.BytesInput.set_position 320 | Typing macro haxe.io.BytesInput.readByte 321 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Eof.hx 322 | Typing macro haxe.io.Eof.new 323 | Typing macro haxe.io.Eof.toString 324 | Typing macro haxe.io.BytesInput.readBytes 325 | Typing macro haxe.io.Input.readBytes 326 | Typing macro haxe.io.Input.close 327 | Typing macro haxe.io.Input.set_bigEndian 328 | Typing macro haxe.io.Input.readAll 329 | Typing macro haxe.io.Bytes.alloc 330 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesBuffer.hx 331 | Typing macro haxe.io.BytesBuffer.new 332 | Typing macro haxe.io.BytesBuffer.addBytes 333 | Typing macro haxe.io.BytesBuffer.getBytes 334 | Typing macro haxe.io.BytesBuffer.get_length 335 | Typing macro haxe.io.BytesBuffer.addByte 336 | Typing macro haxe.io.BytesBuffer.add 337 | Typing macro haxe.io.BytesBuffer.addString 338 | Typing macro haxe.io.BytesBuffer.addInt32 339 | Typing macro haxe.io.BytesBuffer.addInt64 340 | Typing macro haxe.io.BytesBuffer.addFloat 341 | Typing macro haxe.io.BytesBuffer.addDouble 342 | Typing macro haxe.io.Input.readFullBytes 343 | Typing macro haxe.io.Input.read 344 | Typing macro haxe.io.Input.readUntil 345 | Typing macro haxe.io.Bytes.toString 346 | Typing macro haxe.io.Input.readLine 347 | Typing macro neko.Lib.rethrow 348 | Typing macro haxe.io.Input.readDouble 349 | Typing macro haxe.io.Input.readInt8 350 | Typing macro haxe.io.Input.readInt16 351 | Typing macro haxe.io.Input.readUInt16 352 | Typing macro haxe.io.Input.readInt24 353 | Typing macro haxe.io.Input.readUInt24 354 | Typing macro haxe.io.Input.readString 355 | Typing macro neko.Lib.stringReference 356 | Typing macro haxe.io.Input._float_of_bytes 357 | Typing macro haxe.io.Input._double_of_bytes 358 | Typing macro haxe.io.Input.__init__ 359 | Typing macro haxe.io.Bytes.setDouble 360 | Typing macro haxe.io.Bytes.setFloat 361 | Typing macro haxe.io.Bytes.getUInt16 362 | Typing macro haxe.io.Bytes.setUInt16 363 | Typing macro haxe.io.Bytes.getInt64 364 | Typing macro haxe.io.Bytes.setInt32 365 | Typing macro haxe.io.Bytes.setInt64 366 | Typing macro haxe.io.Bytes.getString 367 | Typing macro haxe.io.Bytes.readString 368 | Typing macro haxe.io.Bytes.toHex 369 | Typing macro haxe.io.Bytes.ofString 370 | Typing macro haxe.io.Bytes.ofData 371 | Typing macro haxe.io.Bytes.fastGet 372 | Typing macro neko.Lib.loadLazy 373 | Typing macro neko.Lib.print 374 | Typing macro neko.Lib.println 375 | Typing macro neko.Lib.serialize 376 | Typing macro neko.Lib.__serialize 377 | Typing macro neko.Lib.unserialize 378 | Typing macro neko.Lib.__unserialize 379 | Typing macro neko.Lib.localUnserialize 380 | Typing macro neko.Lib.nekoToHaxe 381 | Typing macro neko.Lib.haxeToNeko 382 | Typing macro neko.Lib.getClasses 383 | Typing macro neko.Lib.bytesReference 384 | Typing macro String.__init__ 385 | Typing macro String.lastIndexOf 386 | Typing macro String.toLowerCase 387 | Typing macro String.toUpperCase 388 | Typing macro String.toString 389 | Typing macro String.__compare 390 | Typing macro String.__add 391 | Typing macro String.__radd 392 | Typing macro String.fromCharCode 393 | Typing macro neko.NativeArray.ofArrayCopy 394 | Typing macro neko.NativeArray.ofArrayRef 395 | Typing macro neko.NativeArray.toArray 396 | Typing macro Array.concat 397 | Typing macro Array.iterator 398 | Typing macro Array.insert 399 | Typing macro Array.toString 400 | Typing macro Array.pop 401 | Typing macro Array.unshift 402 | Typing macro Array.lastIndexOf 403 | Typing macro Array.reverse 404 | Typing macro Array.shift 405 | Typing macro Array.slice 406 | Typing macro Array.sort 407 | Typing macro Array.splice 408 | Typing macro Array.map 409 | Typing macro Array.filter 410 | Typing macro Array.__get 411 | Typing macro Array.__set 412 | Typing macro haxe.EnumTools.getName 413 | Typing macro haxe.EnumTools.createByName 414 | Typing macro haxe.EnumTools.createByIndex 415 | Typing macro haxe.EnumTools.createAll 416 | Typing macro haxe.EnumTools.getConstructors 417 | Typing macro haxe.EnumValueTools.equals 418 | Typing macro haxe.EnumValueTools.getName 419 | Typing macro haxe.EnumValueTools.getParameters 420 | Typing macro haxe.EnumValueTools.getIndex 421 | Typing macro haxe.macro.Error.new 422 | Typing macro haxe.macro.Error.toString 423 | Typing macro haxe.ds.StringMap.new 424 | Typing macro haxe.ds.StringMap.set 425 | Typing macro haxe.ds.StringMap.get 426 | Typing macro haxe.ds.StringMap.exists 427 | Typing macro haxe.ds.StringMap.remove 428 | Typing macro haxe.ds.StringMap.keys 429 | Parsed C:\HaxeToolkit_347\haxe\std/List.hx 430 | Typing macro List.new 431 | Typing macro List.push 432 | Typing macro _List.ListNode.create 433 | Typing macro List.iterator 434 | Typing macro _List.ListIterator.new 435 | Typing macro _List.ListIterator.hasNext 436 | Typing macro _List.ListIterator.next 437 | Typing macro _List.ListNode.get_item 438 | Typing macro _List.ListNode.get_next 439 | Typing macro List.add 440 | Typing macro _List.ListNode.set_next 441 | Typing macro List.first 442 | Typing macro List.last 443 | Typing macro List.pop 444 | Typing macro List.isEmpty 445 | Typing macro List.clear 446 | Typing macro List.remove 447 | Typing macro List.toString 448 | Typing macro List.join 449 | Typing macro List.filter 450 | Typing macro List.map 451 | Typing macro _List.ListNode.set_item 452 | Typing macro haxe.ds.StringMap.iterator 453 | Typing macro haxe.ds.StringMap.toString 454 | Typing macro haxe.ds.IntMap.new 455 | Typing macro haxe.ds.IntMap.set 456 | Typing macro haxe.ds.IntMap.get 457 | Typing macro haxe.ds.IntMap.exists 458 | Typing macro haxe.ds.IntMap.remove 459 | Typing macro haxe.ds.IntMap.keys 460 | Typing macro haxe.ds.IntMap.iterator 461 | Typing macro haxe.ds.IntMap.toString 462 | Typing macro haxe.ds._HashMap.HashMap_Impl_._new 463 | Typing macro haxe.ds._HashMap.HashMapData.new 464 | Typing macro haxe.ds._HashMap.HashMap_Impl_.set 465 | Typing macro haxe.ds._HashMap.HashMap_Impl_.get 466 | Typing macro haxe.ds._HashMap.HashMap_Impl_.exists 467 | Typing macro haxe.ds._HashMap.HashMap_Impl_.remove 468 | Typing macro haxe.ds._HashMap.HashMap_Impl_.keys 469 | Typing macro haxe.ds._HashMap.HashMap_Impl_.iterator 470 | Typing macro haxe.ds.ObjectMap.count 471 | Typing macro haxe.ds.ObjectMap.assignId 472 | Typing macro haxe.ds.ObjectMap.getId 473 | Typing macro haxe.ds.ObjectMap.new 474 | Typing macro haxe.ds.ObjectMap.set 475 | Typing macro haxe.ds.ObjectMap.get 476 | Typing macro haxe.ds.ObjectMap.exists 477 | Typing macro haxe.ds.ObjectMap.remove 478 | Typing macro haxe.ds.ObjectMap.keys 479 | Typing macro haxe.ds.ObjectMap.iterator 480 | Typing macro haxe.ds.ObjectMap.toString 481 | Typing macro haxe.ds.WeakMap.new 482 | Typing macro haxe.ds.WeakMap.set 483 | Typing macro haxe.ds.WeakMap.get 484 | Typing macro haxe.ds.WeakMap.exists 485 | Typing macro haxe.ds.WeakMap.remove 486 | Typing macro haxe.ds.WeakMap.keys 487 | Typing macro haxe.ds.WeakMap.iterator 488 | Typing macro haxe.ds.WeakMap.toString 489 | Typing macro haxe.ds.TreeNode.new 490 | Typing macro haxe.ds.TreeNode.get_height 491 | Typing macro haxe.ds.TreeNode.toString 492 | Typing macro haxe.ds.EnumValueMap.compare 493 | Typing macro haxe.ds.EnumValueMap.compareArgs 494 | Typing macro haxe.ds.EnumValueMap.compareArg 495 | Typing macro haxe.ds.BalancedTree.new 496 | Typing macro haxe.ds.BalancedTree.set 497 | Typing macro haxe.ds.BalancedTree.setLoop 498 | Typing macro haxe.ds.BalancedTree.compare 499 | Typing macro haxe.ds.BalancedTree.balance 500 | Typing macro haxe.ds.BalancedTree.get 501 | Typing macro haxe.ds.BalancedTree.remove 502 | Typing macro haxe.ds.BalancedTree.removeLoop 503 | Typing macro haxe.ds.BalancedTree.merge 504 | Typing macro haxe.ds.BalancedTree.minBinding 505 | Typing macro haxe.ds.BalancedTree.removeMinBinding 506 | Typing macro haxe.ds.BalancedTree.exists 507 | Typing macro haxe.ds.BalancedTree.iterator 508 | Typing macro haxe.ds.BalancedTree.iteratorLoop 509 | Typing macro haxe.ds.BalancedTree.keys 510 | Typing macro haxe.ds.BalancedTree.keysLoop 511 | Typing macro haxe.ds.BalancedTree.toString 512 | Typing macro _Map.Map_Impl_.set 513 | Typing macro _Map.Map_Impl_.get 514 | Typing macro _Map.Map_Impl_.exists 515 | Typing macro _Map.Map_Impl_.remove 516 | Typing macro _Map.Map_Impl_.keys 517 | Typing macro _Map.Map_Impl_.iterator 518 | Typing macro _Map.Map_Impl_.toString 519 | Typing macro _Map.Map_Impl_.arrayWrite 520 | Typing macro _Map.Map_Impl_.toStringMap 521 | Typing macro _Map.Map_Impl_.toIntMap 522 | Typing macro _Map.Map_Impl_.toEnumValueMapMap 523 | Typing macro _Map.Map_Impl_.toObjectMap 524 | Typing macro _Map.Map_Impl_.fromStringMap 525 | Typing macro _Map.Map_Impl_.fromIntMap 526 | Typing macro _Map.Map_Impl_.fromObjectMap 527 | Parsed C:\HaxeToolkit_347\haxe\std/StdTypes.hx 528 | Parsed C:\HaxeToolkit_347\haxe\std/String.hx 529 | Parsed C:\HaxeToolkit_347\haxe\std/Array.hx 530 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/EnumTools.hx 531 | Parsed C:\HaxeToolkit_347\haxe\std/EReg.hx 532 | Parsed C:\HaxeToolkit_347\haxe\std/EnumValue.hx 533 | Parsed C:\HaxeToolkit_347\haxe\std/Enum.hx 534 | Typing macro haxe.EnumTools.getName 535 | Parsed C:\HaxeToolkit_347\haxe\std/Type.hx 536 | Parsed C:\HaxeToolkit_347\haxe\std/Class.hx 537 | Typing macro haxe.EnumTools.createByName 538 | Typing macro haxe.EnumTools.createByIndex 539 | Typing macro haxe.EnumTools.createAll 540 | Typing macro haxe.EnumTools.getConstructors 541 | Typing macro haxe.EnumValueTools.equals 542 | Typing macro haxe.EnumValueTools.getName 543 | Typing macro haxe.EnumValueTools.getParameters 544 | Typing macro haxe.EnumValueTools.getIndex 545 | Typing macro EReg.new 546 | Typing macro EReg.match 547 | Typing macro EReg.matched 548 | Typing macro EReg.matchedLeft 549 | Typing macro EReg.matchedRight 550 | Typing macro EReg.matchedPos 551 | Typing macro EReg.matchSub 552 | Typing macro EReg.split 553 | Typing macro EReg.replace 554 | Typing macro EReg.map 555 | Parsed C:\HaxeToolkit_347\haxe\std/Math.hx 556 | Typing macro Math.ffloor 557 | Typing macro Math.fceil 558 | Typing macro Math.fround 559 | Typing macro Math.__init__ 560 | Parsed C:\HaxeToolkit_347\haxe\std/Reflect.hx 561 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Constraints.hx 562 | Parsed C:\HaxeToolkit_347\haxe\std/StringBuf.hx 563 | Typing macro StringBuf.new 564 | Typing macro StringBuf.get_length 565 | Typing macro StringBuf.add 566 | Parsed C:\HaxeToolkit_347\haxe\std/Std.hx 567 | Typing macro StringBuf.addChar 568 | Typing macro StringBuf.addSub 569 | Typing macro StringBuf.toString 570 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/StringMap.hx 571 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/IntMap.hx 572 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/ObjectMap.hx 573 | Parsed ../linc/Linc.hx 574 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Path.hx 575 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/macro/Context.hx 576 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/macro/PositionTools.hx 577 | Typing macro haxe.io.Path.new 578 | Typing macro haxe.io.Path.toString 579 | Typing macro haxe.io.Path.withoutExtension 580 | Typing macro haxe.io.Path.withoutDirectory 581 | Typing macro haxe.io.Path.directory 582 | Typing macro haxe.io.Path.extension 583 | Typing macro haxe.io.Path.withExtension 584 | Typing macro haxe.io.Path.join 585 | Typing macro haxe.io.Path.addTrailingSlash 586 | Typing macro haxe.io.Path.normalize 587 | Typing macro haxe.io.Path.removeTrailingSlashes 588 | Typing macro haxe.io.Path.isAbsolute 589 | Typing macro haxe.io.Path.unescape 590 | Typing macro haxe.io.Path.escape 591 | Typing macro haxe.macro.Context.error 592 | Typing macro haxe.macro.Context.load 593 | Typing macro haxe.macro.Context.fatalError 594 | Typing macro haxe.macro.Context.warning 595 | Typing macro haxe.macro.Context.resolvePath 596 | Typing macro haxe.macro.Context.getClassPath 597 | Typing macro haxe.macro.Context.currentPos 598 | Typing macro haxe.macro.Context.getExpectedType 599 | Typing macro haxe.macro.Context.getCallArguments 600 | Typing macro haxe.macro.Context.getLocalClass 601 | Typing macro haxe.macro.Context.getLocalModule 602 | Typing macro haxe.macro.Context.getLocalType 603 | Typing macro haxe.macro.Context.getLocalMethod 604 | Typing macro haxe.macro.Context.getLocalUsing 605 | Typing macro haxe.macro.Context.getLocalImports 606 | Typing macro haxe.macro.Context.getLocalVars 607 | Typing macro haxe.macro.Context.getLocalTVars 608 | Typing macro haxe.macro.Context.defined 609 | Typing macro haxe.macro.Context.definedValue 610 | Typing macro haxe.macro.Context.getDefines 611 | Typing macro haxe.macro.Context.getType 612 | Typing macro haxe.macro.Context.getModule 613 | Typing macro haxe.macro.Context.parse 614 | Typing macro haxe.macro.Context.parseInlineString 615 | Typing macro haxe.macro.Context.makeExpr 616 | Typing macro haxe.macro.Context.signature 617 | Typing macro haxe.macro.Context.onGenerate 618 | Typing macro haxe.macro.Context.onAfterGenerate 619 | Typing macro haxe.macro.Context.onAfterTyping 620 | Typing macro haxe.macro.Context.onTypeNotFound 621 | Typing macro haxe.macro.Context.typeof 622 | Typing macro haxe.macro.Context.typeExpr 623 | Typing macro haxe.macro.Context.resolveType 624 | Typing macro haxe.macro.Context.toComplexType 625 | Typing macro haxe.macro.Context.unify 626 | Typing macro haxe.macro.Context.follow 627 | Typing macro haxe.macro.Context.followWithAbstracts 628 | Typing macro haxe.macro.Context.getPosInfos 629 | Typing macro haxe.macro.Context.makePosition 630 | Typing macro haxe.macro.Context.getResources 631 | Typing macro haxe.macro.Context.addResource 632 | Typing macro haxe.macro.Context.getBuildFields 633 | Typing macro haxe.macro.Context.defineType 634 | Typing macro haxe.macro.Context.defineModule 635 | Typing macro haxe.macro.Context.getTypedExpr 636 | Typing macro haxe.macro.Context.storeTypedExpr 637 | Typing macro haxe.macro.Context.registerModuleDependency 638 | Typing macro haxe.macro.Context.registerModuleReuseCall 639 | Typing macro haxe.macro.Context.onMacroContextReused 640 | Typing macro haxe.macro.Context.includeFile 641 | Typing macro haxe.macro.Context.sExpr 642 | Typing macro haxe.macro.PositionTools.here 643 | Typing macro haxe.macro.PositionTools.getInfos 644 | Typing macro haxe.macro.PositionTools.make 645 | Typing macro linc.Linc.touch 646 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Date.hx 647 | Typing macro Date.now 648 | Typing macro Date.new1 649 | Typing macro Date.new 650 | Typing macro Date.date_set_day 651 | Typing macro Date.date_set_hour 652 | Typing macro Date.date_now 653 | Typing macro Date.getTime 654 | Typing macro Date.int32_to_float 655 | Typing macro Date.getFullYear 656 | Typing macro Date.date_get_day 657 | Typing macro Date.getMonth 658 | Typing macro Date.getDate 659 | Typing macro Date.getHours 660 | Typing macro Date.date_get_hour 661 | Typing macro Date.getMinutes 662 | Typing macro Date.getSeconds 663 | Typing macro Date.getDay 664 | Typing macro Date.date_format 665 | Typing macro Date.toString 666 | Typing macro Date.fromTime 667 | Typing macro Date.int32_add 668 | Typing macro Date.int32_shl 669 | Typing macro Date.fromString 670 | Typing macro Date.date_new 671 | Typing macro Date.__string 672 | Typing macro linc.Linc.xml 673 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/Sys.hx 674 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Output.hx 675 | Typing macro Sys.getCwd 676 | Typing macro Sys.get_cwd 677 | Typing macro haxe.io.Output.writeByte 678 | Typing macro haxe.io.Output.writeBytes 679 | Typing macro haxe.io.Output.flush 680 | Typing macro haxe.io.Output.close 681 | Typing macro haxe.io.Output.set_bigEndian 682 | Typing macro haxe.io.Output.write 683 | Typing macro haxe.io.Output.writeFullBytes 684 | Typing macro haxe.io.Output.writeFloat 685 | Typing macro haxe.io.Output.writeInt32 686 | Typing macro haxe.io.Output.writeDouble 687 | Typing macro haxe.io.Output.writeInt8 688 | Typing macro haxe.io.Output.writeInt16 689 | Typing macro haxe.io.Output.writeUInt16 690 | Typing macro haxe.io.Output.writeInt24 691 | Typing macro haxe.io.Output.writeUInt24 692 | Typing macro haxe.io.Output.prepare 693 | Typing macro haxe.io.Output.writeInput 694 | Typing macro haxe.io.Output.writeString 695 | Typing macro haxe.io.Output.__init__ 696 | Typing macro Sys.print 697 | Typing macro Sys.println 698 | Typing macro Sys.getChar 699 | Typing macro Sys.getch 700 | Typing macro Sys.stdin 701 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/sys/io/FileInput.hx 702 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/sys/io/File.hx 703 | Parsed C:\HaxeToolkit_347\haxe\std/sys/io/FileSeek.hx 704 | Parsed C:\HaxeToolkit_347\haxe\std/neko/_std/sys/io/FileOutput.hx 705 | Typing macro sys.io.FileInput.new 706 | Typing macro Sys.file_stdin 707 | Typing macro sys.io.FileOutput.new 708 | Typing macro sys.io.FileOutput.writeByte 709 | Typing macro sys.io.FileOutput.file_write_char 710 | Typing macro sys.io.FileOutput.writeBytes 711 | Typing macro sys.io.FileOutput.file_write 712 | Typing macro sys.io.FileOutput.flush 713 | Typing macro sys.io.FileOutput.file_flush 714 | Typing macro sys.io.FileOutput.close 715 | Typing macro sys.io.FileOutput.file_close 716 | Typing macro sys.io.FileOutput.seek 717 | Typing macro sys.io.FileOutput.file_seek 718 | Typing macro sys.io.FileOutput.tell 719 | Typing macro sys.io.FileOutput.file_tell 720 | Typing macro sys.io.File.getContent 721 | Typing macro sys.io.File.file_contents 722 | Typing macro sys.io.File.getBytes 723 | Typing macro sys.io.File.saveContent 724 | Typing macro sys.io.File.write 725 | Typing macro sys.io.File.file_open 726 | Typing macro sys.io.File.saveBytes 727 | Typing macro sys.io.File.read 728 | Typing macro sys.io.File.append 729 | Typing macro sys.io.File.copy 730 | Typing macro sys.io.FileInput.close 731 | Typing macro sys.io.FileInput.file_close 732 | Typing macro sys.io.FileInput.readByte 733 | Typing macro sys.io.FileInput.file_read_char 734 | Typing macro sys.io.FileInput.readBytes 735 | Typing macro sys.io.FileInput.file_read 736 | Typing macro sys.io.FileInput.seek 737 | Typing macro sys.io.FileInput.file_seek 738 | Typing macro sys.io.FileInput.tell 739 | Typing macro sys.io.FileInput.file_tell 740 | Typing macro sys.io.FileInput.eof 741 | Typing macro sys.io.FileInput.file_eof 742 | Typing macro Sys.stdout 743 | Typing macro Sys.file_stdout 744 | Typing macro Sys.stderr 745 | Typing macro Sys.file_stderr 746 | Typing macro Sys.args 747 | Typing macro Sys.getEnv 748 | Typing macro Sys.get_env 749 | Typing macro Sys.putEnv 750 | Typing macro Sys.put_env 751 | Typing macro Sys.sleep 752 | Typing macro Sys._sleep 753 | Typing macro Sys.setTimeLocale 754 | Typing macro Sys.set_time_locale 755 | Typing macro Sys.setCwd 756 | Typing macro Sys.set_cwd 757 | Typing macro Sys.systemName 758 | Typing macro Sys.sys_string 759 | Typing macro Sys.command 760 | Typing macro Sys.sys_command 761 | Typing macro Sys.exit 762 | Typing macro Sys.sys_exit 763 | Typing macro Sys.time 764 | Typing macro Sys.sys_time 765 | Typing macro Sys.cpuTime 766 | Typing macro Sys.sys_cpu_time 767 | Typing macro Sys.executablePath 768 | Typing macro Sys.sys_exe_path 769 | Typing macro Sys.programPath 770 | Typing macro Sys.environment 771 | Typing macro Sys.sys_env 772 | Parsed C:\HaxeToolkit_347\haxe\std/sys/io/FileOutput.hx 773 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Output.hx 774 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Bytes.hx 775 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Input.hx 776 | Parsed C:\HaxeToolkit_347\haxe\std/sys/io/FileSeek.hx 777 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesData.hx 778 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int64.hx 779 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int32.hx 780 | Typing macro haxe._Int64.Int64_Impl_._new 781 | Typing macro haxe._Int64.Int64_Impl_.copy 782 | Typing macro haxe._Int64.Int64_Impl_.ofInt 783 | Typing macro haxe._Int64.Int64_Impl_.make 784 | Typing macro haxe._Int64.___Int64.new 785 | Typing macro haxe._Int64.Int64_Impl_.get_high 786 | Typing macro haxe._Int64.Int64_Impl_.get_low 787 | Typing macro haxe._Int64.Int64_Impl_.toInt 788 | Typing macro haxe._Int64.Int64_Impl_.is 789 | Typing macro haxe._Int64.Int64_Impl_.getHigh 790 | Typing macro haxe._Int64.Int64_Impl_.getLow 791 | Typing macro haxe._Int64.Int64_Impl_.isNeg 792 | Typing macro haxe._Int64.Int64_Impl_.isZero 793 | Typing macro haxe._Int64.Int64_Impl_.eq 794 | Typing macro haxe._Int64.Int64_Impl_.compare 795 | Typing macro haxe._Int32.Int32_Impl_.sub 796 | Typing macro haxe._Int32.Int32_Impl_.clamp 797 | Typing macro haxe._Int32.Int32_Impl_.ucompare 798 | Typing macro haxe._Int64.Int64_Impl_.ucompare 799 | Typing macro haxe._Int64.Int64_Impl_.toStr 800 | Typing macro haxe._Int64.Int64_Impl_.toString 801 | Typing macro haxe._Int64.Int64_Impl_.neq 802 | Typing macro haxe._Int64.Int64_Impl_.divMod 803 | Typing macro haxe._Int64.Int64_Impl_.neg 804 | Typing macro haxe._Int32.Int32_Impl_.postIncrement 805 | Typing macro haxe._Int64.Int64_Impl_.shl 806 | Typing macro haxe._Int64.Int64_Impl_.or 807 | Typing macro haxe._Int64.Int64_Impl_.sub 808 | Typing macro haxe._Int32.Int32_Impl_.postDecrement 809 | Typing macro haxe._Int64.Int64_Impl_.ushr 810 | Typing macro haxe._Int32.Int32_Impl_.add 811 | Typing macro haxe._Int32.Int32_Impl_.addInt 812 | Typing macro haxe._Int32.Int32_Impl_.toFloat 813 | Typing macro haxe._Int64.Int64_Impl_.parseString 814 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Int64Helper.hx 815 | Parsed C:\HaxeToolkit_347\haxe\std/StringTools.hx 816 | Typing macro haxe.Int64Helper.parseString 817 | Typing macro StringTools.trim 818 | Typing macro StringTools.ltrim 819 | Typing macro StringTools.isSpace 820 | Typing macro StringTools.rtrim 821 | Parsed C:\HaxeToolkit_347\haxe\std/IntIterator.hx 822 | Typing macro haxe._Int64.Int64_Impl_.mul 823 | Typing macro haxe._Int64.Int64_Impl_.add 824 | Typing macro IntIterator.new 825 | Typing macro IntIterator.hasNext 826 | Typing macro IntIterator.next 827 | Typing macro StringTools.urlEncode 828 | Typing macro StringTools.urlDecode 829 | Typing macro StringTools.htmlEscape 830 | Typing macro StringTools.htmlUnescape 831 | Typing macro StringTools.startsWith 832 | Typing macro StringTools.endsWith 833 | Typing macro StringTools.lpad 834 | Typing macro StringTools.rpad 835 | Typing macro StringTools.replace 836 | Typing macro StringTools.hex 837 | Typing macro StringTools.fastCodeAt 838 | Typing macro StringTools.isEof 839 | Typing macro StringTools.quoteUnixArg 840 | Typing macro StringTools.winMetaCharacters 841 | Typing macro StringTools.quoteWinArg 842 | Typing macro haxe.Int64Helper.fromFloat 843 | Typing macro haxe._Int64.Int64_Impl_.fromFloat 844 | Typing macro haxe._Int64.Int64_Impl_.preIncrement 845 | Typing macro haxe._Int64.Int64_Impl_.postIncrement 846 | Typing macro haxe._Int64.Int64_Impl_.preDecrement 847 | Typing macro haxe._Int64.Int64_Impl_.postDecrement 848 | Typing macro haxe._Int64.Int64_Impl_.addInt 849 | Typing macro haxe._Int64.Int64_Impl_.subInt 850 | Typing macro haxe._Int64.Int64_Impl_.intSub 851 | Typing macro haxe._Int64.Int64_Impl_.mulInt 852 | Typing macro haxe._Int64.Int64_Impl_.div 853 | Typing macro haxe._Int64.Int64_Impl_.divInt 854 | Typing macro haxe._Int64.Int64_Impl_.intDiv 855 | Typing macro haxe._Int64.Int64_Impl_.mod 856 | Typing macro haxe._Int64.Int64_Impl_.modInt 857 | Typing macro haxe._Int64.Int64_Impl_.intMod 858 | Typing macro haxe._Int64.Int64_Impl_.eqInt 859 | Typing macro haxe._Int64.Int64_Impl_.neqInt 860 | Typing macro haxe._Int64.Int64_Impl_.lt 861 | Typing macro haxe._Int64.Int64_Impl_.ltInt 862 | Typing macro haxe._Int64.Int64_Impl_.intLt 863 | Typing macro haxe._Int64.Int64_Impl_.lte 864 | Typing macro haxe._Int64.Int64_Impl_.lteInt 865 | Typing macro haxe._Int64.Int64_Impl_.intLte 866 | Typing macro haxe._Int64.Int64_Impl_.gt 867 | Typing macro haxe._Int64.Int64_Impl_.gtInt 868 | Typing macro haxe._Int64.Int64_Impl_.intGt 869 | Typing macro haxe._Int64.Int64_Impl_.gte 870 | Typing macro haxe._Int64.Int64_Impl_.gteInt 871 | Typing macro haxe._Int64.Int64_Impl_.intGte 872 | Typing macro haxe._Int64.Int64_Impl_.complement 873 | Typing macro haxe._Int64.Int64_Impl_.and 874 | Typing macro haxe._Int64.Int64_Impl_.xor 875 | Typing macro haxe._Int64.Int64_Impl_.shr 876 | Typing macro haxe._Int64.Int64_Impl_.set_high 877 | Typing macro haxe._Int64.Int64_Impl_.set_low 878 | Typing macro haxe._Int32.Int32_Impl_.preIncrement 879 | Typing macro haxe._Int32.Int32_Impl_.preDecrement 880 | Typing macro haxe._Int32.Int32_Impl_.subInt 881 | Typing macro haxe._Int32.Int32_Impl_.intSub 882 | Typing macro haxe._Int64.___Int64.toString 883 | Typing macro haxe.io.Bytes.new 884 | Typing macro haxe.io.Bytes.get 885 | Typing macro haxe.io.Bytes.set 886 | Typing macro haxe.io.Bytes.blit 887 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Error.hx 888 | Typing macro haxe.io.Bytes.fill 889 | Typing macro haxe.io.Bytes.sub 890 | Typing macro haxe.io.Bytes.compare 891 | Typing macro haxe.io.Bytes.getDouble 892 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/FPHelper.hx 893 | Typing macro haxe.io.FPHelper.i64ToDouble 894 | Typing macro haxe.io.Bytes.getInt32 895 | Typing macro haxe.io.FPHelper.i64tmp 896 | Typing macro haxe.io.FPHelper.LN2 897 | Typing macro haxe.io.FPHelper.i32ToFloat 898 | Typing macro haxe.io.FPHelper.floatToI32 899 | Typing macro haxe.io.FPHelper.doubleToI64 900 | Typing macro haxe.io.Bytes.getFloat 901 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesInput.hx 902 | Typing macro haxe.io.BytesInput.new 903 | Typing macro haxe.io.Bytes.getData 904 | Typing macro haxe.io.Input.readFloat 905 | Typing macro haxe.io.Input.readInt32 906 | Typing macro haxe.io.Input.readByte 907 | Typing macro haxe.io.BytesInput.get_position 908 | Typing macro haxe.io.BytesInput.get_length 909 | Typing macro haxe.io.BytesInput.set_position 910 | Typing macro haxe.io.BytesInput.readByte 911 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/Eof.hx 912 | Typing macro haxe.io.Eof.new 913 | Typing macro haxe.io.Eof.toString 914 | Typing macro haxe.io.BytesInput.readBytes 915 | Typing macro haxe.io.Bytes.setDouble 916 | Typing macro haxe.io.Bytes.setInt32 917 | Typing macro haxe.io.Bytes.setFloat 918 | Typing macro haxe.io.Bytes.getUInt16 919 | Typing macro haxe.io.Bytes.setUInt16 920 | Typing macro haxe.io.Bytes.getInt64 921 | Typing macro haxe.io.Bytes.setInt64 922 | Typing macro haxe.io.Bytes.getString 923 | Typing macro haxe.io.Bytes.readString 924 | Typing macro haxe.io.Bytes.toString 925 | Typing macro haxe.io.Bytes.toHex 926 | Typing macro haxe.io.Bytes.alloc 927 | Typing macro haxe.io.Bytes.ofString 928 | Typing macro haxe.io.Bytes.ofData 929 | Typing macro haxe.io.Bytes.fastGet 930 | Typing macro haxe.io.Input.readBytes 931 | Typing macro haxe.io.Input.close 932 | Typing macro haxe.io.Input.set_bigEndian 933 | Typing macro haxe.io.Input.readAll 934 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/io/BytesBuffer.hx 935 | Typing macro haxe.io.BytesBuffer.new 936 | Typing macro haxe.io.BytesBuffer.addBytes 937 | Typing macro haxe.io.BytesBuffer.getBytes 938 | Typing macro haxe.io.BytesBuffer.get_length 939 | Typing macro haxe.io.BytesBuffer.addByte 940 | Typing macro haxe.io.BytesBuffer.add 941 | Typing macro haxe.io.BytesBuffer.addString 942 | Typing macro haxe.io.BytesBuffer.addInt32 943 | Typing macro haxe.io.BytesBuffer.addInt64 944 | Typing macro haxe.io.BytesBuffer.addFloat 945 | Typing macro haxe.io.BytesBuffer.addDouble 946 | Typing macro haxe.io.Input.readFullBytes 947 | Typing macro haxe.io.Input.read 948 | Typing macro haxe.io.Input.readUntil 949 | Typing macro haxe.io.Input.readLine 950 | Typing macro haxe.io.Input.readDouble 951 | Typing macro haxe.io.Input.readInt8 952 | Typing macro haxe.io.Input.readInt16 953 | Typing macro haxe.io.Input.readUInt16 954 | Typing macro haxe.io.Input.readInt24 955 | Typing macro haxe.io.Input.readUInt24 956 | Typing macro haxe.io.Input.readString 957 | Typing macro haxe.io.Output.writeByte 958 | Typing macro haxe.io.Output.writeBytes 959 | Typing macro haxe.io.Output.flush 960 | Typing macro haxe.io.Output.close 961 | Typing macro haxe.io.Output.set_bigEndian 962 | Typing macro haxe.io.Output.write 963 | Typing macro haxe.io.Output.writeFullBytes 964 | Typing macro haxe.io.Output.writeFloat 965 | Typing macro haxe.io.Output.writeInt32 966 | Typing macro haxe.io.Output.writeDouble 967 | Typing macro haxe.io.Output.writeInt8 968 | Typing macro haxe.io.Output.writeInt16 969 | Typing macro haxe.io.Output.writeUInt16 970 | Typing macro haxe.io.Output.writeInt24 971 | Typing macro haxe.io.Output.writeUInt24 972 | Typing macro haxe.io.Output.prepare 973 | Typing macro haxe.io.Output.writeInput 974 | Typing macro haxe.io.Output.writeString 975 | Parsed C:\HaxeToolkit_347\haxe\std/sys/io/File.hx 976 | Parsed C:\HaxeToolkit_347\haxe\std/sys/io/FileInput.hx 977 | Parsed C:\HaxeToolkit_347\haxe\std/Sys.hx 978 | Parsed C:\HaxeToolkit_347\haxe\std/Map.hx 979 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/HashMap.hx 980 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/WeakMap.hx 981 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/EnumValueMap.hx 982 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/ds/BalancedTree.hx 983 | Typing macro haxe.ds._HashMap.HashMap_Impl_._new 984 | Typing macro haxe.ds._HashMap.HashMapData.new 985 | Typing macro haxe.ds._HashMap.HashMap_Impl_.set 986 | Typing macro haxe.ds._HashMap.HashMap_Impl_.get 987 | Typing macro haxe.ds._HashMap.HashMap_Impl_.exists 988 | Typing macro haxe.ds._HashMap.HashMap_Impl_.remove 989 | Typing macro haxe.ds._HashMap.HashMap_Impl_.keys 990 | Typing macro haxe.ds._HashMap.HashMap_Impl_.iterator 991 | Typing macro haxe.ds.WeakMap.new 992 | Typing macro haxe.ds.WeakMap.set 993 | Typing macro haxe.ds.WeakMap.get 994 | Typing macro haxe.ds.WeakMap.exists 995 | Typing macro haxe.ds.WeakMap.remove 996 | Typing macro haxe.ds.WeakMap.keys 997 | Typing macro haxe.ds.WeakMap.iterator 998 | Typing macro haxe.ds.WeakMap.toString 999 | Typing macro haxe.ds.TreeNode.new 1000 | Typing macro haxe.ds.TreeNode.get_height 1001 | Typing macro haxe.ds.TreeNode.toString 1002 | Typing macro haxe.ds.EnumValueMap.compare 1003 | Typing macro haxe.ds.EnumValueMap.compareArgs 1004 | Typing macro haxe.ds.EnumValueMap.compareArg 1005 | Typing macro haxe.ds.BalancedTree.new 1006 | Typing macro haxe.ds.BalancedTree.set 1007 | Typing macro haxe.ds.BalancedTree.setLoop 1008 | Typing macro haxe.ds.BalancedTree.compare 1009 | Typing macro haxe.ds.BalancedTree.balance 1010 | Typing macro haxe.ds.BalancedTree.get 1011 | Typing macro haxe.ds.BalancedTree.remove 1012 | Typing macro haxe.ds.BalancedTree.removeLoop 1013 | Typing macro haxe.ds.BalancedTree.merge 1014 | Typing macro haxe.ds.BalancedTree.minBinding 1015 | Typing macro haxe.ds.BalancedTree.removeMinBinding 1016 | Typing macro haxe.ds.BalancedTree.exists 1017 | Typing macro haxe.ds.BalancedTree.iterator 1018 | Typing macro haxe.ds.BalancedTree.iteratorLoop 1019 | Typing macro haxe.ds.BalancedTree.keys 1020 | Typing macro haxe.ds.BalancedTree.keysLoop 1021 | Typing macro haxe.ds.BalancedTree.toString 1022 | Typing macro _Map.Map_Impl_.set 1023 | Typing macro _Map.Map_Impl_.get 1024 | Typing macro _Map.Map_Impl_.exists 1025 | Typing macro _Map.Map_Impl_.remove 1026 | Typing macro _Map.Map_Impl_.keys 1027 | Typing macro _Map.Map_Impl_.iterator 1028 | Typing macro _Map.Map_Impl_.toString 1029 | Typing macro _Map.Map_Impl_.arrayWrite 1030 | Typing macro _Map.Map_Impl_.toStringMap 1031 | Typing macro _Map.Map_Impl_.toIntMap 1032 | Typing macro _Map.Map_Impl_.toEnumValueMapMap 1033 | Typing macro _Map.Map_Impl_.toObjectMap 1034 | Typing macro _Map.Map_Impl_.fromStringMap 1035 | Typing macro _Map.Map_Impl_.fromIntMap 1036 | Typing macro _Map.Map_Impl_.fromObjectMap 1037 | Parsed C:\HaxeToolkit_347\haxe\std/Date.hx 1038 | Parsed C:\HaxeToolkit_347\haxe\std/Class.hx 1039 | Parsed C:\HaxeToolkit_347\haxe\std/EnumValue.hx 1040 | Parsed C:\HaxeToolkit_347\haxe\std/Enum.hx 1041 | Typing haxe.EnumTools.getName 1042 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/_std/Type.hx 1043 | Typing Type.getEnumName 1044 | Typing Type.getClass 1045 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/_std/Reflect.hx 1046 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/ObjectType.hx 1047 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Constraints.hx 1048 | Typing Reflect.isObject 1049 | Typing cpp.ObjectType.vtObject 1050 | Typing cpp.ObjectType.vtClass 1051 | Typing cpp.ObjectType.vtString 1052 | Typing cpp.ObjectType.vtArray 1053 | Typing cpp.ObjectType.vtUnknown 1054 | Typing cpp.ObjectType.vtInt 1055 | Typing cpp.ObjectType.vtNull 1056 | Typing cpp.ObjectType.vtFloat 1057 | Typing cpp.ObjectType.vtBool 1058 | Typing cpp.ObjectType.vtFunction 1059 | Typing cpp.ObjectType.vtEnum 1060 | Typing cpp.ObjectType.vtInt64 1061 | Typing cpp.ObjectType.vtAbstractBase 1062 | Typing Reflect.hasField 1063 | Typing Reflect.field 1064 | Typing Reflect.setField 1065 | Typing Reflect.getProperty 1066 | Typing Reflect.setProperty 1067 | Typing Reflect.callMethod 1068 | Typing Reflect.fields 1069 | Typing Reflect.isFunction 1070 | Typing Reflect.compare 1071 | Typing Reflect.compareMethods 1072 | Typing Reflect.isEnumValue 1073 | Typing Reflect.deleteField 1074 | Typing Reflect.copy 1075 | Typing Reflect.makeVarArgs 1076 | Typing Type.getEnum 1077 | Typing Type.getSuperClass 1078 | Typing Type.getClassName 1079 | Typing Type.resolveClass 1080 | Typing Type.resolveEnum 1081 | Typing Type.createInstance 1082 | Typing Type.createEmptyInstance 1083 | Typing Type.createEnum 1084 | Typing Type.createEnumIndex 1085 | Typing Type.getEnumConstructs 1086 | Typing Type.getInstanceFields 1087 | Typing Type.getClassFields 1088 | Typing Type.typeof 1089 | Typing Type.enumEq 1090 | Typing Type.enumConstructor 1091 | Parsed C:\HaxeToolkit_347\haxe\std/cpp/EnumBase.hx 1092 | Typing cpp.EnumBase.getIndex 1093 | Typing cpp.EnumBase.getTag 1094 | Typing cpp.EnumBase.getParamCount 1095 | Typing cpp.EnumBase.getParamI 1096 | Typing cpp.EnumBase.getParameters 1097 | Typing Type.enumParameters 1098 | Typing Type.getEnumValueIndex 1099 | Typing Type.enumIndex 1100 | Typing Type.allEnums 1101 | Typing haxe.EnumTools.createByName 1102 | Typing haxe.EnumTools.createByIndex 1103 | Typing haxe.EnumTools.createAll 1104 | Typing haxe.EnumTools.getConstructors 1105 | Typing haxe.EnumValueTools.equals 1106 | Typing haxe.EnumValueTools.getName 1107 | Typing haxe.EnumValueTools.getParameters 1108 | Typing haxe.EnumValueTools.getIndex 1109 | Typing Std.is 1110 | Typing Std.instance 1111 | Typing Std.string 1112 | Typing Std.int 1113 | Typing Std.parseInt 1114 | Typing Std.parseFloat 1115 | Typing Std.random 1116 | Typing faxe.Faxe.__touch 1117 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_MS 1118 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_PCM 1119 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_PCMBYTES 1120 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_RAWBYTES 1121 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_PCMFRACTION 1122 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_MODORDER 1123 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_MODROW 1124 | Typing faxe._Faxe.FmodTimeUnit_Impl_.FTM_MODPATTERN 1125 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_OK 1126 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_BADCOMMAND 1127 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_CHANNEL_ALLOC 1128 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_CHANNEL_STOLEN 1129 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DMA 1130 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_CONNECTION 1131 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_DONTPROCESS 1132 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_FORMAT 1133 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_INUSE 1134 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_NOTFOUND 1135 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_RESERVED 1136 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_SILENCE 1137 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_DSP_TYPE 1138 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_BAD 1139 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_COULDNOTSEEK 1140 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_DISKEJECTED 1141 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_EOF 1142 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_ENDOFDATA 1143 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FILE_NOTFOUND 1144 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_FORMAT 1145 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HEADER_MISMATCH 1146 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HTTP 1147 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HTTP_ACCESS 1148 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HTTP_PROXY_AUTH 1149 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HTTP_SERVER_ERROR 1150 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_HTTP_TIMEOUT 1151 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INITIALIZATION 1152 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INITIALIZED 1153 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INTERNAL 1154 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_FLOAT 1155 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_HANDLE 1156 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_PARAM 1157 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_POSITION 1158 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_SPEAKER 1159 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_SYNCPOINT 1160 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_THREAD 1161 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_VECTOR 1162 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_MAXAUDIBLE 1163 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_MEMORY 1164 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_MEMORY_CANTPOINT 1165 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NEEDS3D 1166 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NEEDSHARDWARE 1167 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NET_CONNECT 1168 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NET_SOCKET_ERROR 1169 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NET_URL 1170 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NET_WOULD_BLOCK 1171 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NOTREADY 1172 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_ALLOCATED 1173 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_CREATEBUFFER 1174 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_DRIVERCALL 1175 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_FORMAT 1176 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_INIT 1177 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_OUTPUT_NODRIVERS 1178 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_PLUGIN 1179 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_PLUGIN_MISSING 1180 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_PLUGIN_RESOURCE 1181 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_PLUGIN_VERSION 1182 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_RECORD 1183 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_REVERB_CHANNELGROUP 1184 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_REVERB_INSTANCE 1185 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_SUBSOUNDS 1186 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_SUBSOUND_ALLOCATED 1187 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_SUBSOUND_CANTMOVE 1188 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_TAGNOTFOUND 1189 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_TOOMANYCHANNELS 1190 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_TRUNCATED 1191 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_UNIMPLEMENTED 1192 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_UNINITIALIZED 1193 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_UNSUPPORTED 1194 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_VERSION 1195 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_EVENT_ALREADY_LOADED 1196 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_EVENT_LIVEUPDATE_BUSY 1197 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_EVENT_LIVEUPDATE_MISMATCH 1198 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_EVENT_LIVEUPDATE_TIMEOUT 1199 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_EVENT_NOTFOUND 1200 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_STUDIO_UNINITIALIZED 1201 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_STUDIO_NOT_LOADED 1202 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_INVALID_STRING 1203 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_ALREADY_LOCKED 1204 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_NOT_LOCKED 1205 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_RECORD_DISCONNECTED 1206 | Typing faxe._Faxe.FmodResult_Impl_.FMOD_ERR_TOOMANYSAMPLES 1207 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_DEFAULT 1208 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_LOOP_OFF 1209 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_LOOP_NORMAL 1210 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_LOOP_BIDI 1211 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_2D 1212 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D 1213 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_CREATESTREAM 1214 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_CREATESAMPLE 1215 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_CREATECOMPRESSEDSAMPLE 1216 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_OPENUSER 1217 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_OPENMEMORY 1218 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_OPENMEMORY_POINT 1219 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_OPENRAW 1220 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_OPENONLY 1221 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_ACCURATETIME 1222 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_MPEGSEARCH 1223 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_NONBLOCKING 1224 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_UNIQUE 1225 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_HEADRELATIVE 1226 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_WORLDRELATIVE 1227 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_INVERSEROLLOFF 1228 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_LINEARROLLOFF 1229 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_LINEARSQUAREROLLOFF 1230 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_INVERSETAPEREDROLLOFF 1231 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_CUSTOMROLLOFF 1232 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_3D_IGNOREGEOMETRY 1233 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_IGNORETAGS 1234 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_LOWMEM 1235 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_LOADSECONDARYRAM 1236 | Typing faxe._Faxe.FmodMode_Impl_.FMOD_VIRTUAL_PLAYFROMSTART 1237 | Typing cpp._ConstCharStar.ConstCharStar_Impl_._new 1238 | Typing cpp._ConstCharStar.ConstCharStar_Impl_.fromString 1239 | Typing cpp._ConstCharStar.ConstCharStar_Impl_.toString 1240 | Typing cpp._ConstCharStar.ConstCharStar_Impl_.toPointer 1241 | Typing cpp.NativeArray.blit 1242 | Typing cpp.NativeArray.getBase 1243 | Typing cpp.NativeArray.address 1244 | Typing cpp.Pointer.arrayElem 1245 | Typing cpp.NativeArray.unsafeSet 1246 | Typing haxe.ds._Vector.Vector_Impl_._new 1247 | Typing haxe.ds._Vector.Vector_Impl_.get 1248 | Typing haxe.ds._Vector.Vector_Impl_.set 1249 | Typing haxe.ds._Vector.Vector_Impl_.get_length 1250 | Typing haxe.ds._Vector.Vector_Impl_.blit 1251 | Typing haxe.ds._Vector.Vector_Impl_.toData 1252 | Typing haxe.ds._Vector.Vector_Impl_.toArray 1253 | Typing haxe.ds._Vector.Vector_Impl_.fromData 1254 | Typing haxe.ds._Vector.Vector_Impl_.fromArrayCopy 1255 | Typing haxe.ds._Vector.Vector_Impl_.copy 1256 | Typing haxe.ds._Vector.Vector_Impl_.join 1257 | Typing haxe.ds._Vector.Vector_Impl_.map 1258 | Parsed C:\HaxeToolkit_347\haxe\std/IntIterator.hx 1259 | Typing IntIterator.new 1260 | Typing IntIterator.hasNext 1261 | Typing IntIterator.next 1262 | Typing haxe.ds._Vector.Vector_Impl_.sort 1263 | Typing cpp.Pointer.fromHandle 1264 | Typing cpp.Pointer.ofArray 1265 | Typing cpp.Pointer.toUnmanagedArray 1266 | Typing cpp.Pointer.toUnmanagedVector 1267 | Typing Test.main 1268 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Log.hx 1269 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/PosInfos.hx 1270 | Typing haxe.Log.trace 1271 | Parsed C:\HaxeToolkit_347\haxe\std/StdTypes.hx 1272 | Parsed C:\HaxeToolkit_347\haxe\std/String.hx 1273 | Parsed C:\HaxeToolkit_347\haxe\std/Array.hx 1274 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/EnumTools.hx 1275 | Parsed C:\HaxeToolkit_347\haxe\std/Reflect.hx 1276 | Parsed C:\HaxeToolkit_347\haxe\std/haxe/Constraints.hx 1277 | Parsed C:\HaxeToolkit_347\haxe\std/EnumValue.hx 1278 | Parsed C:\HaxeToolkit_347\haxe\std/Enum.hx 1279 | Typing haxe.EnumTools.getName 1280 | Parsed C:\HaxeToolkit_347\haxe\std/Type.hx 1281 | Parsed C:\HaxeToolkit_347\haxe\std/Class.hx 1282 | Typing haxe.EnumTools.createByName 1283 | Typing haxe.EnumTools.createByIndex 1284 | Typing haxe.EnumTools.createAll 1285 | Typing haxe.EnumTools.getConstructors 1286 | Typing haxe.EnumValueTools.equals 1287 | Typing haxe.EnumValueTools.getName 1288 | Typing haxe.EnumValueTools.getParameters 1289 | Typing haxe.EnumValueTools.getIndex 1290 | Parsed C:\HaxeToolkit_347\haxe\std/Std.hx 1291 | Generating cpp: cpp 1292 | haxelib run hxcpp Build.xml haxe -Ddebug -Dhaxe3="1" -Dhaxe_ver="3.407" -Dhxcpp_api_level="331" -Dsource-header="Generated by Haxe 3.4.7" -Dwindows="1" -I"../" -I"C:\\HaxeToolkit_347\\haxe\\extraLibs/" -I"" -I"C:\\HaxeToolkit_347\\haxe\\std/cpp/_std/" -I"C:\\HaxeToolkit_347\\haxe\\std/" 1293 | Found your FMOD API! 1294 | --------------------------------------------------------------------------------