std.monkey2 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. Namespace std
  2. #Import "<libc.monkey2>"
  3. #Import "<stb-image>"
  4. #Import "<stb-image-write>"
  5. #import "<stb-vorbis>"
  6. #Import "<miniz>"
  7. #Import "<zlib>"
  8. #If __MOBILE_TARGET__
  9. #Import "<sdl2>"
  10. #If __TARGET__="android"
  11. #Import "<jni>"
  12. #Endif
  13. #Endif
  14. #If __WEB_TARGET__
  15. #Import "<emscripten>"
  16. #endif
  17. #Import "collections/container"
  18. #Import "collections/stack"
  19. #Import "collections/list"
  20. #Import "collections/map"
  21. #Import "collections/deque"
  22. #Import "resource/resource"
  23. #Import "stream/stream"
  24. #Import "stream/filestream"
  25. #If __MOBILE_TARGET__
  26. #Import "stream/sdl_rwstream.monkey2"
  27. #Endif
  28. #Import "memory/byteorder"
  29. #Import "memory/databuffer"
  30. #Import "memory/datastream"
  31. #Import "geom/affinemat3"
  32. #Import "geom/affinemat4"
  33. #Import "geom/axis"
  34. #Import "geom/box"
  35. #Import "geom/line"
  36. #Import "geom/mat3"
  37. #Import "geom/mat4"
  38. #Import "geom/plane"
  39. #Import "geom/quat"
  40. #Import "geom/rect"
  41. #Import "geom/vec2"
  42. #Import "geom/vec3"
  43. #Import "geom/vec4"
  44. #Import "geom/plane"
  45. #Import "geom/box"
  46. #Import "geom/line"
  47. #Import "graphics/pixelformat"
  48. #Import "graphics/pixmap"
  49. #Import "graphics/pixmaploader"
  50. #Import "graphics/pixmapsaver"
  51. #Import "graphics/color"
  52. #import "audio/audioformat"
  53. #import "audio/audiodata"
  54. #import "audio/load_wav"
  55. #import "audio/load_vorbis"
  56. #Import "async/async"
  57. #Import "time/time"
  58. #Import "time/timer"
  59. #Import "fiber/fiber"
  60. #Import "fiber/future"
  61. #Import "process/process"
  62. #Import "process/processstream"
  63. #Import "filesystem/filesystem"
  64. #Import "misc/random"
  65. #Import "misc/chartype"
  66. #Import "misc/stringio"
  67. #Import "misc/json"
  68. #Import "misc/jsonify"
  69. #Import "misc/zipfile"
  70. #Import "misc/base64"
  71. #Import "misc/digest"
  72. #Import "socket/socket"
  73. #Import "socket/socketstream"
  74. #Import "requesters/requesters"
  75. #Import "permissions/permissions"
  76. Private
  77. Function Main()
  78. 'Capture app start time
  79. '
  80. std.time.Now()
  81. 'Add stream handlers
  82. '
  83. Stream.OpenFuncs["file"]=Lambda:Stream( proto:String,path:String,mode:String )
  84. Return FileStream.Open( path,mode )
  85. End
  86. Stream.OpenFuncs["memblock"]=Lambda:Stream( proto:String,path:String,mode:String )
  87. Return DataStream.Open( path,mode )
  88. End
  89. #If __MOBILE_TARGET__
  90. Stream.OpenFuncs["internal"]=Lambda:Stream( proto:String,path:String,mode:String )
  91. Return FileStream.Open( filesystem.InternalDir()+path,mode )
  92. End
  93. Stream.OpenFuncs["external"]=Lambda:Stream( proto:String,path:String,mode:String )
  94. Return FileStream.Open( filesystem.ExternalDir()+path,mode )
  95. End
  96. #endif
  97. #If __DESKTOP_TARGET__
  98. Stream.OpenFuncs["process"]=Lambda:Stream( proto:String,path:String,mode:String )
  99. Return std.process.ProcessStream.Open( path,mode )
  100. End
  101. Stream.OpenFuncs["desktop"]=Lambda:Stream( proto:String,path:String,mode:String )
  102. Return FileStream.Open( filesystem.DesktopDir()+path,mode )
  103. End
  104. Stream.OpenFuncs["home"]=Lambda:Stream( proto:String,path:String,mode:String )
  105. Return FileStream.Open( filesystem.HomeDir()+path,mode )
  106. End
  107. #Endif
  108. #If __DESKTOP_TARGET__ Or __WEB_TARGET__
  109. 'note: ios and android asset proto is implemented using SDL and implemented in mojo...
  110. '
  111. Stream.OpenFuncs["asset"]=Lambda:Stream( proto:String,path:String,mode:String )
  112. Return FileStream.Open( filesystem.AssetsDir()+path,mode )
  113. End
  114. #Else If __TARGET__="android"
  115. Stream.OpenFuncs["asset"]=Lambda:Stream( proto:String,path:String,mode:String )
  116. Return SDL_RWStream.Open( path,mode )
  117. End
  118. #Else If __TARGET__="ios"
  119. Stream.OpenFuncs["asset"]=Lambda:Stream( proto:String,path:String,mode:String )
  120. Return SDL_RWStream.Open( "assets/"+path,mode )
  121. End
  122. #Endif
  123. End