├── .gitmodules ├── Info.plist ├── README.md ├── Rakefile ├── build_config.rb ├── ios └── MRuby.framework │ ├── Headers │ ├── mrbconf.h │ ├── mruby.h │ └── mruby │ │ ├── array.h │ │ ├── boxing_nan.h │ │ ├── boxing_no.h │ │ ├── boxing_word.h │ │ ├── class.h │ │ ├── common.h │ │ ├── compile.h │ │ ├── data.h │ │ ├── debug.h │ │ ├── dump.h │ │ ├── error.h │ │ ├── gc.h │ │ ├── hash.h │ │ ├── irep.h │ │ ├── istruct.h │ │ ├── khash.h │ │ ├── numeric.h │ │ ├── object.h │ │ ├── opcode.h │ │ ├── ops.h │ │ ├── proc.h │ │ ├── range.h │ │ ├── re.h │ │ ├── string.h │ │ ├── throw.h │ │ ├── value.h │ │ ├── variable.h │ │ └── version.h │ ├── Info.plist │ └── MRuby └── tvos └── MRuby.framework ├── Headers ├── mrbconf.h ├── mruby.h └── mruby │ ├── array.h │ ├── boxing_nan.h │ ├── boxing_no.h │ ├── boxing_word.h │ ├── class.h │ ├── common.h │ ├── compile.h │ ├── data.h │ ├── debug.h │ ├── dump.h │ ├── error.h │ ├── gc.h │ ├── hash.h │ ├── irep.h │ ├── istruct.h │ ├── khash.h │ ├── numeric.h │ ├── object.h │ ├── opcode.h │ ├── ops.h │ ├── proc.h │ ├── range.h │ ├── re.h │ ├── string.h │ ├── throw.h │ ├── value.h │ ├── variable.h │ └── version.h ├── Info.plist └── MRuby /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "mruby"] 2 | path = mruby 3 | url = https://github.com/mruby/mruby.git 4 | -------------------------------------------------------------------------------- /Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | MRuby 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | FMWK 13 | CFBundleIdentifier 14 | MRuby.MRuby 15 | CFBundleExecutable 16 | MRuby 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MRuby iOS and tvOS frameworks 2 | 3 | Run `rake` to cross compile and build the frameworks. To update the MRuby submodule, use `rake mruby_latest` to set to the latest release and `rake mruby_master` to set the master branch. 4 | 5 | The prebuilt frameworks are located in `ios/` and `tvos/`, respectively. 6 | 7 | ⚠️ When using these frameworks in an Xcode project, make sure to add `"$(SRCROOT)/MRuby.framework/Headers"` to the "Header Search Paths" in the build settings. 8 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | mruby_version = '2.0.0' 2 | 3 | task default: 'build_mruby' 4 | 5 | desc 'Clean the project build files' 6 | task :clean do 7 | FileUtils.remove_dir 'ios/MRuby.framework', true 8 | FileUtils.remove_dir 'tvos/MRuby.framework', true 9 | FileUtils.remove_dir 'mruby/build', true 10 | end 11 | 12 | desc 'Build MRuby for iOS and tvOS' 13 | task :build_mruby => :clean do 14 | Dir.chdir('mruby') do 15 | ENV['MRUBY_CONFIG'] = '../build_config.rb' 16 | system 'rake' 17 | 18 | Dir.chdir('build') do 19 | FileUtils.mkdir_p 'ios-universal' 20 | `lipo ios/lib/libmruby.a ios-simulator/lib/libmruby.a -create -output ios-universal/libmruby.a` 21 | 22 | FileUtils.mkdir_p 'tvos-universal' 23 | `lipo tvos/lib/libmruby.a tvos-simulator/lib/libmruby.a -create -output tvos-universal/libmruby.a` 24 | end 25 | end 26 | 27 | FileUtils.mkdir_p 'ios/MRuby.framework/Headers' 28 | FileUtils.cp_r 'mruby/include/.', 'ios/MRuby.framework/Headers' 29 | FileUtils.cp 'Info.plist', 'ios/MRuby.framework' 30 | FileUtils.cp 'mruby/build/ios-universal/libmruby.a', 'ios/MRuby.framework/MRuby' 31 | 32 | FileUtils.mkdir_p 'tvos/MRuby.framework/Headers' 33 | FileUtils.cp_r 'mruby/include/.', 'tvos/MRuby.framework/Headers' 34 | FileUtils.cp 'Info.plist', 'tvos/MRuby.framework' 35 | FileUtils.cp 'mruby/build/tvos-universal/libmruby.a', 'tvos/MRuby.framework/MRuby' 36 | end 37 | 38 | desc 'Set MRuby submodule to latest release' 39 | task :mruby_latest do 40 | system 'git submodule update --remote && '\ 41 | 'cd mruby && '\ 42 | "git checkout tags/#{mruby_version}" 43 | end 44 | 45 | desc 'Set MRuby submodule to master branch' 46 | task :mruby_master do 47 | system 'git submodule update --remote && '\ 48 | 'cd mruby && '\ 49 | 'git checkout master && '\ 50 | 'git pull --rebase' 51 | end 52 | -------------------------------------------------------------------------------- /build_config.rb: -------------------------------------------------------------------------------- 1 | CC = `xcrun -find clang`.strip 2 | 3 | def sdk_path(device); `xcrun --sdk #{device} --show-sdk-path`.strip end 4 | IOS_FLAGS = %W(-Os -arch armv7 -arch arm64 -isysroot #{sdk_path 'iphoneos'}) 5 | IOSSIM_FLAGS = %W(-Os -arch i386 -arch x86_64 -isysroot #{sdk_path 'iphonesimulator'}) 6 | TVOS_FLAGS = %W(-Os -arch arm64 -isysroot #{sdk_path 'appletvos'}) 7 | TVOSSIM_FLAGS = %W(-Os -arch x86_64 -isysroot #{sdk_path 'appletvsimulator'}) 8 | 9 | 10 | MRuby::Build.new do |conf| 11 | toolchain :clang 12 | conf.gembox 'default' 13 | end 14 | 15 | MRuby::CrossBuild.new('ios') do |conf| 16 | conf.gembox 'default' 17 | 18 | conf.cc do |cc| 19 | cc.command = CC 20 | cc.flags = IOS_FLAGS 21 | end 22 | 23 | conf.linker do |linker| 24 | linker.command = CC 25 | linker.flags = IOS_FLAGS 26 | end 27 | end 28 | 29 | MRuby::CrossBuild.new('ios-simulator') do |conf| 30 | conf.gembox 'default' 31 | 32 | conf.cc do |cc| 33 | cc.command = CC 34 | cc.flags = IOSSIM_FLAGS 35 | end 36 | 37 | conf.linker do |linker| 38 | linker.command = CC 39 | linker.flags = IOSSIM_FLAGS 40 | end 41 | end 42 | 43 | MRuby::CrossBuild.new('tvos') do |conf| 44 | conf.gembox 'default' 45 | 46 | conf.cc do |cc| 47 | cc.command = CC 48 | cc.flags = TVOS_FLAGS 49 | end 50 | 51 | conf.linker do |linker| 52 | linker.command = CC 53 | linker.flags = TVOS_FLAGS 54 | end 55 | end 56 | 57 | MRuby::CrossBuild.new('tvos-simulator') do |conf| 58 | conf.gembox 'default' 59 | 60 | conf.cc do |cc| 61 | cc.command = CC 62 | cc.flags = TVOSSIM_FLAGS 63 | end 64 | 65 | conf.linker do |linker| 66 | linker.command = CC 67 | linker.flags = TVOSSIM_FLAGS 68 | end 69 | end 70 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mrbconf.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mrbconf.h - mruby core configuration 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBYCONF_H 8 | #define MRUBYCONF_H 9 | 10 | #include 11 | #include 12 | 13 | /* architecture selection: */ 14 | /* specify -DMRB_32BIT or -DMRB_64BIT to override */ 15 | #if !defined(MRB_32BIT) && !defined(MRB_64BIT) 16 | #if UINT64_MAX == SIZE_MAX 17 | #define MRB_64BIT 18 | #else 19 | #define MRB_32BIT 20 | #endif 21 | #endif 22 | 23 | #if defined(MRB_32BIT) && defined(MRB_64BIT) 24 | #error Cannot build for 32 and 64 bit architecture at the same time 25 | #endif 26 | 27 | /* configuration options: */ 28 | /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ 29 | //#define MRB_USE_FLOAT 30 | 31 | /* exclude floating point numbers */ 32 | //#define MRB_WITHOUT_FLOAT 33 | 34 | /* add -DMRB_METHOD_CACHE to use method cache to improve performance */ 35 | //#define MRB_METHOD_CACHE 36 | /* size of the method cache (need to be the power of 2) */ 37 | //#define MRB_METHOD_CACHE_SIZE (1<<7) 38 | 39 | /* add -DMRB_METHOD_TABLE_INLINE to reduce the size of method table */ 40 | /* MRB_METHOD_TABLE_INLINE requires LSB of function pointers to be zero */ 41 | /* you might need to specify --falign-functions=n (where n>1) */ 42 | //#define MRB_METHOD_TABLE_INLINE 43 | 44 | /* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT64 */ 45 | //#define MRB_INT16 46 | 47 | /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 */ 48 | //#define MRB_INT64 49 | 50 | /* if no specific integer type is chosen */ 51 | #if !defined(MRB_INT16) && !defined(MRB_INT32) && !defined(MRB_INT64) 52 | # if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING) 53 | /* Use 64bit integers on 64bit architecture (without MRB_NAN_BOXING) */ 54 | # define MRB_INT64 55 | # else 56 | /* Otherwise use 32bit integers */ 57 | # define MRB_INT32 58 | # endif 59 | #endif 60 | 61 | /* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT and MRB_WITHOUT_FLOAT */ 62 | //#define MRB_NAN_BOXING 63 | 64 | /* define on big endian machines; used by MRB_NAN_BOXING */ 65 | //#define MRB_ENDIAN_BIG 66 | 67 | /* represent mrb_value as a word (natural unit of data for the processor) */ 68 | //#define MRB_WORD_BOXING 69 | 70 | /* string class to handle UTF-8 encoding */ 71 | //#define MRB_UTF8_STRING 72 | 73 | /* argv max size in mrb_funcall */ 74 | //#define MRB_FUNCALL_ARGC_MAX 16 75 | 76 | /* number of object per heap page */ 77 | //#define MRB_HEAP_PAGE_SIZE 1024 78 | 79 | /* if _etext and _edata available, mruby can reduce memory used by symbols */ 80 | //#define MRB_USE_ETEXT_EDATA 81 | 82 | /* do not use __init_array_start to determine readonly data section; 83 | effective only when MRB_USE_ETEXT_EDATA is defined */ 84 | //#define MRB_NO_INIT_ARRAY_START 85 | 86 | /* turn off generational GC by default */ 87 | //#define MRB_GC_TURN_OFF_GENERATIONAL 88 | 89 | /* default size of khash table bucket */ 90 | //#define KHASH_DEFAULT_SIZE 32 91 | 92 | /* allocated memory address alignment */ 93 | //#define POOL_ALIGNMENT 4 94 | 95 | /* page size of memory pool */ 96 | //#define POOL_PAGE_SIZE 16000 97 | 98 | /* initial minimum size for string buffer */ 99 | //#define MRB_STR_BUF_MIN_SIZE 128 100 | 101 | /* arena size */ 102 | //#define MRB_GC_ARENA_SIZE 100 103 | 104 | /* fixed size GC arena */ 105 | //#define MRB_GC_FIXED_ARENA 106 | 107 | /* state atexit stack size */ 108 | //#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5 109 | 110 | /* fixed size state atexit stack */ 111 | //#define MRB_FIXED_STATE_ATEXIT_STACK 112 | 113 | /* -DMRB_DISABLE_XXXX to drop following features */ 114 | //#define MRB_DISABLE_STDIO /* use of stdio */ 115 | 116 | /* -DMRB_ENABLE_XXXX to enable following features */ 117 | //#define MRB_ENABLE_DEBUG_HOOK /* hooks for debugger */ 118 | 119 | /* end of configuration */ 120 | 121 | /* define MRB_DISABLE_XXXX from DISABLE_XXX (for compatibility) */ 122 | #ifdef DISABLE_STDIO 123 | #define MRB_DISABLE_STDIO 124 | #endif 125 | 126 | /* define MRB_ENABLE_XXXX from ENABLE_XXX (for compatibility) */ 127 | #ifdef ENABLE_DEBUG 128 | #define MRB_ENABLE_DEBUG_HOOK 129 | #endif 130 | 131 | #ifndef MRB_DISABLE_STDIO 132 | # include 133 | #endif 134 | 135 | #ifndef FALSE 136 | # define FALSE 0 137 | #endif 138 | 139 | #ifndef TRUE 140 | # define TRUE 1 141 | #endif 142 | 143 | #endif /* MRUBYCONF_H */ 144 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/array.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/array.h - Array class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ARRAY_H 8 | #define MRUBY_ARRAY_H 9 | 10 | #include "common.h" 11 | 12 | /* 13 | * Array class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | 18 | typedef struct mrb_shared_array { 19 | int refcnt; 20 | mrb_int len; 21 | mrb_value *ptr; 22 | } mrb_shared_array; 23 | 24 | #define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value))) 25 | struct RArray { 26 | MRB_OBJECT_HEADER; 27 | union { 28 | struct { 29 | mrb_int len; 30 | union { 31 | mrb_int capa; 32 | mrb_shared_array *shared; 33 | } aux; 34 | mrb_value *ptr; 35 | } heap; 36 | mrb_value embed[MRB_ARY_EMBED_LEN_MAX]; 37 | } as; 38 | }; 39 | 40 | #define mrb_ary_ptr(v) ((struct RArray*)(mrb_ptr(v))) 41 | #define mrb_ary_value(p) mrb_obj_value((void*)(p)) 42 | #define RARRAY(v) ((struct RArray*)(mrb_ptr(v))) 43 | 44 | #define MRB_ARY_EMBED_MASK 7 45 | #define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK) 46 | #define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED_MASK)) 47 | #define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1)) 48 | #define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1)) 49 | #define ARY_EMBED_PTR(a) (&((a)->as.embed[0])) 50 | 51 | #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(a)->as.heap.len) 52 | #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr) 53 | #define RARRAY_LEN(a) ARY_LEN(RARRAY(a)) 54 | #define RARRAY_PTR(a) ARY_PTR(RARRAY(a)) 55 | #define ARY_SET_LEN(a,n) do {\ 56 | if (ARY_EMBED_P(a)) {\ 57 | mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \ 58 | ARY_SET_EMBED_LEN(a,n);\ 59 | }\ 60 | else\ 61 | (a)->as.heap.len = (n);\ 62 | } while (0) 63 | #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa) 64 | #define MRB_ARY_SHARED 256 65 | #define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED) 66 | #define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED) 67 | #define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED) 68 | 69 | void mrb_ary_decref(mrb_state*, mrb_shared_array*); 70 | MRB_API void mrb_ary_modify(mrb_state*, struct RArray*); 71 | MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int); 72 | 73 | /* 74 | * Initializes a new array. 75 | * 76 | * Equivalent to: 77 | * 78 | * Array.new 79 | * 80 | * @param mrb The mruby state reference. 81 | * @return The initialized array. 82 | */ 83 | MRB_API mrb_value mrb_ary_new(mrb_state *mrb); 84 | 85 | /* 86 | * Initializes a new array with initial values 87 | * 88 | * Equivalent to: 89 | * 90 | * Array[value1, value2, ...] 91 | * 92 | * @param mrb The mruby state reference. 93 | * @param size The numer of values. 94 | * @param vals The actual values. 95 | * @return The initialized array. 96 | */ 97 | MRB_API mrb_value mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals); 98 | 99 | /* 100 | * Initializes a new array with two initial values 101 | * 102 | * Equivalent to: 103 | * 104 | * Array[car, cdr] 105 | * 106 | * @param mrb The mruby state reference. 107 | * @param car The first value. 108 | * @param cdr The second value. 109 | * @return The initialized array. 110 | */ 111 | MRB_API mrb_value mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr); 112 | 113 | /* 114 | * Concatenate two arrays. The target array will be modified 115 | * 116 | * Equivalent to: 117 | * ary.concat(other) 118 | * 119 | * @param mrb The mruby state reference. 120 | * @param self The target array. 121 | * @param other The array that will be concatenated to self. 122 | */ 123 | MRB_API void mrb_ary_concat(mrb_state *mrb, mrb_value self, mrb_value other); 124 | 125 | /* 126 | * Create an array from the input. It tries calling to_a on the 127 | * value. If value does not respond to that, it creates a new 128 | * array with just this value. 129 | * 130 | * @param mrb The mruby state reference. 131 | * @param value The value to change into an array. 132 | * @return An array representation of value. 133 | */ 134 | MRB_API mrb_value mrb_ary_splat(mrb_state *mrb, mrb_value value); 135 | 136 | /* 137 | * Pushes value into array. 138 | * 139 | * Equivalent to: 140 | * 141 | * ary << value 142 | * 143 | * @param mrb The mruby state reference. 144 | * @param ary The array in which the value will be pushed 145 | * @param value The value to be pushed into array 146 | */ 147 | MRB_API void mrb_ary_push(mrb_state *mrb, mrb_value array, mrb_value value); 148 | 149 | /* 150 | * Pops the last element from the array. 151 | * 152 | * Equivalent to: 153 | * 154 | * ary.pop 155 | * 156 | * @param mrb The mruby state reference. 157 | * @param ary The array from which the value will be popped. 158 | * @return The popped value. 159 | */ 160 | MRB_API mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary); 161 | 162 | /* 163 | * Returns a reference to an element of the array on the given index. 164 | * 165 | * Equivalent to: 166 | * 167 | * ary[n] 168 | * 169 | * @param mrb The mruby state reference. 170 | * @param ary The target array. 171 | * @param n The array index being referenced 172 | * @return The referenced value. 173 | */ 174 | MRB_API mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n); 175 | 176 | /* 177 | * Sets a value on an array at the given index 178 | * 179 | * Equivalent to: 180 | * 181 | * ary[n] = val 182 | * 183 | * @param mrb The mruby state reference. 184 | * @param ary The target array. 185 | * @param n The array index being referenced. 186 | * @param val The value being setted. 187 | */ 188 | MRB_API void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val); 189 | 190 | /* 191 | * Replace the array with another array 192 | * 193 | * Equivalent to: 194 | * 195 | * ary.replace(other) 196 | * 197 | * @param mrb The mruby state reference 198 | * @param self The target array. 199 | * @param other The array to replace it with. 200 | */ 201 | MRB_API void mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other); 202 | MRB_API mrb_value mrb_ensure_array_type(mrb_state *mrb, mrb_value self); 203 | MRB_API mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self); 204 | 205 | /* 206 | * Unshift an element into the array 207 | * 208 | * Equivalent to: 209 | * 210 | * ary.unshift(item) 211 | * 212 | * @param mrb The mruby state reference. 213 | * @param self The target array. 214 | * @param item The item to unshift. 215 | */ 216 | MRB_API mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item); 217 | 218 | /* 219 | * Get nth element in the array 220 | * 221 | * Equivalent to: 222 | * 223 | * ary[offset] 224 | * 225 | * @param ary The target array. 226 | * @param offset The element position (negative counts from the tail). 227 | */ 228 | MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset); 229 | 230 | /* 231 | * Shifts the first element from the array. 232 | * 233 | * Equivalent to: 234 | * 235 | * ary.shift 236 | * 237 | * @param mrb The mruby state reference. 238 | * @param self The array from which the value will be shifted. 239 | * @return The shifted value. 240 | */ 241 | MRB_API mrb_value mrb_ary_shift(mrb_state *mrb, mrb_value self); 242 | 243 | /* 244 | * Removes all elements from the array 245 | * 246 | * Equivalent to: 247 | * 248 | * ary.clear 249 | * 250 | * @param mrb The mruby state reference. 251 | * @param self The target array. 252 | * @return self 253 | */ 254 | MRB_API mrb_value mrb_ary_clear(mrb_state *mrb, mrb_value self); 255 | 256 | /* 257 | * Join the array elements together in a string 258 | * 259 | * Equivalent to: 260 | * 261 | * ary.join(sep="") 262 | * 263 | * @param mrb The mruby state reference. 264 | * @param ary The target array 265 | * @param sep The separater, can be NULL 266 | */ 267 | MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep); 268 | 269 | /* 270 | * Update the capacity of the array 271 | * 272 | * @param mrb The mruby state reference. 273 | * @param ary The target array. 274 | * @param new_len The new capacity of the array 275 | */ 276 | MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len); 277 | 278 | MRB_END_DECL 279 | 280 | #endif /* MRUBY_ARRAY_H */ 281 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/boxing_nan.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_nan.h - nan boxing mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_NAN_H 8 | #define MRUBY_BOXING_NAN_H 9 | 10 | #ifdef MRB_USE_FLOAT 11 | # error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT conflict <<---- 12 | #endif 13 | 14 | #ifdef MRB_WITHOUT_FLOAT 15 | # error ---->> MRB_NAN_BOXING and MRB_WITHOUT_FLOAT conflict <<---- 16 | #endif 17 | 18 | #ifdef MRB_INT64 19 | # error ---->> MRB_NAN_BOXING and MRB_INT64 conflict <<---- 20 | #endif 21 | 22 | #define MRB_FIXNUM_SHIFT 0 23 | #define MRB_TT_HAS_BASIC MRB_TT_OBJECT 24 | 25 | #ifdef MRB_ENDIAN_BIG 26 | #define MRB_ENDIAN_LOHI(a,b) a b 27 | #else 28 | #define MRB_ENDIAN_LOHI(a,b) b a 29 | #endif 30 | 31 | /* value representation by nan-boxing: 32 | * float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 33 | * object: 111111111111TTTT TTPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP 34 | * int : 1111111111110001 0000000000000000 IIIIIIIIIIIIIIII IIIIIIIIIIIIIIII 35 | * sym : 1111111111110001 0100000000000000 SSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSS 36 | * In order to get enough bit size to save TT, all pointers are shifted 2 bits 37 | * in the right direction. Also, TTTTTT is the mrb_vtype + 1; 38 | */ 39 | typedef struct mrb_value { 40 | union { 41 | mrb_float f; 42 | union { 43 | void *p; 44 | struct { 45 | MRB_ENDIAN_LOHI( 46 | uint32_t ttt; 47 | ,union { 48 | mrb_int i; 49 | mrb_sym sym; 50 | }; 51 | ) 52 | }; 53 | } value; 54 | }; 55 | } mrb_value; 56 | 57 | #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) 58 | 59 | #define mrb_tt(o) ((enum mrb_vtype)(((o).value.ttt & 0xfc000)>>14)-1) 60 | #define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT) 61 | #define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)((o).value.p)))<<2)) 62 | #define mrb_float(o) (o).f 63 | #define mrb_cptr(o) mrb_ptr(o) 64 | #define mrb_fixnum(o) (o).value.i 65 | #define mrb_symbol(o) (o).value.sym 66 | 67 | #ifdef MRB_64BIT 68 | #define BOXNAN_SHIFT_LONG_POINTER(v) (((uintptr_t)(v)>>34)&0x3fff) 69 | #else 70 | #define BOXNAN_SHIFT_LONG_POINTER(v) 0 71 | #endif 72 | 73 | #define BOXNAN_SET_VALUE(o, tt, attr, v) do {\ 74 | (o).attr = (v);\ 75 | (o).value.ttt = 0xfff00000 | (((tt)+1)<<14);\ 76 | } while (0) 77 | 78 | #define BOXNAN_SET_OBJ_VALUE(o, tt, v) do {\ 79 | (o).value.p = (void*)((uintptr_t)(v)>>2);\ 80 | (o).value.ttt = (0xfff00000|(((tt)+1)<<14)|BOXNAN_SHIFT_LONG_POINTER(v));\ 81 | } while (0) 82 | 83 | #define SET_FLOAT_VALUE(mrb,r,v) do { \ 84 | if (v != v) { \ 85 | (r).value.ttt = 0x7ff80000; \ 86 | (r).value.i = 0; \ 87 | } \ 88 | else { \ 89 | (r).f = v; \ 90 | }} while(0) 91 | 92 | #define SET_NIL_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 93 | #define SET_FALSE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 94 | #define SET_TRUE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 95 | #define SET_BOOL_VALUE(r,b) BOXNAN_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 96 | #define SET_INT_VALUE(r,n) BOXNAN_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 97 | #define SET_SYM_VALUE(r,v) BOXNAN_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 98 | #define SET_OBJ_VALUE(r,v) BOXNAN_SET_OBJ_VALUE(r, (((struct RObject*)(v))->tt), (v)) 99 | #define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_OBJ_VALUE(r, MRB_TT_CPTR, v) 100 | #define SET_UNDEF_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 101 | 102 | #endif /* MRUBY_BOXING_NAN_H */ 103 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/boxing_no.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_no.h - unboxed mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_NO_H 8 | #define MRUBY_BOXING_NO_H 9 | 10 | #define MRB_FIXNUM_SHIFT 0 11 | #define MRB_TT_HAS_BASIC MRB_TT_OBJECT 12 | 13 | typedef struct mrb_value { 14 | union { 15 | #ifndef MRB_WITHOUT_FLOAT 16 | mrb_float f; 17 | #endif 18 | void *p; 19 | mrb_int i; 20 | mrb_sym sym; 21 | } value; 22 | enum mrb_vtype tt; 23 | } mrb_value; 24 | 25 | #ifndef MRB_WITHOUT_FLOAT 26 | #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) 27 | #endif 28 | 29 | #define mrb_ptr(o) (o).value.p 30 | #define mrb_cptr(o) mrb_ptr(o) 31 | #ifndef MRB_WITHOUT_FLOAT 32 | #define mrb_float(o) (o).value.f 33 | #endif 34 | #define mrb_fixnum(o) (o).value.i 35 | #define mrb_symbol(o) (o).value.sym 36 | #define mrb_type(o) (o).tt 37 | 38 | #define BOXNIX_SET_VALUE(o, ttt, attr, v) do {\ 39 | (o).tt = ttt;\ 40 | (o).attr = v;\ 41 | } while (0) 42 | 43 | #define SET_NIL_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 44 | #define SET_FALSE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 45 | #define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 46 | #define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 47 | #define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 48 | #ifndef MRB_WITHOUT_FLOAT 49 | #define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v)) 50 | #endif 51 | #define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 52 | #define SET_OBJ_VALUE(r,v) BOXNIX_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v)) 53 | #define SET_CPTR_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_CPTR, value.p, v) 54 | #define SET_UNDEF_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 55 | 56 | #endif /* MRUBY_BOXING_NO_H */ 57 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/boxing_word.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_word.h - word boxing mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_WORD_H 8 | #define MRUBY_BOXING_WORD_H 9 | 10 | #if defined(MRB_INT16) 11 | # error MRB_INT16 is too small for MRB_WORD_BOXING. 12 | #endif 13 | 14 | #if defined(MRB_INT64) && !defined(MRB_64BIT) 15 | #error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode. 16 | #endif 17 | 18 | #ifndef MRB_WITHOUT_FLOAT 19 | struct RFloat { 20 | MRB_OBJECT_HEADER; 21 | mrb_float f; 22 | }; 23 | #endif 24 | 25 | struct RCptr { 26 | MRB_OBJECT_HEADER; 27 | void *p; 28 | }; 29 | 30 | #define MRB_FIXNUM_SHIFT 1 31 | #ifdef MRB_WITHOUT_FLOAT 32 | #define MRB_TT_HAS_BASIC MRB_TT_CPTR 33 | #else 34 | #define MRB_TT_HAS_BASIC MRB_TT_FLOAT 35 | #endif 36 | 37 | enum mrb_special_consts { 38 | MRB_Qnil = 0, 39 | MRB_Qfalse = 2, 40 | MRB_Qtrue = 4, 41 | MRB_Qundef = 6, 42 | }; 43 | 44 | #define MRB_FIXNUM_FLAG 0x01 45 | #define MRB_SYMBOL_FLAG 0x0e 46 | #define MRB_SPECIAL_SHIFT 8 47 | 48 | #if defined(MRB_64BIT) 49 | #define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT) 50 | #define MRB_SYMBOL_MAX UINT32_MAX 51 | #else 52 | #define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT - MRB_SPECIAL_SHIFT) 53 | #define MRB_SYMBOL_MAX (UINT32_MAX >> MRB_SPECIAL_SHIFT) 54 | #endif 55 | 56 | typedef union mrb_value { 57 | union { 58 | void *p; 59 | struct { 60 | unsigned int i_flag : MRB_FIXNUM_SHIFT; 61 | mrb_int i : (MRB_INT_BIT - MRB_FIXNUM_SHIFT); 62 | }; 63 | struct { 64 | unsigned int sym_flag : MRB_SPECIAL_SHIFT; 65 | mrb_sym sym : MRB_SYMBOL_BITSIZE; 66 | }; 67 | struct RBasic *bp; 68 | #ifndef MRB_WITHOUT_FLOAT 69 | struct RFloat *fp; 70 | #endif 71 | struct RCptr *vp; 72 | } value; 73 | unsigned long w; 74 | } mrb_value; 75 | 76 | MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*); 77 | #ifndef MRB_WITHOUT_FLOAT 78 | MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); 79 | MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float); 80 | #endif 81 | 82 | #ifndef MRB_WITHOUT_FLOAT 83 | #define mrb_float_pool(mrb,f) mrb_word_boxing_float_pool(mrb,f) 84 | #endif 85 | 86 | #define mrb_ptr(o) (o).value.p 87 | #define mrb_cptr(o) (o).value.vp->p 88 | #ifndef MRB_WITHOUT_FLOAT 89 | #define mrb_float(o) (o).value.fp->f 90 | #endif 91 | #define mrb_fixnum(o) ((mrb_int)(o).value.i) 92 | #define mrb_symbol(o) (o).value.sym 93 | 94 | static inline enum mrb_vtype 95 | mrb_type(mrb_value o) 96 | { 97 | switch (o.w) { 98 | case MRB_Qfalse: 99 | case MRB_Qnil: 100 | return MRB_TT_FALSE; 101 | case MRB_Qtrue: 102 | return MRB_TT_TRUE; 103 | case MRB_Qundef: 104 | return MRB_TT_UNDEF; 105 | } 106 | if (o.value.i_flag == MRB_FIXNUM_FLAG) { 107 | return MRB_TT_FIXNUM; 108 | } 109 | if (o.value.sym_flag == MRB_SYMBOL_FLAG) { 110 | return MRB_TT_SYMBOL; 111 | } 112 | return o.value.bp->tt; 113 | } 114 | 115 | #define mrb_bool(o) ((o).w != MRB_Qnil && (o).w != MRB_Qfalse) 116 | #define mrb_fixnum_p(o) ((o).value.i_flag == MRB_FIXNUM_FLAG) 117 | #define mrb_undef_p(o) ((o).w == MRB_Qundef) 118 | #define mrb_nil_p(o) ((o).w == MRB_Qnil) 119 | 120 | #define BOXWORD_SET_VALUE(o, ttt, attr, v) do { \ 121 | switch (ttt) {\ 122 | case MRB_TT_FALSE: (o).w = (v) ? MRB_Qfalse : MRB_Qnil; break;\ 123 | case MRB_TT_TRUE: (o).w = MRB_Qtrue; break;\ 124 | case MRB_TT_UNDEF: (o).w = MRB_Qundef; break;\ 125 | case MRB_TT_FIXNUM: (o).w = 0;(o).value.i_flag = MRB_FIXNUM_FLAG; (o).attr = (v); break;\ 126 | case MRB_TT_SYMBOL: (o).w = 0;(o).value.sym_flag = MRB_SYMBOL_FLAG; (o).attr = (v); break;\ 127 | default: (o).w = 0; (o).attr = (v); if ((o).value.bp) (o).value.bp->tt = ttt; break;\ 128 | }\ 129 | } while (0) 130 | 131 | #ifndef MRB_WITHOUT_FLOAT 132 | #define SET_FLOAT_VALUE(mrb,r,v) r = mrb_word_boxing_float_value(mrb, v) 133 | #endif 134 | #define SET_CPTR_VALUE(mrb,r,v) r = mrb_word_boxing_cptr_value(mrb, v) 135 | #define SET_NIL_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 136 | #define SET_FALSE_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 137 | #define SET_TRUE_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 138 | #define SET_BOOL_VALUE(r,b) BOXWORD_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 139 | #define SET_INT_VALUE(r,n) BOXWORD_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 140 | #define SET_SYM_VALUE(r,v) BOXWORD_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 141 | #define SET_OBJ_VALUE(r,v) BOXWORD_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v)) 142 | #define SET_UNDEF_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 143 | 144 | #endif /* MRUBY_BOXING_WORD_H */ 145 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/class.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/class.h - Class class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_CLASS_H 8 | #define MRUBY_CLASS_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Class class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | struct RClass { 18 | MRB_OBJECT_HEADER; 19 | struct iv_tbl *iv; 20 | struct kh_mt *mt; 21 | struct RClass *super; 22 | }; 23 | 24 | #define mrb_class_ptr(v) ((struct RClass*)(mrb_ptr(v))) 25 | 26 | static inline struct RClass* 27 | mrb_class(mrb_state *mrb, mrb_value v) 28 | { 29 | switch (mrb_type(v)) { 30 | case MRB_TT_FALSE: 31 | if (mrb_fixnum(v)) 32 | return mrb->false_class; 33 | return mrb->nil_class; 34 | case MRB_TT_TRUE: 35 | return mrb->true_class; 36 | case MRB_TT_SYMBOL: 37 | return mrb->symbol_class; 38 | case MRB_TT_FIXNUM: 39 | return mrb->fixnum_class; 40 | #ifndef MRB_WITHOUT_FLOAT 41 | case MRB_TT_FLOAT: 42 | return mrb->float_class; 43 | #endif 44 | case MRB_TT_CPTR: 45 | return mrb->object_class; 46 | case MRB_TT_ENV: 47 | return NULL; 48 | default: 49 | return mrb_obj_ptr(v)->c; 50 | } 51 | } 52 | 53 | /* flags: 54 | 20: frozen 55 | 19: is_prepended 56 | 18: is_origin 57 | 17: is_inherited (used by method cache) 58 | 16: unused 59 | 0-15: instance type 60 | */ 61 | #define MRB_FL_CLASS_IS_PREPENDED (1 << 19) 62 | #define MRB_FL_CLASS_IS_ORIGIN (1 << 18) 63 | #define MRB_CLASS_ORIGIN(c) do {\ 64 | if (c->flags & MRB_FL_CLASS_IS_PREPENDED) {\ 65 | c = c->super;\ 66 | while (!(c->flags & MRB_FL_CLASS_IS_ORIGIN)) {\ 67 | c = c->super;\ 68 | }\ 69 | }\ 70 | } while (0) 71 | #define MRB_FL_CLASS_IS_INHERITED (1 << 17) 72 | #define MRB_INSTANCE_TT_MASK (0xFF) 73 | #define MRB_SET_INSTANCE_TT(c, tt) c->flags = ((c->flags & ~MRB_INSTANCE_TT_MASK) | (char)tt) 74 | #define MRB_INSTANCE_TT(c) (enum mrb_vtype)(c->flags & MRB_INSTANCE_TT_MASK) 75 | 76 | MRB_API struct RClass* mrb_define_class_id(mrb_state*, mrb_sym, struct RClass*); 77 | MRB_API struct RClass* mrb_define_module_id(mrb_state*, mrb_sym); 78 | MRB_API struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym); 79 | MRB_API struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym); 80 | MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t); 81 | MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec); 82 | MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b); 83 | 84 | MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym); 85 | MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym); 86 | 87 | MRB_API struct RClass* mrb_class_real(struct RClass* cl); 88 | 89 | void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym); 90 | mrb_value mrb_class_find_path(mrb_state*, struct RClass*); 91 | void mrb_gc_mark_mt(mrb_state*, struct RClass*); 92 | size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*); 93 | void mrb_gc_free_mt(mrb_state*, struct RClass*); 94 | 95 | MRB_END_DECL 96 | 97 | #endif /* MRUBY_CLASS_H */ 98 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | **"common.h - mruby common platform definition" 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_COMMON_H 8 | #define MRUBY_COMMON_H 9 | 10 | #ifdef __APPLE__ 11 | #ifndef __TARGETCONDITIONALS__ 12 | #include "TargetConditionals.h" 13 | #endif 14 | #endif 15 | 16 | #ifdef __cplusplus 17 | #ifdef MRB_ENABLE_CXX_ABI 18 | #define MRB_BEGIN_DECL 19 | #define MRB_END_DECL 20 | #else 21 | # define MRB_BEGIN_DECL extern "C" { 22 | # define MRB_END_DECL } 23 | #endif 24 | #else 25 | /** Start declarations in C mode */ 26 | # define MRB_BEGIN_DECL 27 | /** End declarations in C mode */ 28 | # define MRB_END_DECL 29 | #endif 30 | 31 | /** 32 | * Shared compiler macros 33 | */ 34 | MRB_BEGIN_DECL 35 | 36 | /** Declare a function that never returns. */ 37 | #if __STDC_VERSION__ >= 201112L 38 | # define mrb_noreturn _Noreturn 39 | #elif defined __GNUC__ && !defined __STRICT_ANSI__ 40 | # define mrb_noreturn __attribute__((noreturn)) 41 | #elif defined _MSC_VER 42 | # define mrb_noreturn __declspec(noreturn) 43 | #else 44 | # define mrb_noreturn 45 | #endif 46 | 47 | /** Mark a function as deprecated. */ 48 | #if defined __GNUC__ && !defined __STRICT_ANSI__ 49 | # define mrb_deprecated __attribute__((deprecated)) 50 | #elif defined _MSC_VER 51 | # define mrb_deprecated __declspec(deprecated) 52 | #else 53 | # define mrb_deprecated 54 | #endif 55 | 56 | /** Declare a function as always inlined. */ 57 | #if defined(_MSC_VER) 58 | # define MRB_INLINE static __inline 59 | #else 60 | # define MRB_INLINE static inline 61 | #endif 62 | 63 | 64 | /** Declare a public MRuby API function. */ 65 | #if defined(MRB_BUILD_AS_DLL) 66 | #if defined(MRB_CORE) || defined(MRB_LIB) 67 | # define MRB_API __declspec(dllexport) 68 | #else 69 | # define MRB_API __declspec(dllimport) 70 | #endif 71 | #else 72 | # define MRB_API extern 73 | #endif 74 | 75 | MRB_END_DECL 76 | 77 | #endif /* MRUBY_COMMON_H */ 78 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/compile.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/compile.h - mruby parser 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_COMPILE_H 8 | #define MRUBY_COMPILE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Compiler 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | #include 18 | 19 | struct mrb_jmpbuf; 20 | 21 | struct mrb_parser_state; 22 | /* load context */ 23 | typedef struct mrbc_context { 24 | mrb_sym *syms; 25 | int slen; 26 | char *filename; 27 | short lineno; 28 | int (*partial_hook)(struct mrb_parser_state*); 29 | void *partial_data; 30 | struct RClass *target_class; 31 | mrb_bool capture_errors:1; 32 | mrb_bool dump_result:1; 33 | mrb_bool no_exec:1; 34 | mrb_bool keep_lv:1; 35 | mrb_bool no_optimize:1; 36 | mrb_bool on_eval:1; 37 | 38 | size_t parser_nerr; 39 | } mrbc_context; 40 | 41 | MRB_API mrbc_context* mrbc_context_new(mrb_state *mrb); 42 | MRB_API void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt); 43 | MRB_API const char *mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s); 44 | MRB_API void mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*partial_hook)(struct mrb_parser_state*), void*data); 45 | 46 | /* AST node structure */ 47 | typedef struct mrb_ast_node { 48 | struct mrb_ast_node *car, *cdr; 49 | uint16_t lineno, filename_index; 50 | } mrb_ast_node; 51 | 52 | /* lexer states */ 53 | enum mrb_lex_state_enum { 54 | EXPR_BEG, /* ignore newline, +/- is a sign. */ 55 | EXPR_END, /* newline significant, +/- is an operator. */ 56 | EXPR_ENDARG, /* ditto, and unbound braces. */ 57 | EXPR_ENDFN, /* ditto, and unbound braces. */ 58 | EXPR_ARG, /* newline significant, +/- is an operator. */ 59 | EXPR_CMDARG, /* newline significant, +/- is an operator. */ 60 | EXPR_MID, /* newline significant, +/- is an operator. */ 61 | EXPR_FNAME, /* ignore newline, no reserved words. */ 62 | EXPR_DOT, /* right after '.' or '::', no reserved words. */ 63 | EXPR_CLASS, /* immediate after 'class', no here document. */ 64 | EXPR_VALUE, /* alike EXPR_BEG but label is disallowed. */ 65 | EXPR_MAX_STATE 66 | }; 67 | 68 | /* saved error message */ 69 | struct mrb_parser_message { 70 | int lineno; 71 | int column; 72 | char* message; 73 | }; 74 | 75 | #define STR_FUNC_PARSING 0x01 76 | #define STR_FUNC_EXPAND 0x02 77 | #define STR_FUNC_REGEXP 0x04 78 | #define STR_FUNC_WORD 0x08 79 | #define STR_FUNC_SYMBOL 0x10 80 | #define STR_FUNC_ARRAY 0x20 81 | #define STR_FUNC_HEREDOC 0x40 82 | #define STR_FUNC_XQUOTE 0x80 83 | 84 | enum mrb_string_type { 85 | str_not_parsing = (0), 86 | str_squote = (STR_FUNC_PARSING), 87 | str_dquote = (STR_FUNC_PARSING|STR_FUNC_EXPAND), 88 | str_regexp = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND), 89 | str_sword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY), 90 | str_dword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND), 91 | str_ssym = (STR_FUNC_PARSING|STR_FUNC_SYMBOL), 92 | str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY), 93 | str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND), 94 | str_heredoc = (STR_FUNC_PARSING|STR_FUNC_HEREDOC), 95 | str_xquote = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND), 96 | }; 97 | 98 | /* heredoc structure */ 99 | struct mrb_parser_heredoc_info { 100 | mrb_bool allow_indent:1; 101 | mrb_bool line_head:1; 102 | enum mrb_string_type type; 103 | const char *term; 104 | int term_len; 105 | mrb_ast_node *doc; 106 | }; 107 | 108 | #define MRB_PARSER_TOKBUF_MAX 65536 109 | #define MRB_PARSER_TOKBUF_SIZE 256 110 | 111 | /* parser structure */ 112 | struct mrb_parser_state { 113 | mrb_state *mrb; 114 | struct mrb_pool *pool; 115 | mrb_ast_node *cells; 116 | const char *s, *send; 117 | #ifndef MRB_DISABLE_STDIO 118 | FILE *f; 119 | #endif 120 | mrbc_context *cxt; 121 | char const *filename; 122 | int lineno; 123 | int column; 124 | 125 | enum mrb_lex_state_enum lstate; 126 | mrb_ast_node *lex_strterm; /* (type nest_level beg . end) */ 127 | 128 | unsigned int cond_stack; 129 | unsigned int cmdarg_stack; 130 | int paren_nest; 131 | int lpar_beg; 132 | int in_def, in_single; 133 | mrb_bool cmd_start:1; 134 | mrb_ast_node *locals; 135 | 136 | mrb_ast_node *pb; 137 | char *tokbuf; 138 | char buf[MRB_PARSER_TOKBUF_SIZE]; 139 | int tidx; 140 | int tsiz; 141 | 142 | mrb_ast_node *all_heredocs; /* list of mrb_parser_heredoc_info* */ 143 | mrb_ast_node *heredocs_from_nextline; 144 | mrb_ast_node *parsing_heredoc; 145 | mrb_ast_node *lex_strterm_before_heredoc; 146 | 147 | void *ylval; 148 | 149 | size_t nerr; 150 | size_t nwarn; 151 | mrb_ast_node *tree; 152 | 153 | mrb_bool no_optimize:1; 154 | mrb_bool on_eval:1; 155 | mrb_bool capture_errors:1; 156 | struct mrb_parser_message error_buffer[10]; 157 | struct mrb_parser_message warn_buffer[10]; 158 | 159 | mrb_sym* filename_table; 160 | uint16_t filename_table_length; 161 | uint16_t current_filename_index; 162 | 163 | struct mrb_jmpbuf* jmp; 164 | }; 165 | 166 | MRB_API struct mrb_parser_state* mrb_parser_new(mrb_state*); 167 | MRB_API void mrb_parser_free(struct mrb_parser_state*); 168 | MRB_API void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*); 169 | 170 | MRB_API void mrb_parser_set_filename(struct mrb_parser_state*, char const*); 171 | MRB_API char const* mrb_parser_get_filename(struct mrb_parser_state*, uint16_t idx); 172 | 173 | /* utility functions */ 174 | #ifndef MRB_DISABLE_STDIO 175 | MRB_API struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*); 176 | #endif 177 | MRB_API struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*); 178 | MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t,mrbc_context*); 179 | MRB_API struct RProc* mrb_generate_code(mrb_state*, struct mrb_parser_state*); 180 | MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c); 181 | 182 | /* program load functions */ 183 | #ifndef MRB_DISABLE_STDIO 184 | MRB_API mrb_value mrb_load_file(mrb_state*,FILE*); 185 | MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt); 186 | #endif 187 | MRB_API mrb_value mrb_load_string(mrb_state *mrb, const char *s); 188 | MRB_API mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, size_t len); 189 | MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt); 190 | MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrbc_context *cxt); 191 | 192 | /** @} */ 193 | MRB_END_DECL 194 | 195 | #endif /* MRUBY_COMPILE_H */ 196 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/data.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/data.h - Data class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DATA_H 8 | #define MRUBY_DATA_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Custom C wrapped data. 14 | * 15 | * Defining Ruby wrappers around native objects. 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | /** 20 | * Custom data type description. 21 | */ 22 | typedef struct mrb_data_type { 23 | /** data type name */ 24 | const char *struct_name; 25 | 26 | /** data type release function pointer */ 27 | void (*dfree)(mrb_state *mrb, void*); 28 | } mrb_data_type; 29 | 30 | struct RData { 31 | MRB_OBJECT_HEADER; 32 | struct iv_tbl *iv; 33 | const mrb_data_type *type; 34 | void *data; 35 | }; 36 | 37 | MRB_API struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *datap, const mrb_data_type *type); 38 | 39 | #define Data_Wrap_Struct(mrb,klass,type,ptr)\ 40 | mrb_data_object_alloc(mrb,klass,ptr,type) 41 | 42 | #define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \ 43 | sval = mrb_malloc(mrb, sizeof(strct)); \ 44 | { static const strct zero = { 0 }; *sval = zero; };\ 45 | data = Data_Wrap_Struct(mrb,klass,type,sval);\ 46 | } while (0) 47 | 48 | #define RDATA(obj) ((struct RData *)(mrb_ptr(obj))) 49 | #define DATA_PTR(d) (RDATA(d)->data) 50 | #define DATA_TYPE(d) (RDATA(d)->type) 51 | MRB_API void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*); 52 | MRB_API void *mrb_data_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*); 53 | #define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype) 54 | MRB_API void *mrb_data_check_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*); 55 | #define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype) 56 | 57 | /* obsolete functions and macros */ 58 | #define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype) 59 | #define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 60 | #define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 61 | #define Data_Get_Struct(mrb,obj,type,sval) do {\ 62 | *(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \ 63 | } while (0) 64 | 65 | static inline void 66 | mrb_data_init(mrb_value v, void *ptr, const mrb_data_type *type) 67 | { 68 | mrb_assert(mrb_type(v) == MRB_TT_DATA); 69 | DATA_PTR(v) = ptr; 70 | DATA_TYPE(v) = type; 71 | } 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_DATA_H */ 76 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/debug.h - mruby debug info 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DEBUG_H 8 | #define MRUBY_DEBUG_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Debugging. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef enum mrb_debug_line_type { 18 | mrb_debug_line_ary = 0, 19 | mrb_debug_line_flat_map = 1 20 | } mrb_debug_line_type; 21 | 22 | typedef struct mrb_irep_debug_info_line { 23 | uint32_t start_pos; 24 | uint16_t line; 25 | } mrb_irep_debug_info_line; 26 | 27 | typedef struct mrb_irep_debug_info_file { 28 | uint32_t start_pos; 29 | const char *filename; 30 | mrb_sym filename_sym; 31 | uint32_t line_entry_count; 32 | mrb_debug_line_type line_type; 33 | union { 34 | void *ptr; 35 | mrb_irep_debug_info_line *flat_map; 36 | uint16_t *ary; 37 | } lines; 38 | } mrb_irep_debug_info_file; 39 | 40 | typedef struct mrb_irep_debug_info { 41 | uint32_t pc_count; 42 | uint16_t flen; 43 | mrb_irep_debug_info_file **files; 44 | } mrb_irep_debug_info; 45 | 46 | /* 47 | * get line from irep's debug info and program counter 48 | * @return returns NULL if not found 49 | */ 50 | MRB_API const char *mrb_debug_get_filename(mrb_irep *irep, ptrdiff_t pc); 51 | 52 | /* 53 | * get line from irep's debug info and program counter 54 | * @return returns -1 if not found 55 | */ 56 | MRB_API int32_t mrb_debug_get_line(mrb_irep *irep, ptrdiff_t pc); 57 | 58 | MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep); 59 | MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file( 60 | mrb_state *mrb, mrb_irep_debug_info *info, 61 | const char *filename, uint16_t *lines, 62 | uint32_t start_pos, uint32_t end_pos); 63 | MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d); 64 | 65 | MRB_END_DECL 66 | 67 | #endif /* MRUBY_DEBUG_H */ 68 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/dump.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/dump.h - mruby binary dumper (mrbc binary format) 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DUMP_H 8 | #define MRUBY_DUMP_H 9 | 10 | #include 11 | #include 12 | #include "common.h" 13 | 14 | /** 15 | * Dumping compiled mruby script. 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | #define DUMP_DEBUG_INFO 1 20 | #define DUMP_ENDIAN_BIG 2 21 | #define DUMP_ENDIAN_LIL 4 22 | #define DUMP_ENDIAN_NAT 6 23 | #define DUMP_ENDIAN_MASK 6 24 | 25 | int mrb_dump_irep(mrb_state *mrb, mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size); 26 | #ifndef MRB_DISABLE_STDIO 27 | int mrb_dump_irep_binary(mrb_state*, mrb_irep*, uint8_t, FILE*); 28 | int mrb_dump_irep_cfunc(mrb_state *mrb, mrb_irep*, uint8_t flags, FILE *f, const char *initname); 29 | mrb_irep *mrb_read_irep_file(mrb_state*, FILE*); 30 | MRB_API mrb_value mrb_load_irep_file(mrb_state*,FILE*); 31 | MRB_API mrb_value mrb_load_irep_file_cxt(mrb_state*, FILE*, mrbc_context*); 32 | #endif 33 | MRB_API mrb_irep *mrb_read_irep(mrb_state*, const uint8_t*); 34 | 35 | /* dump/load error code 36 | * 37 | * NOTE: MRB_DUMP_GENERAL_FAILURE is caused by 38 | * unspecified issues like malloc failed. 39 | */ 40 | #define MRB_DUMP_OK 0 41 | #define MRB_DUMP_GENERAL_FAILURE (-1) 42 | #define MRB_DUMP_WRITE_FAULT (-2) 43 | #define MRB_DUMP_READ_FAULT (-3) 44 | #define MRB_DUMP_CRC_ERROR (-4) 45 | #define MRB_DUMP_INVALID_FILE_HEADER (-5) 46 | #define MRB_DUMP_INVALID_IREP (-6) 47 | #define MRB_DUMP_INVALID_ARGUMENT (-7) 48 | 49 | /* null symbol length */ 50 | #define MRB_DUMP_NULL_SYM_LEN 0xFFFF 51 | 52 | /* Rite Binary File header */ 53 | #define RITE_BINARY_IDENT "RITE" 54 | #define RITE_BINARY_IDENT_LIL "ETIR" 55 | #define RITE_BINARY_FORMAT_VER "0005" 56 | #define RITE_COMPILER_NAME "MATZ" 57 | #define RITE_COMPILER_VERSION "0000" 58 | 59 | #define RITE_VM_VER "0002" 60 | 61 | #define RITE_BINARY_EOF "END\0" 62 | #define RITE_SECTION_IREP_IDENT "IREP" 63 | #define RITE_SECTION_LINENO_IDENT "LINE" 64 | #define RITE_SECTION_DEBUG_IDENT "DBG\0" 65 | #define RITE_SECTION_LV_IDENT "LVAR" 66 | 67 | #define MRB_DUMP_DEFAULT_STR_LEN 128 68 | #define MRB_DUMP_ALIGNMENT sizeof(uint32_t) 69 | 70 | /* binary header */ 71 | struct rite_binary_header { 72 | uint8_t binary_ident[4]; /* Binary Identifier */ 73 | uint8_t binary_version[4]; /* Binary Format Version */ 74 | uint8_t binary_crc[2]; /* Binary CRC */ 75 | uint8_t binary_size[4]; /* Binary Size */ 76 | uint8_t compiler_name[4]; /* Compiler name */ 77 | uint8_t compiler_version[4]; 78 | }; 79 | 80 | /* section header */ 81 | #define RITE_SECTION_HEADER \ 82 | uint8_t section_ident[4]; \ 83 | uint8_t section_size[4] 84 | 85 | struct rite_section_header { 86 | RITE_SECTION_HEADER; 87 | }; 88 | 89 | struct rite_section_irep_header { 90 | RITE_SECTION_HEADER; 91 | 92 | uint8_t rite_version[4]; /* Rite Instruction Specification Version */ 93 | }; 94 | 95 | struct rite_section_lineno_header { 96 | RITE_SECTION_HEADER; 97 | }; 98 | 99 | struct rite_section_debug_header { 100 | RITE_SECTION_HEADER; 101 | }; 102 | 103 | struct rite_section_lv_header { 104 | RITE_SECTION_HEADER; 105 | }; 106 | 107 | #define RITE_LV_NULL_MARK UINT16_MAX 108 | 109 | struct rite_binary_footer { 110 | RITE_SECTION_HEADER; 111 | }; 112 | 113 | static inline int 114 | bigendian_p() 115 | { 116 | int i; 117 | char *p; 118 | 119 | i = 1; 120 | p = (char*)&i; 121 | return p[0]?0:1; 122 | } 123 | 124 | static inline size_t 125 | uint8_to_bin(uint8_t s, uint8_t *bin) 126 | { 127 | *bin = s; 128 | return sizeof(uint8_t); 129 | } 130 | 131 | static inline size_t 132 | uint16_to_bin(uint16_t s, uint8_t *bin) 133 | { 134 | *bin++ = (s >> 8) & 0xff; 135 | *bin = s & 0xff; 136 | return sizeof(uint16_t); 137 | } 138 | 139 | static inline size_t 140 | uint32_to_bin(uint32_t l, uint8_t *bin) 141 | { 142 | *bin++ = (l >> 24) & 0xff; 143 | *bin++ = (l >> 16) & 0xff; 144 | *bin++ = (l >> 8) & 0xff; 145 | *bin = l & 0xff; 146 | return sizeof(uint32_t); 147 | } 148 | 149 | static inline size_t 150 | uint32l_to_bin(uint32_t l, uint8_t *bin) 151 | { 152 | bin[3] = (l >> 24) & 0xff; 153 | bin[2] = (l >> 16) & 0xff; 154 | bin[1] = (l >> 8) & 0xff; 155 | bin[0] = l & 0xff; 156 | return sizeof(uint32_t); 157 | } 158 | 159 | static inline uint32_t 160 | bin_to_uint32(const uint8_t *bin) 161 | { 162 | return (uint32_t)bin[0] << 24 | 163 | (uint32_t)bin[1] << 16 | 164 | (uint32_t)bin[2] << 8 | 165 | (uint32_t)bin[3]; 166 | } 167 | 168 | static inline uint32_t 169 | bin_to_uint32l(const uint8_t *bin) 170 | { 171 | return (uint32_t)bin[3] << 24 | 172 | (uint32_t)bin[2] << 16 | 173 | (uint32_t)bin[1] << 8 | 174 | (uint32_t)bin[0]; 175 | } 176 | 177 | static inline uint16_t 178 | bin_to_uint16(const uint8_t *bin) 179 | { 180 | return (uint16_t)bin[0] << 8 | 181 | (uint16_t)bin[1]; 182 | } 183 | 184 | static inline uint8_t 185 | bin_to_uint8(const uint8_t *bin) 186 | { 187 | return (uint8_t)bin[0]; 188 | } 189 | 190 | MRB_END_DECL 191 | 192 | /** @internal crc.c */ 193 | uint16_t 194 | calc_crc_16_ccitt(const uint8_t *src, size_t nbytes, uint16_t crc); 195 | 196 | #endif /* MRUBY_DUMP_H */ 197 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/error.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/error.h - Exception class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ERROR_H 8 | #define MRUBY_ERROR_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby error handling. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | struct RException { 18 | MRB_OBJECT_HEADER; 19 | struct iv_tbl *iv; 20 | }; 21 | 22 | #define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v)) 23 | 24 | MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg); 25 | MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str); 26 | #define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit)) 27 | MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv); 28 | MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc); 29 | MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb); 30 | MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...); 31 | 32 | /* declaration for fail method */ 33 | MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value); 34 | 35 | struct RBreak { 36 | MRB_OBJECT_HEADER; 37 | struct RProc *proc; 38 | mrb_value val; 39 | }; 40 | 41 | /** 42 | * Protect 43 | * 44 | * @mrbgem mruby-error 45 | */ 46 | MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state); 47 | 48 | /** 49 | * Ensure 50 | * 51 | * @mrbgem mruby-error 52 | */ 53 | MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 54 | mrb_func_t ensure, mrb_value e_data); 55 | 56 | /** 57 | * Rescue 58 | * 59 | * @mrbgem mruby-error 60 | */ 61 | MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 62 | mrb_func_t rescue, mrb_value r_data); 63 | 64 | /** 65 | * Rescue exception 66 | * 67 | * @mrbgem mruby-error 68 | */ 69 | MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 70 | mrb_func_t rescue, mrb_value r_data, 71 | mrb_int len, struct RClass **classes); 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_ERROR_H */ 76 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/gc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/gc.h - garbage collector for mruby 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_GC_H 8 | #define MRUBY_GC_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Uncommon memory management stuffs. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | 18 | struct mrb_state; 19 | 20 | #define MRB_EACH_OBJ_OK 0 21 | #define MRB_EACH_OBJ_BREAK 1 22 | typedef int (mrb_each_object_callback)(struct mrb_state *mrb, struct RBasic *obj, void *data); 23 | void mrb_objspace_each_objects(struct mrb_state *mrb, mrb_each_object_callback *callback, void *data); 24 | MRB_API void mrb_free_context(struct mrb_state *mrb, struct mrb_context *c); 25 | 26 | #ifndef MRB_GC_ARENA_SIZE 27 | #define MRB_GC_ARENA_SIZE 100 28 | #endif 29 | 30 | typedef enum { 31 | MRB_GC_STATE_ROOT = 0, 32 | MRB_GC_STATE_MARK, 33 | MRB_GC_STATE_SWEEP 34 | } mrb_gc_state; 35 | 36 | /* Disable MSVC warning "C4200: nonstandard extension used: zero-sized array 37 | * in struct/union" when in C++ mode */ 38 | #ifdef _MSC_VER 39 | #pragma warning(push) 40 | #pragma warning(disable : 4200) 41 | #endif 42 | 43 | typedef struct mrb_heap_page { 44 | struct RBasic *freelist; 45 | struct mrb_heap_page *prev; 46 | struct mrb_heap_page *next; 47 | struct mrb_heap_page *free_next; 48 | struct mrb_heap_page *free_prev; 49 | mrb_bool old:1; 50 | void *objects[]; 51 | } mrb_heap_page; 52 | 53 | #ifdef _MSC_VER 54 | #pragma warning(pop) 55 | #endif 56 | 57 | typedef struct mrb_gc { 58 | mrb_heap_page *heaps; /* heaps for GC */ 59 | mrb_heap_page *sweeps; 60 | mrb_heap_page *free_heaps; 61 | size_t live; /* count of live objects */ 62 | #ifdef MRB_GC_FIXED_ARENA 63 | struct RBasic *arena[MRB_GC_ARENA_SIZE]; /* GC protection array */ 64 | #else 65 | struct RBasic **arena; /* GC protection array */ 66 | int arena_capa; 67 | #endif 68 | int arena_idx; 69 | 70 | mrb_gc_state state; /* state of gc */ 71 | int current_white_part; /* make white object by white_part */ 72 | struct RBasic *gray_list; /* list of gray objects to be traversed incrementally */ 73 | struct RBasic *atomic_gray_list; /* list of objects to be traversed atomically */ 74 | size_t live_after_mark; 75 | size_t threshold; 76 | int interval_ratio; 77 | int step_ratio; 78 | mrb_bool iterating :1; 79 | mrb_bool disabled :1; 80 | mrb_bool full :1; 81 | mrb_bool generational :1; 82 | mrb_bool out_of_memory :1; 83 | size_t majorgc_old_threshold; 84 | } mrb_gc; 85 | 86 | MRB_API mrb_bool 87 | mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object); 88 | 89 | MRB_END_DECL 90 | 91 | #endif /* MRUBY_GC_H */ 92 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/hash.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/hash.h - Hash class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_HASH_H 8 | #define MRUBY_HASH_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Hash class 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | struct RHash { 19 | MRB_OBJECT_HEADER; 20 | struct iv_tbl *iv; 21 | struct htable *ht; 22 | }; 23 | 24 | #define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v))) 25 | #define mrb_hash_value(p) mrb_obj_value((void*)(p)) 26 | 27 | MRB_API mrb_value mrb_hash_new_capa(mrb_state*, mrb_int); 28 | MRB_API mrb_value mrb_ensure_hash_type(mrb_state *mrb, mrb_value hash); 29 | MRB_API mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash); 30 | 31 | /* 32 | * Initializes a new hash. 33 | * 34 | * Equivalent to: 35 | * 36 | * Hash.new 37 | * 38 | * @param mrb The mruby state reference. 39 | * @return The initialized hash. 40 | */ 41 | MRB_API mrb_value mrb_hash_new(mrb_state *mrb); 42 | 43 | /* 44 | * Sets a keys and values to hashes. 45 | * 46 | * Equivalent to: 47 | * 48 | * hash[key] = val 49 | * 50 | * @param mrb The mruby state reference. 51 | * @param hash The target hash. 52 | * @param key The key to set. 53 | * @param val The value to set. 54 | * @return The value. 55 | */ 56 | MRB_API void mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val); 57 | 58 | /* 59 | * Gets a value from a key. If the key is not found, the default of the 60 | * hash is used. 61 | * 62 | * Equivalent to: 63 | * 64 | * hash[key] 65 | * 66 | * @param mrb The mruby state reference. 67 | * @param hash The target hash. 68 | * @param key The key to get. 69 | * @return The found value. 70 | */ 71 | MRB_API mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key); 72 | 73 | /* 74 | * Gets a value from a key. If the key is not found, the default parameter is 75 | * used. 76 | * 77 | * Equivalent to: 78 | * 79 | * hash.key?(key) ? hash[key] : def 80 | * 81 | * @param mrb The mruby state reference. 82 | * @param hash The target hash. 83 | * @param key The key to get. 84 | * @param def The default value. 85 | * @return The found value. 86 | */ 87 | MRB_API mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def); 88 | 89 | /* 90 | * Deletes hash key and value pair. 91 | * 92 | * Equivalent to: 93 | * 94 | * hash.delete(key) 95 | * 96 | * @param mrb The mruby state reference. 97 | * @param hash The target hash. 98 | * @param key The key to delete. 99 | * @return The deleted value. 100 | */ 101 | MRB_API mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key); 102 | 103 | /* 104 | * Gets an array of keys. 105 | * 106 | * Equivalent to: 107 | * 108 | * hash.keys 109 | * 110 | * @param mrb The mruby state reference. 111 | * @param hash The target hash. 112 | * @return An array with the keys of the hash. 113 | */ 114 | MRB_API mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash); 115 | /* 116 | * Check if the hash has the key. 117 | * 118 | * Equivalent to: 119 | * 120 | * hash.key?(key) 121 | * 122 | * @param mrb The mruby state reference. 123 | * @param hash The target hash. 124 | * @param key The key to check existence. 125 | * @return True if the hash has the key 126 | */ 127 | MRB_API mrb_bool mrb_hash_key_p(mrb_state *mrb, mrb_value hash, mrb_value key); 128 | 129 | /* 130 | * Check if the hash is empty 131 | * 132 | * Equivalent to: 133 | * 134 | * hash.empty? 135 | * 136 | * @param mrb The mruby state reference. 137 | * @param self The target hash. 138 | * @return True if the hash is empty, false otherwise. 139 | */ 140 | MRB_API mrb_bool mrb_hash_empty_p(mrb_state *mrb, mrb_value self); 141 | 142 | /* 143 | * Gets an array of values. 144 | * 145 | * Equivalent to: 146 | * 147 | * hash.values 148 | * 149 | * @param mrb The mruby state reference. 150 | * @param hash The target hash. 151 | * @return An array with the values of the hash. 152 | */ 153 | MRB_API mrb_value mrb_hash_values(mrb_state *mrb, mrb_value hash); 154 | 155 | /* 156 | * Clears the hash. 157 | * 158 | * Equivalent to: 159 | * 160 | * hash.clear 161 | * 162 | * @param mrb The mruby state reference. 163 | * @param hash The target hash. 164 | * @return The hash 165 | */ 166 | MRB_API mrb_value mrb_hash_clear(mrb_state *mrb, mrb_value hash); 167 | 168 | /* 169 | * Copies the hash. 170 | * 171 | * 172 | * @param mrb The mruby state reference. 173 | * @param hash The target hash. 174 | * @return The copy of the hash 175 | */ 176 | MRB_API mrb_value mrb_hash_dup(mrb_state *mrb, mrb_value hash); 177 | 178 | /* 179 | * Merges two hashes. The first hash will be modified by the 180 | * second hash. 181 | * 182 | * @param mrb The mruby state reference. 183 | * @param hash1 The target hash. 184 | * @param hash2 Updating hash 185 | */ 186 | MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2); 187 | 188 | /* declaration of struct kh_ht */ 189 | /* be careful when you touch the internal */ 190 | typedef struct { 191 | mrb_value v; 192 | mrb_int n; 193 | } mrb_hash_value; 194 | 195 | KHASH_DECLARE(ht, mrb_value, mrb_hash_value, TRUE) 196 | 197 | /* RHASH_TBL allocates st_table if not available. */ 198 | #define RHASH(obj) ((struct RHash*)(mrb_ptr(obj))) 199 | #define RHASH_TBL(h) (RHASH(h)->ht) 200 | #define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), mrb_intern_lit(mrb, "ifnone")) 201 | #define RHASH_PROCDEFAULT(h) RHASH_IFNONE(h) 202 | 203 | #define MRB_HASH_DEFAULT 1 204 | #define MRB_HASH_PROC_DEFAULT 2 205 | #define MRB_RHASH_DEFAULT_P(h) (RHASH(h)->flags & MRB_HASH_DEFAULT) 206 | #define MRB_RHASH_PROCDEFAULT_P(h) (RHASH(h)->flags & MRB_HASH_PROC_DEFAULT) 207 | 208 | /* GC functions */ 209 | void mrb_gc_mark_hash(mrb_state*, struct RHash*); 210 | size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*); 211 | void mrb_gc_free_hash(mrb_state*, struct RHash*); 212 | 213 | MRB_END_DECL 214 | 215 | #endif /* MRUBY_HASH_H */ 216 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/irep.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/irep.h - mrb_irep structure 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_IREP_H 8 | #define MRUBY_IREP_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Compiled mruby scripts. 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | enum irep_pool_type { 19 | IREP_TT_STRING, 20 | IREP_TT_FIXNUM, 21 | IREP_TT_FLOAT, 22 | }; 23 | 24 | struct mrb_locals { 25 | mrb_sym name; 26 | uint16_t r; 27 | }; 28 | 29 | /* Program data array struct */ 30 | typedef struct mrb_irep { 31 | uint16_t nlocals; /* Number of local variables */ 32 | uint16_t nregs; /* Number of register variables */ 33 | uint8_t flags; 34 | 35 | mrb_code *iseq; 36 | mrb_value *pool; 37 | mrb_sym *syms; 38 | struct mrb_irep **reps; 39 | 40 | struct mrb_locals *lv; 41 | /* debug info */ 42 | struct mrb_irep_debug_info* debug_info; 43 | 44 | uint16_t ilen, plen, slen, rlen; 45 | uint32_t refcnt; 46 | } mrb_irep; 47 | 48 | #define MRB_ISEQ_NO_FREE 1 49 | 50 | MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb); 51 | 52 | /* @param [const uint8_t*] irep code, expected as a literal */ 53 | MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*); 54 | 55 | /* @param [const uint8_t*] irep code, expected as a literal */ 56 | MRB_API mrb_value mrb_load_irep_cxt(mrb_state*, const uint8_t*, mrbc_context*); 57 | 58 | void mrb_irep_free(mrb_state*, struct mrb_irep*); 59 | void mrb_irep_incref(mrb_state*, struct mrb_irep*); 60 | void mrb_irep_decref(mrb_state*, struct mrb_irep*); 61 | void mrb_irep_cutref(mrb_state*, struct mrb_irep*); 62 | void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep); 63 | 64 | struct mrb_insn_data { 65 | uint8_t insn; 66 | uint16_t a; 67 | uint16_t b; 68 | uint8_t c; 69 | }; 70 | 71 | struct mrb_insn_data mrb_decode_insn(mrb_code *pc); 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_IREP_H */ 76 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/istruct.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/istruct.h - Inline structures 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ISTRUCT_H 8 | #define MRUBY_ISTRUCT_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Inline structures that fit in RVALUE 15 | * 16 | * They cannot have finalizer, and cannot have instance variables. 17 | */ 18 | MRB_BEGIN_DECL 19 | 20 | #define ISTRUCT_DATA_SIZE (sizeof(void*) * 3) 21 | 22 | struct RIstruct { 23 | MRB_OBJECT_HEADER; 24 | char inline_data[ISTRUCT_DATA_SIZE]; 25 | }; 26 | 27 | #define RISTRUCT(obj) ((struct RIstruct*)(mrb_ptr(obj))) 28 | #define ISTRUCT_PTR(obj) (RISTRUCT(obj)->inline_data) 29 | 30 | MRB_INLINE mrb_int mrb_istruct_size() 31 | { 32 | return ISTRUCT_DATA_SIZE; 33 | } 34 | 35 | MRB_INLINE void* mrb_istruct_ptr(mrb_value object) 36 | { 37 | return ISTRUCT_PTR(object); 38 | } 39 | 40 | MRB_INLINE void mrb_istruct_copy(mrb_value dest, mrb_value src) 41 | { 42 | memcpy(ISTRUCT_PTR(dest), ISTRUCT_PTR(src), ISTRUCT_DATA_SIZE); 43 | } 44 | 45 | MRB_END_DECL 46 | 47 | #endif /* MRUBY_ISTRUCT_H */ 48 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/numeric.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/numeric.h - Numeric, Integer, Float, Fixnum class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_NUMERIC_H 8 | #define MRUBY_NUMERIC_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Numeric class and it's sub-classes. 14 | * 15 | * Integer, Float and Fixnum 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | #define TYPED_POSFIXABLE(f,t) ((f) <= (t)MRB_INT_MAX) 20 | #define TYPED_NEGFIXABLE(f,t) ((f) >= (t)MRB_INT_MIN) 21 | #define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t)) 22 | #define POSFIXABLE(f) TYPED_POSFIXABLE(f,mrb_int) 23 | #define NEGFIXABLE(f) TYPED_NEGFIXABLE(f,mrb_int) 24 | #define FIXABLE(f) TYPED_FIXABLE(f,mrb_int) 25 | #ifndef MRB_WITHOUT_FLOAT 26 | #define FIXABLE_FLOAT(f) TYPED_FIXABLE(f,double) 27 | #endif 28 | 29 | #ifndef MRB_WITHOUT_FLOAT 30 | MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val); 31 | #endif 32 | MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base); 33 | /* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */ 34 | #ifndef MRB_WITHOUT_FLOAT 35 | MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt); 36 | MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x); 37 | #endif 38 | 39 | mrb_value mrb_fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y); 40 | mrb_value mrb_fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y); 41 | mrb_value mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y); 42 | mrb_value mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y); 43 | 44 | #ifndef __has_builtin 45 | #define __has_builtin(x) 0 46 | #endif 47 | 48 | #if (defined(__GNUC__) && __GNUC__ >= 5) || \ 49 | (__has_builtin(__builtin_add_overflow) && \ 50 | __has_builtin(__builtin_sub_overflow) && \ 51 | __has_builtin(__builtin_mul_overflow)) 52 | # define MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 53 | #endif 54 | 55 | /* 56 | // Clang 3.8 and 3.9 have problem compiling mruby in 32-bit mode, when MRB_INT64 is set 57 | // because of missing __mulodi4 and similar functions in its runtime. We need to use custom 58 | // implementation for them. 59 | */ 60 | #ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 61 | #if defined(__clang__) && (__clang_major__ == 3) && (__clang_minor__ >= 8) && \ 62 | defined(MRB_32BIT) && defined(MRB_INT64) 63 | #undef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 64 | #endif 65 | #endif 66 | 67 | #ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 68 | 69 | #ifndef MRB_WORD_BOXING 70 | # define WBCHK(x) 0 71 | #else 72 | # define WBCHK(x) !FIXABLE(x) 73 | #endif 74 | 75 | static inline mrb_bool 76 | mrb_int_add_overflow(mrb_int augend, mrb_int addend, mrb_int *sum) 77 | { 78 | return __builtin_add_overflow(augend, addend, sum) || WBCHK(*sum); 79 | } 80 | 81 | static inline mrb_bool 82 | mrb_int_sub_overflow(mrb_int minuend, mrb_int subtrahend, mrb_int *difference) 83 | { 84 | return __builtin_sub_overflow(minuend, subtrahend, difference) || WBCHK(*difference); 85 | } 86 | 87 | static inline mrb_bool 88 | mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) 89 | { 90 | return __builtin_mul_overflow(multiplier, multiplicand, product) || WBCHK(*product); 91 | } 92 | 93 | #undef WBCHK 94 | 95 | #else 96 | 97 | #define MRB_UINT_MAKE2(n) uint ## n ## _t 98 | #define MRB_UINT_MAKE(n) MRB_UINT_MAKE2(n) 99 | #define mrb_uint MRB_UINT_MAKE(MRB_INT_BIT) 100 | 101 | #define MRB_INT_OVERFLOW_MASK ((mrb_uint)1 << (MRB_INT_BIT - 1 - MRB_FIXNUM_SHIFT)) 102 | 103 | static inline mrb_bool 104 | mrb_int_add_overflow(mrb_int augend, mrb_int addend, mrb_int *sum) 105 | { 106 | mrb_uint x = (mrb_uint)augend; 107 | mrb_uint y = (mrb_uint)addend; 108 | mrb_uint z = (mrb_uint)(x + y); 109 | *sum = (mrb_int)z; 110 | return !!(((x ^ z) & (y ^ z)) & MRB_INT_OVERFLOW_MASK); 111 | } 112 | 113 | static inline mrb_bool 114 | mrb_int_sub_overflow(mrb_int minuend, mrb_int subtrahend, mrb_int *difference) 115 | { 116 | mrb_uint x = (mrb_uint)minuend; 117 | mrb_uint y = (mrb_uint)subtrahend; 118 | mrb_uint z = (mrb_uint)(x - y); 119 | *difference = (mrb_int)z; 120 | return !!(((x ^ z) & (~y ^ z)) & MRB_INT_OVERFLOW_MASK); 121 | } 122 | 123 | static inline mrb_bool 124 | mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) 125 | { 126 | #if MRB_INT_BIT == 32 127 | int64_t n = (int64_t)multiplier * multiplicand; 128 | *product = (mrb_int)n; 129 | return !FIXABLE(n); 130 | #else 131 | if (multiplier > 0) { 132 | if (multiplicand > 0) { 133 | if (multiplier > MRB_INT_MAX / multiplicand) return TRUE; 134 | } 135 | else { 136 | if (multiplicand < MRB_INT_MAX / multiplier) return TRUE; 137 | } 138 | } 139 | else { 140 | if (multiplicand > 0) { 141 | if (multiplier < MRB_INT_MAX / multiplicand) return TRUE; 142 | } 143 | else { 144 | if (multiplier != 0 && multiplicand < MRB_INT_MAX / multiplier) return TRUE; 145 | } 146 | } 147 | *product = multiplier * multiplicand; 148 | return FALSE; 149 | #endif 150 | } 151 | 152 | #undef MRB_INT_OVERFLOW_MASK 153 | #undef mrb_uint 154 | #undef MRB_UINT_MAKE 155 | #undef MRB_UINT_MAKE2 156 | 157 | #endif 158 | 159 | MRB_END_DECL 160 | 161 | #endif /* MRUBY_NUMERIC_H */ 162 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/object.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/object.h - mruby object definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_OBJECT_H 8 | #define MRUBY_OBJECT_H 9 | 10 | #define MRB_OBJECT_HEADER \ 11 | enum mrb_vtype tt:8;\ 12 | uint32_t color:3;\ 13 | uint32_t flags:21;\ 14 | struct RClass *c;\ 15 | struct RBasic *gcnext 16 | 17 | #define MRB_FLAG_TEST(obj, flag) ((obj)->flags & flag) 18 | 19 | 20 | struct RBasic { 21 | MRB_OBJECT_HEADER; 22 | }; 23 | #define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v))) 24 | 25 | #define MRB_FL_OBJ_IS_FROZEN (1 << 20) 26 | #define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN) 27 | #define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN) 28 | #define MRB_UNSET_FROZEN_FLAG(o) ((o)->flags &= ~MRB_FL_OBJ_IS_FROZEN) 29 | 30 | struct RObject { 31 | MRB_OBJECT_HEADER; 32 | struct iv_tbl *iv; 33 | }; 34 | #define mrb_obj_ptr(v) ((struct RObject*)(mrb_ptr(v))) 35 | 36 | #define mrb_immediate_p(x) (mrb_type(x) < MRB_TT_HAS_BASIC) 37 | #define mrb_special_const_p(x) mrb_immediate_p(x) 38 | 39 | struct RFiber { 40 | MRB_OBJECT_HEADER; 41 | struct mrb_context *cxt; 42 | }; 43 | 44 | #endif /* MRUBY_OBJECT_H */ 45 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/opcode.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/opcode.h - RiteVM operation codes 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_OPCODE_H 8 | #define MRUBY_OPCODE_H 9 | 10 | enum mrb_insn { 11 | #define OPCODE(x,_) OP_ ## x, 12 | #include "mruby/ops.h" 13 | #undef OPCODE 14 | }; 15 | 16 | #define OP_L_STRICT 1 17 | #define OP_L_CAPTURE 2 18 | #define OP_L_METHOD OP_L_STRICT 19 | #define OP_L_LAMBDA (OP_L_STRICT|OP_L_CAPTURE) 20 | #define OP_L_BLOCK OP_L_CAPTURE 21 | 22 | #define OP_R_NORMAL 0 23 | #define OP_R_BREAK 1 24 | #define OP_R_RETURN 2 25 | 26 | #define PEEK_B(pc) (*(pc)) 27 | #define PEEK_S(pc) ((pc)[0]<<8|(pc)[1]) 28 | #define PEEK_W(pc) ((pc)[0]<<16|(pc)[1]<<8|(pc)[2]) 29 | 30 | #define READ_B() PEEK_B(pc++) 31 | #define READ_S() (pc+=2, PEEK_S(pc-2)) 32 | #define READ_W() (pc+=3, PEEK_W(pc-3)) 33 | 34 | #define FETCH_Z() /* nothing */ 35 | #define FETCH_B() do {a=READ_B();} while (0) 36 | #define FETCH_BB() do {a=READ_B(); b=READ_B();} while (0) 37 | #define FETCH_BBB() do {a=READ_B(); b=READ_B(); c=READ_B();} while (0) 38 | #define FETCH_BS() do {a=READ_B(); b=READ_S();} while (0) 39 | #define FETCH_S() do {a=READ_S();} while (0) 40 | #define FETCH_W() do {a=READ_W();} while (0) 41 | 42 | /* with OP_EXT1 (1st 16bit) */ 43 | #define FETCH_Z_1() FETCH_Z() 44 | #define FETCH_B_1() FETCH_S() 45 | #define FETCH_BB_1() do {a=READ_S(); b=READ_B();} while (0) 46 | #define FETCH_BBB_1() do {a=READ_S(); b=READ_B(); c=READ_B();} while (0) 47 | #define FETCH_BS_1() do {a=READ_S(); b=READ_S();} while (0) 48 | #define FETCH_S_1() FETCH_S() 49 | #define FETCH_W_1() FETCH_W() 50 | 51 | /* with OP_EXT2 (2nd 16bit) */ 52 | #define FETCH_Z_2() FETCH_Z() 53 | #define FETCH_B_2() FETCH_B() 54 | #define FETCH_BB_2() do {a=READ_B(); b=READ_S();} while (0) 55 | #define FETCH_BBB_2() do {a=READ_B(); b=READ_S(); c=READ_B();} while (0) 56 | #define FETCH_BS_2() FETCH_BS() 57 | #define FETCH_S_2() FETCH_S() 58 | #define FETCH_W_2() FETCH_W() 59 | 60 | /* with OP_EXT3 (1st & 2nd 16bit) */ 61 | #define FETCH_Z_3() FETCH_Z() 62 | #define FETCH_B_3() FETCH_B() 63 | #define FETCH_BB_3() do {a=READ_S(); b=READ_S();} while (0) 64 | #define FETCH_BBB_3() do {a=READ_S(); b=READ_S(); c=READ_B();} while (0) 65 | #define FETCH_BS_3() do {a=READ_S(); b=READ_S();} while (0) 66 | #define FETCH_S_3() FETCH_S() 67 | #define FETCH_W_3() FETCH_W() 68 | 69 | #endif /* MRUBY_OPCODE_H */ 70 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/ops.h: -------------------------------------------------------------------------------- 1 | /* operand types: 2 | + Z: no operand (Z,Z,Z,Z) 3 | + B: 8bit (B,S,B,B) 4 | + BB: 8+8bit (BB,SB,BS,SS) 5 | + BBB: 8+8+8bit (BBB,SBB,BSB,SSB) 6 | + BS: 8+16bit (BS,SS,BS,BS) 7 | + S: 16bit (S,S,S,S) 8 | + W: 24bit (W,W,W,W) 9 | */ 10 | 11 | /*----------------------------------------------------------------------- 12 | operation code operands semantics 13 | ------------------------------------------------------------------------*/ 14 | OPCODE(NOP, Z) /* no operation */ 15 | OPCODE(MOVE, BB) /* R(a) = R(b) */ 16 | OPCODE(LOADL, BB) /* R(a) = Pool(b) */ 17 | OPCODE(LOADI, BB) /* R(a) = mrb_int(b) */ 18 | OPCODE(LOADINEG, BB) /* R(a) = mrb_int(-b) */ 19 | OPCODE(LOADI__1, B) /* R(a) = mrb_int(-1) */ 20 | OPCODE(LOADI_0, B) /* R(a) = mrb_int(0) */ 21 | OPCODE(LOADI_1, B) /* R(a) = mrb_int(1) */ 22 | OPCODE(LOADI_2, B) /* R(a) = mrb_int(2) */ 23 | OPCODE(LOADI_3, B) /* R(a) = mrb_int(3) */ 24 | OPCODE(LOADI_4, B) /* R(a) = mrb_int(4) */ 25 | OPCODE(LOADI_5, B) /* R(a) = mrb_int(5) */ 26 | OPCODE(LOADI_6, B) /* R(a) = mrb_int(6) */ 27 | OPCODE(LOADI_7, B) /* R(a) = mrb_int(7) */ 28 | OPCODE(LOADSYM, BB) /* R(a) = Syms(b) */ 29 | OPCODE(LOADNIL, B) /* R(a) = nil */ 30 | OPCODE(LOADSELF, B) /* R(a) = self */ 31 | OPCODE(LOADT, B) /* R(a) = true */ 32 | OPCODE(LOADF, B) /* R(a) = false */ 33 | OPCODE(GETGV, BB) /* R(a) = getglobal(Syms(b)) */ 34 | OPCODE(SETGV, BB) /* setglobal(Syms(b), R(a)) */ 35 | OPCODE(GETSV, BB) /* R(a) = Special[Syms(b)] */ 36 | OPCODE(SETSV, BB) /* Special[Syms(b)] = R(a) */ 37 | OPCODE(GETIV, BB) /* R(a) = ivget(Syms(b)) */ 38 | OPCODE(SETIV, BB) /* ivset(Syms(b),R(a)) */ 39 | OPCODE(GETCV, BB) /* R(a) = cvget(Syms(b)) */ 40 | OPCODE(SETCV, BB) /* cvset(Syms(b),R(a)) */ 41 | OPCODE(GETCONST, BB) /* R(a) = constget(Syms(b)) */ 42 | OPCODE(SETCONST, BB) /* constset(Syms(b),R(a)) */ 43 | OPCODE(GETMCNST, BB) /* R(a) = R(a)::Syms(b) */ 44 | OPCODE(SETMCNST, BB) /* R(a+1)::Syms(b) = R(a) */ 45 | OPCODE(GETUPVAR, BBB) /* R(a) = uvget(b,c) */ 46 | OPCODE(SETUPVAR, BBB) /* uvset(b,c,R(a)) */ 47 | OPCODE(JMP, S) /* pc=a */ 48 | OPCODE(JMPIF, BS) /* if R(b) pc=a */ 49 | OPCODE(JMPNOT, BS) /* if !R(b) pc=a */ 50 | OPCODE(JMPNIL, BS) /* if R(b)==nil pc=a */ 51 | OPCODE(ONERR, S) /* rescue_push(a) */ 52 | OPCODE(EXCEPT, B) /* R(a) = exc */ 53 | OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ 54 | OPCODE(POPERR, B) /* a.times{rescue_pop()} */ 55 | OPCODE(RAISE, B) /* raise(R(a)) */ 56 | OPCODE(EPUSH, B) /* ensure_push(SEQ[a]) */ 57 | OPCODE(EPOP, B) /* A.times{ensure_pop().call} */ 58 | OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */ 59 | OPCODE(SENDVB, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) */ 60 | OPCODE(SEND, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) */ 61 | OPCODE(SENDB, BBB) /* R(a) = call(R(a),Syms(Bx),R(a+1),...,R(a+c),&R(a+c+1)) */ 62 | OPCODE(CALL, Z) /* R(0) = self.call(frame.argc, frame.argv) */ 63 | OPCODE(SUPER, BB) /* R(a) = super(R(a+1),... ,R(a+b+1)) */ 64 | OPCODE(ARGARY, BS) /* R(a) = argument array (16=m5:r1:m5:d1:lv4) */ 65 | OPCODE(ENTER, W) /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */ 66 | OPCODE(KEY_P, BB) /* R(a) = kdict.key?(Syms(b)) # todo */ 67 | OPCODE(KEYEND, Z) /* raise unless kdict.empty? # todo */ 68 | OPCODE(KARG, BB) /* R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) # todo */ 69 | OPCODE(RETURN, B) /* return R(a) (normal) */ 70 | OPCODE(RETURN_BLK, B) /* return R(a) (in-block return) */ 71 | OPCODE(BREAK, B) /* break R(a) */ 72 | OPCODE(BLKPUSH, BS) /* R(a) = block (16=m5:r1:m5:d1:lv4) */ 73 | OPCODE(ADD, B) /* R(a) = R(a)+R(a+1) */ 74 | OPCODE(ADDI, BB) /* R(a) = R(a)+mrb_int(c) */ 75 | OPCODE(SUB, B) /* R(a) = R(a)-R(a+1) */ 76 | OPCODE(SUBI, BB) /* R(a) = R(a)-C */ 77 | OPCODE(MUL, B) /* R(a) = R(a)*R(a+1) */ 78 | OPCODE(DIV, B) /* R(a) = R(a)/R(a+1) */ 79 | OPCODE(EQ, B) /* R(a) = R(a)==R(a+1) */ 80 | OPCODE(LT, B) /* R(a) = R(a)R(a+1) */ 83 | OPCODE(GE, B) /* R(a) = R(a)>=R(a+1) */ 84 | OPCODE(ARRAY, BB) /* R(a) = ary_new(R(a),R(a+1)..R(a+b)) */ 85 | OPCODE(ARRAY2, BBB) /* R(a) = ary_new(R(b),R(b+1)..R(b+c)) */ 86 | OPCODE(ARYCAT, B) /* ary_cat(R(a),R(a+1)) */ 87 | OPCODE(ARYPUSH, B) /* ary_push(R(a),R(a+1)) */ 88 | OPCODE(ARYDUP, B) /* R(a) = ary_dup(R(a)) */ 89 | OPCODE(AREF, BBB) /* R(a) = R(b)[c] */ 90 | OPCODE(ASET, BBB) /* R(a)[c] = R(b) */ 91 | OPCODE(APOST, BBB) /* *R(a),R(a+1)..R(a+C) = R(a)[b..] */ 92 | OPCODE(INTERN, B) /* R(a) = intern(R(a)) */ 93 | OPCODE(STRING, BB) /* R(a) = str_dup(Lit(b)) */ 94 | OPCODE(STRCAT, B) /* str_cat(R(a),R(a+1)) */ 95 | OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b)) */ 96 | OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b)) */ 97 | OPCODE(HASHCAT, B) /* R(a) = hash_cat(R(a),R(a+1)) */ 98 | OPCODE(LAMBDA, BB) /* R(a) = lambda(SEQ[b],L_LAMBDA) */ 99 | OPCODE(BLOCK, BB) /* R(a) = lambda(SEQ[b],L_BLOCK) */ 100 | OPCODE(METHOD, BB) /* R(a) = lambda(SEQ[b],L_METHOD) */ 101 | OPCODE(RANGE_INC, B) /* R(a) = range_new(R(a),R(a+1),FALSE) */ 102 | OPCODE(RANGE_EXC, B) /* R(a) = range_new(R(a),R(a+1),TRUE) */ 103 | OPCODE(OCLASS, B) /* R(a) = ::Object */ 104 | OPCODE(CLASS, BB) /* R(a) = newclass(R(a),Syms(b),R(a+1)) */ 105 | OPCODE(MODULE, BB) /* R(a) = newmodule(R(a),Syms(b)) */ 106 | OPCODE(EXEC, BB) /* R(a) = blockexec(R(a),SEQ[b]) */ 107 | OPCODE(DEF, BB) /* R(a).newmethod(Syms(b),R(a+1)) */ 108 | OPCODE(ALIAS, BB) /* alias_method(target_class,Syms(a),Syms(b)) */ 109 | OPCODE(UNDEF, B) /* undef_method(target_class,Syms(a)) */ 110 | OPCODE(SCLASS, B) /* R(a) = R(a).singleton_class */ 111 | OPCODE(TCLASS, B) /* R(a) = target_class */ 112 | OPCODE(DEBUG, BBB) /* print a,b,c */ 113 | OPCODE(ERR, B) /* raise(LocalJumpError, Lit(a)) */ 114 | OPCODE(EXT1, Z) /* make 1st operand 16bit */ 115 | OPCODE(EXT2, Z) /* make 2nd operand 16bit */ 116 | OPCODE(EXT3, Z) /* make 1st and 2nd operands 16bit */ 117 | OPCODE(STOP, Z) /* stop VM */ 118 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/proc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/proc.h - Proc class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_PROC_H 8 | #define MRUBY_PROC_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Proc class 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | struct REnv { 19 | MRB_OBJECT_HEADER; 20 | mrb_value *stack; 21 | struct mrb_context *cxt; 22 | mrb_sym mid; 23 | }; 24 | 25 | /* flags (21bits): 1(shared flag):10(cioff/bidx):10(stack_len) */ 26 | #define MRB_ENV_SET_STACK_LEN(e,len) (e)->flags = (((e)->flags & ~0x3ff)|((unsigned int)(len) & 0x3ff)) 27 | #define MRB_ENV_STACK_LEN(e) ((mrb_int)((e)->flags & 0x3ff)) 28 | #define MRB_ENV_STACK_UNSHARED (1<<20) 29 | #define MRB_ENV_UNSHARE_STACK(e) (e)->flags |= MRB_ENV_STACK_UNSHARED 30 | #define MRB_ENV_STACK_SHARED_P(e) (((e)->flags & MRB_ENV_STACK_UNSHARED) == 0) 31 | #define MRB_ENV_BIDX(e) (((e)->flags >> 10) & 0x3ff) 32 | #define MRB_ENV_SET_BIDX(e,idx) (e)->flags = (((e)->flags & ~(0x3ff<<10))|((unsigned int)(idx) & 0x3ff)<<10) 33 | 34 | void mrb_env_unshare(mrb_state*, struct REnv*); 35 | 36 | struct RProc { 37 | MRB_OBJECT_HEADER; 38 | union { 39 | mrb_irep *irep; 40 | mrb_func_t func; 41 | } body; 42 | struct RProc *upper; 43 | union { 44 | struct RClass *target_class; 45 | struct REnv *env; 46 | } e; 47 | }; 48 | 49 | /* aspec access */ 50 | #define MRB_ASPEC_REQ(a) (((a) >> 18) & 0x1f) 51 | #define MRB_ASPEC_OPT(a) (((a) >> 13) & 0x1f) 52 | #define MRB_ASPEC_REST(a) (((a) >> 12) & 0x1) 53 | #define MRB_ASPEC_POST(a) (((a) >> 7) & 0x1f) 54 | #define MRB_ASPEC_KEY(a) (((a) >> 2) & 0x1f) 55 | #define MRB_ASPEC_KDICT(a) ((a) & (1<<1)) 56 | #define MRB_ASPEC_BLOCK(a) ((a) & 1) 57 | 58 | #define MRB_PROC_CFUNC_FL 128 59 | #define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0) 60 | #define MRB_PROC_CFUNC(p) (p)->body.func 61 | #define MRB_PROC_STRICT 256 62 | #define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0) 63 | #define MRB_PROC_ORPHAN 512 64 | #define MRB_PROC_ORPHAN_P(p) (((p)->flags & MRB_PROC_ORPHAN) != 0) 65 | #define MRB_PROC_ENVSET 1024 66 | #define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0) 67 | #define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL) 68 | #define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class) 69 | #define MRB_PROC_SET_TARGET_CLASS(p,tc) do {\ 70 | if (MRB_PROC_ENV_P(p)) {\ 71 | (p)->e.env->c = (tc);\ 72 | mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)tc);\ 73 | }\ 74 | else {\ 75 | (p)->e.target_class = (tc);\ 76 | mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)tc);\ 77 | }\ 78 | } while (0) 79 | #define MRB_PROC_SCOPE 2048 80 | #define MRB_PROC_SCOPE_P(p) (((p)->flags & MRB_PROC_SCOPE) != 0) 81 | 82 | #define mrb_proc_ptr(v) ((struct RProc*)(mrb_ptr(v))) 83 | 84 | struct RProc *mrb_proc_new(mrb_state*, mrb_irep*); 85 | struct RProc *mrb_closure_new(mrb_state*, mrb_irep*); 86 | MRB_API struct RProc *mrb_proc_new_cfunc(mrb_state*, mrb_func_t); 87 | MRB_API struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals); 88 | void mrb_proc_copy(struct RProc *a, struct RProc *b); 89 | 90 | /* implementation of #send method */ 91 | mrb_value mrb_f_send(mrb_state *mrb, mrb_value self); 92 | 93 | /* following functions are defined in mruby-proc-ext so please include it when using */ 94 | MRB_API struct RProc *mrb_proc_new_cfunc_with_env(mrb_state*, mrb_func_t, mrb_int, const mrb_value*); 95 | MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state*, mrb_int); 96 | /* old name */ 97 | #define mrb_cfunc_env_get(mrb, idx) mrb_proc_cfunc_env_get(mrb, idx) 98 | 99 | #ifdef MRB_METHOD_TABLE_INLINE 100 | 101 | #define MRB_METHOD_FUNC_FL ((uintptr_t)1) 102 | #define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL) 103 | #define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)&(~MRB_METHOD_FUNC_FL))) 104 | #define MRB_METHOD_FROM_FUNC(m,fn) m=(mrb_method_t)((struct RProc*)((uintptr_t)(fn)|MRB_METHOD_FUNC_FL)) 105 | #define MRB_METHOD_FROM_PROC(m,pr) m=(mrb_method_t)(struct RProc*)(pr) 106 | #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) 107 | #define MRB_METHOD_PROC(m) ((struct RProc*)(m)) 108 | #define MRB_METHOD_UNDEF_P(m) ((m)==0) 109 | 110 | #else 111 | 112 | #define MRB_METHOD_FUNC_P(m) ((m).func_p) 113 | #define MRB_METHOD_FUNC(m) ((m).func) 114 | #define MRB_METHOD_FROM_FUNC(m,fn) do{(m).func_p=TRUE;(m).func=(fn);}while(0) 115 | #define MRB_METHOD_FROM_PROC(m,pr) do{(m).func_p=FALSE;(m).proc=(pr);}while(0) 116 | #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) 117 | #define MRB_METHOD_PROC(m) ((m).proc) 118 | #define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL) 119 | 120 | #endif /* MRB_METHOD_TABLE_INLINE */ 121 | 122 | #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE)) 123 | #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL)) 124 | 125 | 126 | #include 127 | KHASH_DECLARE(mt, mrb_sym, mrb_method_t, TRUE) 128 | 129 | MRB_END_DECL 130 | 131 | #endif /* MRUBY_PROC_H */ 132 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/range.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/range.h - Range class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_RANGE_H 8 | #define MRUBY_RANGE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Range class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef struct mrb_range_edges { 18 | mrb_value beg; 19 | mrb_value end; 20 | } mrb_range_edges; 21 | 22 | struct RRange { 23 | MRB_OBJECT_HEADER; 24 | mrb_range_edges *edges; 25 | mrb_bool excl : 1; 26 | }; 27 | 28 | MRB_API struct RRange* mrb_range_ptr(mrb_state *mrb, mrb_value v); 29 | #define mrb_range_raw_ptr(v) ((struct RRange*)mrb_ptr(v)) 30 | #define mrb_range_value(p) mrb_obj_value((void*)(p)) 31 | 32 | /* 33 | * Initializes a Range. 34 | * 35 | * If the third parameter is FALSE then it includes the last value in the range. 36 | * If the third parameter is TRUE then it excludes the last value in the range. 37 | * 38 | * @param start the beginning value. 39 | * @param end the ending value. 40 | * @param exclude represents the inclusion or exclusion of the last value. 41 | */ 42 | MRB_API mrb_value mrb_range_new(mrb_state *mrb, mrb_value start, mrb_value end, mrb_bool exclude); 43 | 44 | MRB_API mrb_int mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len, mrb_bool trunc); 45 | mrb_value mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, const mrb_value *argv, mrb_value (*func)(mrb_state*, mrb_value, mrb_int)); 46 | 47 | MRB_END_DECL 48 | 49 | #endif /* MRUBY_RANGE_H */ 50 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/re.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/re.h - Regexp class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_RE_H 8 | #define MRUBY_RE_H 9 | 10 | MRB_BEGIN_DECL 11 | 12 | #define REGEXP_CLASS "Regexp" 13 | 14 | MRB_END_DECL 15 | 16 | #endif /* RE_H */ 17 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/string.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/string.h - String class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_STRING_H 8 | #define MRUBY_STRING_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * String class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | extern const char mrb_digitmap[]; 18 | 19 | #define RSTRING_EMBED_LEN_MAX ((mrb_int)(sizeof(void*) * 3 - 1)) 20 | 21 | struct RString { 22 | MRB_OBJECT_HEADER; 23 | union { 24 | struct { 25 | mrb_int len; 26 | union { 27 | mrb_int capa; 28 | struct mrb_shared_string *shared; 29 | struct RString *fshared; 30 | } aux; 31 | char *ptr; 32 | } heap; 33 | char ary[RSTRING_EMBED_LEN_MAX + 1]; 34 | } as; 35 | }; 36 | 37 | #define RSTR_EMBED_P(s) ((s)->flags & MRB_STR_EMBED) 38 | #define RSTR_SET_EMBED_FLAG(s) ((s)->flags |= MRB_STR_EMBED) 39 | #define RSTR_UNSET_EMBED_FLAG(s) ((s)->flags &= ~(MRB_STR_EMBED|MRB_STR_EMBED_LEN_MASK)) 40 | #define RSTR_SET_EMBED_LEN(s, n) do {\ 41 | size_t tmp_n = (n);\ 42 | s->flags &= ~MRB_STR_EMBED_LEN_MASK;\ 43 | s->flags |= (tmp_n) << MRB_STR_EMBED_LEN_SHIFT;\ 44 | } while (0) 45 | #define RSTR_SET_LEN(s, n) do {\ 46 | if (RSTR_EMBED_P(s)) {\ 47 | RSTR_SET_EMBED_LEN((s),(n));\ 48 | }\ 49 | else {\ 50 | s->as.heap.len = (mrb_int)(n);\ 51 | }\ 52 | } while (0) 53 | #define RSTR_EMBED_LEN(s)\ 54 | (mrb_int)(((s)->flags & MRB_STR_EMBED_LEN_MASK) >> MRB_STR_EMBED_LEN_SHIFT) 55 | #define RSTR_PTR(s) ((RSTR_EMBED_P(s)) ? (s)->as.ary : (s)->as.heap.ptr) 56 | #define RSTR_LEN(s) ((RSTR_EMBED_P(s)) ? RSTR_EMBED_LEN(s) : (s)->as.heap.len) 57 | #define RSTR_CAPA(s) (RSTR_EMBED_P(s) ? RSTRING_EMBED_LEN_MAX : (s)->as.heap.aux.capa) 58 | 59 | #define RSTR_SHARED_P(s) ((s)->flags & MRB_STR_SHARED) 60 | #define RSTR_SET_SHARED_FLAG(s) ((s)->flags |= MRB_STR_SHARED) 61 | #define RSTR_UNSET_SHARED_FLAG(s) ((s)->flags &= ~MRB_STR_SHARED) 62 | 63 | #define RSTR_FSHARED_P(s) ((s)->flags & MRB_STR_FSHARED) 64 | #define RSTR_SET_FSHARED_FLAG(s) ((s)->flags |= MRB_STR_FSHARED) 65 | #define RSTR_UNSET_FSHARED_FLAG(s) ((s)->flags &= ~MRB_STR_FSHARED) 66 | 67 | #define RSTR_NOFREE_P(s) ((s)->flags & MRB_STR_NOFREE) 68 | #define RSTR_SET_NOFREE_FLAG(s) ((s)->flags |= MRB_STR_NOFREE) 69 | #define RSTR_UNSET_NOFREE_FLAG(s) ((s)->flags &= ~MRB_STR_NOFREE) 70 | 71 | #define RSTR_POOL_P(s) ((s)->flags & MRB_STR_POOL) 72 | #define RSTR_SET_POOL_FLAG(s) ((s)->flags |= MRB_STR_POOL) 73 | 74 | /* 75 | * Returns a pointer from a Ruby string 76 | */ 77 | #define mrb_str_ptr(s) ((struct RString*)(mrb_ptr(s))) 78 | #define RSTRING(s) mrb_str_ptr(s) 79 | #define RSTRING_PTR(s) RSTR_PTR(RSTRING(s)) 80 | #define RSTRING_EMBED_LEN(s) RSTR_EMBED_LEN(RSTRING(s)) 81 | #define RSTRING_LEN(s) RSTR_LEN(RSTRING(s)) 82 | #define RSTRING_CAPA(s) RSTR_CAPA(RSTRING(s)) 83 | #define RSTRING_END(s) (RSTRING_PTR(s) + RSTRING_LEN(s)) 84 | MRB_API mrb_int mrb_str_strlen(mrb_state*, struct RString*); 85 | 86 | #define MRB_STR_SHARED 1 87 | #define MRB_STR_FSHARED 2 88 | #define MRB_STR_NOFREE 4 89 | #define MRB_STR_POOL 8 90 | #define MRB_STR_NO_UTF 16 91 | #define MRB_STR_EMBED 32 92 | #define MRB_STR_EMBED_LEN_MASK 0x7c0 93 | #define MRB_STR_EMBED_LEN_SHIFT 6 94 | 95 | void mrb_gc_free_str(mrb_state*, struct RString*); 96 | MRB_API void mrb_str_modify(mrb_state*, struct RString*); 97 | 98 | /* 99 | * Finds the index of a substring in a string 100 | */ 101 | MRB_API mrb_int mrb_str_index(mrb_state*, mrb_value, const char*, mrb_int, mrb_int); 102 | #define mrb_str_index_lit(mrb, str, lit, off) mrb_str_index(mrb, str, lit, mrb_strlen_lit(lit), off); 103 | 104 | /* 105 | * Appends self to other. Returns self as a concatenated string. 106 | * 107 | * 108 | * Example: 109 | * 110 | * !!!c 111 | * int 112 | * main(int argc, 113 | * char **argv) 114 | * { 115 | * // Variable declarations. 116 | * mrb_value str1; 117 | * mrb_value str2; 118 | * 119 | * mrb_state *mrb = mrb_open(); 120 | * if (!mrb) 121 | * { 122 | * // handle error 123 | * } 124 | * 125 | * // Creates new Ruby strings. 126 | * str1 = mrb_str_new_lit(mrb, "abc"); 127 | * str2 = mrb_str_new_lit(mrb, "def"); 128 | * 129 | * // Concatenates str2 to str1. 130 | * mrb_str_concat(mrb, str1, str2); 131 | * 132 | * // Prints new Concatenated Ruby string. 133 | * mrb_p(mrb, str1); 134 | * 135 | * mrb_close(mrb); 136 | * return 0; 137 | * } 138 | * 139 | * 140 | * Result: 141 | * 142 | * => "abcdef" 143 | * 144 | * @param [mrb_state] mrb The current mruby state. 145 | * @param [mrb_value] self String to concatenate. 146 | * @param [mrb_value] other String to append to self. 147 | * @return [mrb_value] Returns a new String appending other to self. 148 | */ 149 | MRB_API void mrb_str_concat(mrb_state*, mrb_value, mrb_value); 150 | 151 | /* 152 | * Adds two strings together. 153 | * 154 | * 155 | * Example: 156 | * 157 | * !!!c 158 | * int 159 | * main(int argc, 160 | * char **argv) 161 | * { 162 | * // Variable declarations. 163 | * mrb_value a; 164 | * mrb_value b; 165 | * mrb_value c; 166 | * 167 | * mrb_state *mrb = mrb_open(); 168 | * if (!mrb) 169 | * { 170 | * // handle error 171 | * } 172 | * 173 | * // Creates two Ruby strings from the passed in C strings. 174 | * a = mrb_str_new_lit(mrb, "abc"); 175 | * b = mrb_str_new_lit(mrb, "def"); 176 | * 177 | * // Prints both C strings. 178 | * mrb_p(mrb, a); 179 | * mrb_p(mrb, b); 180 | * 181 | * // Concatenates both Ruby strings. 182 | * c = mrb_str_plus(mrb, a, b); 183 | * 184 | * // Prints new Concatenated Ruby string. 185 | * mrb_p(mrb, c); 186 | * 187 | * mrb_close(mrb); 188 | * return 0; 189 | * } 190 | * 191 | * 192 | * Result: 193 | * 194 | * => "abc" # First string 195 | * => "def" # Second string 196 | * => "abcdef" # First & Second concatenated. 197 | * 198 | * @param [mrb_state] mrb The current mruby state. 199 | * @param [mrb_value] a First string to concatenate. 200 | * @param [mrb_value] b Second string to concatenate. 201 | * @return [mrb_value] Returns a new String containing a concatenated to b. 202 | */ 203 | MRB_API mrb_value mrb_str_plus(mrb_state*, mrb_value, mrb_value); 204 | 205 | /* 206 | * Converts pointer into a Ruby string. 207 | * 208 | * @param [mrb_state] mrb The current mruby state. 209 | * @param [void*] p The pointer to convert to Ruby string. 210 | * @return [mrb_value] Returns a new Ruby String. 211 | */ 212 | MRB_API mrb_value mrb_ptr_to_str(mrb_state *, void*); 213 | 214 | /* 215 | * Returns an object as a Ruby string. 216 | * 217 | * @param [mrb_state] mrb The current mruby state. 218 | * @param [mrb_value] obj An object to return as a Ruby string. 219 | * @return [mrb_value] An object as a Ruby string. 220 | */ 221 | MRB_API mrb_value mrb_obj_as_string(mrb_state *mrb, mrb_value obj); 222 | 223 | /* 224 | * Resizes the string's length. Returns the amount of characters 225 | * in the specified by len. 226 | * 227 | * Example: 228 | * 229 | * !!!c 230 | * int 231 | * main(int argc, 232 | * char **argv) 233 | * { 234 | * // Variable declaration. 235 | * mrb_value str; 236 | * 237 | * mrb_state *mrb = mrb_open(); 238 | * if (!mrb) 239 | * { 240 | * // handle error 241 | * } 242 | * // Creates a new string. 243 | * str = mrb_str_new_lit(mrb, "Hello, world!"); 244 | * // Returns 5 characters of 245 | * mrb_str_resize(mrb, str, 5); 246 | * mrb_p(mrb, str); 247 | * 248 | * mrb_close(mrb); 249 | * return 0; 250 | * } 251 | * 252 | * Result: 253 | * 254 | * => "Hello" 255 | * 256 | * @param [mrb_state] mrb The current mruby state. 257 | * @param [mrb_value] str The Ruby string to resize. 258 | * @param [mrb_value] len The length. 259 | * @return [mrb_value] An object as a Ruby string. 260 | */ 261 | MRB_API mrb_value mrb_str_resize(mrb_state *mrb, mrb_value str, mrb_int len); 262 | 263 | /* 264 | * Returns a sub string. 265 | * 266 | * Example: 267 | * 268 | * !!!c 269 | * int 270 | * main(int argc, 271 | * char const **argv) 272 | * { 273 | * // Variable declarations. 274 | * mrb_value str1; 275 | * mrb_value str2; 276 | * 277 | * mrb_state *mrb = mrb_open(); 278 | * if (!mrb) 279 | * { 280 | * // handle error 281 | * } 282 | * // Creates new string. 283 | * str1 = mrb_str_new_lit(mrb, "Hello, world!"); 284 | * // Returns a sub-string within the range of 0..2 285 | * str2 = mrb_str_substr(mrb, str1, 0, 2); 286 | * 287 | * // Prints sub-string. 288 | * mrb_p(mrb, str2); 289 | * 290 | * mrb_close(mrb); 291 | * return 0; 292 | * } 293 | * 294 | * Result: 295 | * 296 | * => "He" 297 | * 298 | * @param [mrb_state] mrb The current mruby state. 299 | * @param [mrb_value] str Ruby string. 300 | * @param [mrb_int] beg The beginning point of the sub-string. 301 | * @param [mrb_int] len The end point of the sub-string. 302 | * @return [mrb_value] An object as a Ruby sub-string. 303 | */ 304 | MRB_API mrb_value mrb_str_substr(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len); 305 | 306 | /* 307 | * Returns a Ruby string type. 308 | * 309 | * 310 | * @param [mrb_state] mrb The current mruby state. 311 | * @param [mrb_value] str Ruby string. 312 | * @return [mrb_value] A Ruby string. 313 | */ 314 | MRB_API mrb_value mrb_ensure_string_type(mrb_state *mrb, mrb_value str); 315 | MRB_API mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str); 316 | /* obsolete: use mrb_ensure_string_type() instead */ 317 | MRB_API mrb_value mrb_string_type(mrb_state *mrb, mrb_value str); 318 | 319 | 320 | MRB_API mrb_value mrb_str_new_capa(mrb_state *mrb, size_t capa); 321 | MRB_API mrb_value mrb_str_buf_new(mrb_state *mrb, size_t capa); 322 | 323 | MRB_API const char *mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr); 324 | MRB_API const char *mrb_string_value_ptr(mrb_state *mrb, mrb_value str); 325 | /* 326 | * Returns the length of the Ruby string. 327 | * 328 | * 329 | * @param [mrb_state] mrb The current mruby state. 330 | * @param [mrb_value] str Ruby string. 331 | * @return [mrb_int] The length of the passed in Ruby string. 332 | */ 333 | MRB_API mrb_int mrb_string_value_len(mrb_state *mrb, mrb_value str); 334 | 335 | /* 336 | * Duplicates a string object. 337 | * 338 | * 339 | * @param [mrb_state] mrb The current mruby state. 340 | * @param [mrb_value] str Ruby string. 341 | * @return [mrb_value] Duplicated Ruby string. 342 | */ 343 | MRB_API mrb_value mrb_str_dup(mrb_state *mrb, mrb_value str); 344 | 345 | /* 346 | * Returns a symbol from a passed in Ruby string. 347 | * 348 | * @param [mrb_state] mrb The current mruby state. 349 | * @param [mrb_value] self Ruby string. 350 | * @return [mrb_value] A symbol. 351 | */ 352 | MRB_API mrb_value mrb_str_intern(mrb_state *mrb, mrb_value self); 353 | 354 | MRB_API mrb_value mrb_str_to_inum(mrb_state *mrb, mrb_value str, mrb_int base, mrb_bool badcheck); 355 | MRB_API double mrb_str_to_dbl(mrb_state *mrb, mrb_value str, mrb_bool badcheck); 356 | 357 | /* 358 | * Returns a converted string type. 359 | * For type checking, non converting `mrb_to_str` is recommended. 360 | */ 361 | MRB_API mrb_value mrb_str_to_str(mrb_state *mrb, mrb_value str); 362 | 363 | /* 364 | * Returns true if the strings match and false if the strings don't match. 365 | * 366 | * @param [mrb_state] mrb The current mruby state. 367 | * @param [mrb_value] str1 Ruby string to compare. 368 | * @param [mrb_value] str2 Ruby string to compare. 369 | * @return [mrb_value] boolean value. 370 | */ 371 | MRB_API mrb_bool mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2); 372 | 373 | /* 374 | * Returns a concated string comprised of a Ruby string and a C string. 375 | * 376 | * @param [mrb_state] mrb The current mruby state. 377 | * @param [mrb_value] str Ruby string. 378 | * @param [const char *] ptr A C string. 379 | * @param [size_t] len length of C string. 380 | * @return [mrb_value] A Ruby string. 381 | * @see mrb_str_cat_cstr 382 | */ 383 | MRB_API mrb_value mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr, size_t len); 384 | 385 | /* 386 | * Returns a concated string comprised of a Ruby string and a C string. 387 | * 388 | * @param [mrb_state] mrb The current mruby state. 389 | * @param [mrb_value] str Ruby string. 390 | * @param [const char *] ptr A C string. 391 | * @return [mrb_value] A Ruby string. 392 | * @see mrb_str_cat 393 | */ 394 | MRB_API mrb_value mrb_str_cat_cstr(mrb_state *mrb, mrb_value str, const char *ptr); 395 | MRB_API mrb_value mrb_str_cat_str(mrb_state *mrb, mrb_value str, mrb_value str2); 396 | #define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str, lit, mrb_strlen_lit(lit)) 397 | 398 | /* 399 | * Adds str2 to the end of str1. 400 | */ 401 | MRB_API mrb_value mrb_str_append(mrb_state *mrb, mrb_value str, mrb_value str2); 402 | 403 | /* 404 | * Returns 0 if both Ruby strings are equal. Returns a value < 0 if Ruby str1 is less than Ruby str2. Returns a value > 0 if Ruby str2 is greater than Ruby str1. 405 | */ 406 | MRB_API int mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2); 407 | 408 | /* 409 | * Returns a newly allocated C string from a Ruby string. 410 | * This is an utility function to pass a Ruby string to C library functions. 411 | * 412 | * - Returned string does not contain any NUL characters (but terminator). 413 | * - It raises an ArgumentError exception if Ruby string contains 414 | * NUL characters. 415 | * - Retured string will be freed automatically on next GC. 416 | * - Caller can modify returned string without affecting Ruby string 417 | * (e.g. it can be used for mkstemp(3)). 418 | * 419 | * @param [mrb_state *] mrb The current mruby state. 420 | * @param [mrb_value] str Ruby string. Must be an instance of String. 421 | * @return [char *] A newly allocated C string. 422 | */ 423 | MRB_API char *mrb_str_to_cstr(mrb_state *mrb, mrb_value str); 424 | 425 | mrb_value mrb_str_pool(mrb_state *mrb, mrb_value str); 426 | uint32_t mrb_str_hash(mrb_state *mrb, mrb_value str); 427 | mrb_value mrb_str_dump(mrb_state *mrb, mrb_value str); 428 | 429 | /* 430 | * Returns a printable version of str, surrounded by quote marks, with special characters escaped. 431 | */ 432 | mrb_value mrb_str_inspect(mrb_state *mrb, mrb_value str); 433 | 434 | void mrb_noregexp(mrb_state *mrb, mrb_value self); 435 | void mrb_regexp_check(mrb_state *mrb, mrb_value obj); 436 | 437 | /* For backward compatibility */ 438 | #define mrb_str_cat2(mrb, str, ptr) mrb_str_cat_cstr(mrb, str, ptr) 439 | #define mrb_str_buf_cat(mrb, str, ptr, len) mrb_str_cat(mrb, str, ptr, len) 440 | #define mrb_str_buf_append(mrb, str, str2) mrb_str_cat_str(mrb, str, str2) 441 | 442 | MRB_END_DECL 443 | 444 | #endif /* MRUBY_STRING_H */ 445 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/throw.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/throw.h - mruby exception throwing handler 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRB_THROW_H 8 | #define MRB_THROW_H 9 | 10 | #if defined(MRB_ENABLE_CXX_ABI) 11 | # if !defined(__cplusplus) 12 | # error Trying to use C++ exception handling in C code 13 | # endif 14 | #endif 15 | 16 | #if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus) 17 | 18 | #define MRB_TRY(buf) try { 19 | #define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; } 20 | #define MRB_END_EXC(buf) } 21 | 22 | #define MRB_THROW(buf) throw((buf)->impl) 23 | typedef mrb_int mrb_jmpbuf_impl; 24 | 25 | #else 26 | 27 | #include 28 | 29 | #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) 30 | #define MRB_SETJMP _setjmp 31 | #define MRB_LONGJMP _longjmp 32 | #else 33 | #define MRB_SETJMP setjmp 34 | #define MRB_LONGJMP longjmp 35 | #endif 36 | 37 | #define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) { 38 | #define MRB_CATCH(buf) } else { 39 | #define MRB_END_EXC(buf) } 40 | 41 | #define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1); 42 | #define mrb_jmpbuf_impl jmp_buf 43 | 44 | #endif 45 | 46 | struct mrb_jmpbuf { 47 | mrb_jmpbuf_impl impl; 48 | 49 | #if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus) 50 | static mrb_int jmpbuf_id; 51 | mrb_jmpbuf() : impl(jmpbuf_id++) {} 52 | #endif 53 | }; 54 | 55 | #endif /* MRB_THROW_H */ 56 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/value.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/value.h - mruby value definitions 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VALUE_H 8 | #define MRUBY_VALUE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Value definition functions and macros. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef uint32_t mrb_sym; 18 | typedef uint8_t mrb_bool; 19 | struct mrb_state; 20 | 21 | #if defined(MRB_INT16) && defined(MRB_INT64) 22 | # error "You can't define MRB_INT16 and MRB_INT64 at the same time." 23 | #endif 24 | 25 | #if defined _MSC_VER && _MSC_VER < 1800 26 | # define PRIo64 "llo" 27 | # define PRId64 "lld" 28 | # define PRIx64 "llx" 29 | # define PRIo16 "ho" 30 | # define PRId16 "hd" 31 | # define PRIx16 "hx" 32 | # define PRIo32 "o" 33 | # define PRId32 "d" 34 | # define PRIx32 "x" 35 | #else 36 | # include 37 | #endif 38 | 39 | #if defined(MRB_INT64) 40 | typedef int64_t mrb_int; 41 | # define MRB_INT_BIT 64 42 | # define MRB_INT_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT) 43 | # define MRB_INT_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT) 44 | # define MRB_PRIo PRIo64 45 | # define MRB_PRId PRId64 46 | # define MRB_PRIx PRIx64 47 | #elif defined(MRB_INT16) 48 | typedef int16_t mrb_int; 49 | # define MRB_INT_BIT 16 50 | # define MRB_INT_MIN (INT16_MIN>>MRB_FIXNUM_SHIFT) 51 | # define MRB_INT_MAX (INT16_MAX>>MRB_FIXNUM_SHIFT) 52 | # define MRB_PRIo PRIo16 53 | # define MRB_PRId PRId16 54 | # define MRB_PRIx PRIx16 55 | #else 56 | typedef int32_t mrb_int; 57 | # define MRB_INT_BIT 32 58 | # define MRB_INT_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT) 59 | # define MRB_INT_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT) 60 | # define MRB_PRIo PRIo32 61 | # define MRB_PRId PRId32 62 | # define MRB_PRIx PRIx32 63 | #endif 64 | 65 | 66 | #ifndef MRB_WITHOUT_FLOAT 67 | MRB_API double mrb_float_read(const char*, char**); 68 | #ifdef MRB_USE_FLOAT 69 | typedef float mrb_float; 70 | #else 71 | typedef double mrb_float; 72 | #endif 73 | #endif 74 | 75 | #if defined _MSC_VER && _MSC_VER < 1900 76 | # ifndef __cplusplus 77 | # define inline __inline 78 | # endif 79 | # include 80 | MRB_API int mrb_msvc_vsnprintf(char *s, size_t n, const char *format, va_list arg); 81 | MRB_API int mrb_msvc_snprintf(char *s, size_t n, const char *format, ...); 82 | # define vsnprintf(s, n, format, arg) mrb_msvc_vsnprintf(s, n, format, arg) 83 | # define snprintf(s, n, format, ...) mrb_msvc_snprintf(s, n, format, __VA_ARGS__) 84 | # if _MSC_VER < 1800 && !defined MRB_WITHOUT_FLOAT 85 | # include 86 | # define isfinite(n) _finite(n) 87 | # define isnan _isnan 88 | # define isinf(n) (!_finite(n) && !_isnan(n)) 89 | # define signbit(n) (_copysign(1.0, (n)) < 0.0) 90 | static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000; 91 | # define INFINITY (*(float *)&IEEE754_INFINITY_BITS_SINGLE) 92 | # define NAN ((float)(INFINITY - INFINITY)) 93 | # endif 94 | #endif 95 | 96 | enum mrb_vtype { 97 | MRB_TT_FALSE = 0, /* 0 */ 98 | MRB_TT_FREE, /* 1 */ 99 | MRB_TT_TRUE, /* 2 */ 100 | MRB_TT_FIXNUM, /* 3 */ 101 | MRB_TT_SYMBOL, /* 4 */ 102 | MRB_TT_UNDEF, /* 5 */ 103 | MRB_TT_FLOAT, /* 6 */ 104 | MRB_TT_CPTR, /* 7 */ 105 | MRB_TT_OBJECT, /* 8 */ 106 | MRB_TT_CLASS, /* 9 */ 107 | MRB_TT_MODULE, /* 10 */ 108 | MRB_TT_ICLASS, /* 11 */ 109 | MRB_TT_SCLASS, /* 12 */ 110 | MRB_TT_PROC, /* 13 */ 111 | MRB_TT_ARRAY, /* 14 */ 112 | MRB_TT_HASH, /* 15 */ 113 | MRB_TT_STRING, /* 16 */ 114 | MRB_TT_RANGE, /* 17 */ 115 | MRB_TT_EXCEPTION, /* 18 */ 116 | MRB_TT_FILE, /* 19 */ 117 | MRB_TT_ENV, /* 20 */ 118 | MRB_TT_DATA, /* 21 */ 119 | MRB_TT_FIBER, /* 22 */ 120 | MRB_TT_ISTRUCT, /* 23 */ 121 | MRB_TT_BREAK, /* 24 */ 122 | MRB_TT_MAXDEFINE /* 25 */ 123 | }; 124 | 125 | #include 126 | 127 | #ifdef MRB_DOCUMENTATION_BLOCK 128 | 129 | /** 130 | * @abstract 131 | * MRuby value boxing. 132 | * 133 | * Actual implementation depends on configured boxing type. 134 | * 135 | * @see mruby/boxing_no.h Default boxing representation 136 | * @see mruby/boxing_word.h Word representation 137 | * @see mruby/boxing_nan.h Boxed double representation 138 | */ 139 | typedef void mrb_value; 140 | 141 | #endif 142 | 143 | #if defined(MRB_NAN_BOXING) 144 | #include "boxing_nan.h" 145 | #elif defined(MRB_WORD_BOXING) 146 | #include "boxing_word.h" 147 | #else 148 | #include "boxing_no.h" 149 | #endif 150 | 151 | #ifndef mrb_fixnum_p 152 | #define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM) 153 | #endif 154 | #ifndef mrb_undef_p 155 | #define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF) 156 | #endif 157 | #ifndef mrb_nil_p 158 | #define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !mrb_fixnum(o)) 159 | #endif 160 | #ifndef mrb_bool 161 | #define mrb_bool(o) (mrb_type(o) != MRB_TT_FALSE) 162 | #endif 163 | #ifndef MRB_WITHOUT_FLOAT 164 | #define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT) 165 | #endif 166 | #define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL) 167 | #define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY) 168 | #define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING) 169 | #define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH) 170 | #define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR) 171 | #define mrb_exception_p(o) (mrb_type(o) == MRB_TT_EXCEPTION) 172 | #define mrb_test(o) mrb_bool(o) 173 | MRB_API mrb_bool mrb_regexp_p(struct mrb_state*, mrb_value); 174 | 175 | /* 176 | * Returns a float in Ruby. 177 | */ 178 | #ifndef MRB_WITHOUT_FLOAT 179 | MRB_INLINE mrb_value mrb_float_value(struct mrb_state *mrb, mrb_float f) 180 | { 181 | mrb_value v; 182 | (void) mrb; 183 | SET_FLOAT_VALUE(mrb, v, f); 184 | return v; 185 | } 186 | #endif 187 | 188 | static inline mrb_value 189 | mrb_cptr_value(struct mrb_state *mrb, void *p) 190 | { 191 | mrb_value v; 192 | (void) mrb; 193 | SET_CPTR_VALUE(mrb,v,p); 194 | return v; 195 | } 196 | 197 | /* 198 | * Returns a fixnum in Ruby. 199 | */ 200 | MRB_INLINE mrb_value mrb_fixnum_value(mrb_int i) 201 | { 202 | mrb_value v; 203 | SET_INT_VALUE(v, i); 204 | return v; 205 | } 206 | 207 | static inline mrb_value 208 | mrb_symbol_value(mrb_sym i) 209 | { 210 | mrb_value v; 211 | SET_SYM_VALUE(v, i); 212 | return v; 213 | } 214 | 215 | static inline mrb_value 216 | mrb_obj_value(void *p) 217 | { 218 | mrb_value v; 219 | SET_OBJ_VALUE(v, (struct RBasic*)p); 220 | mrb_assert(p == mrb_ptr(v)); 221 | mrb_assert(((struct RBasic*)p)->tt == mrb_type(v)); 222 | return v; 223 | } 224 | 225 | 226 | /* 227 | * Get a nil mrb_value object. 228 | * 229 | * @return 230 | * nil mrb_value object reference. 231 | */ 232 | MRB_INLINE mrb_value mrb_nil_value(void) 233 | { 234 | mrb_value v; 235 | SET_NIL_VALUE(v); 236 | return v; 237 | } 238 | 239 | /* 240 | * Returns false in Ruby. 241 | */ 242 | MRB_INLINE mrb_value mrb_false_value(void) 243 | { 244 | mrb_value v; 245 | SET_FALSE_VALUE(v); 246 | return v; 247 | } 248 | 249 | /* 250 | * Returns true in Ruby. 251 | */ 252 | MRB_INLINE mrb_value mrb_true_value(void) 253 | { 254 | mrb_value v; 255 | SET_TRUE_VALUE(v); 256 | return v; 257 | } 258 | 259 | static inline mrb_value 260 | mrb_bool_value(mrb_bool boolean) 261 | { 262 | mrb_value v; 263 | SET_BOOL_VALUE(v, boolean); 264 | return v; 265 | } 266 | 267 | static inline mrb_value 268 | mrb_undef_value(void) 269 | { 270 | mrb_value v; 271 | SET_UNDEF_VALUE(v); 272 | return v; 273 | } 274 | 275 | #ifdef MRB_USE_ETEXT_EDATA 276 | #if (defined(__APPLE__) && defined(__MACH__)) 277 | #include 278 | static inline mrb_bool 279 | mrb_ro_data_p(const char *p) 280 | { 281 | return (const char*)get_etext() < p && p < (const char*)get_edata(); 282 | } 283 | #else 284 | extern char _etext[]; 285 | #ifdef MRB_NO_INIT_ARRAY_START 286 | extern char _edata[]; 287 | 288 | static inline mrb_bool 289 | mrb_ro_data_p(const char *p) 290 | { 291 | return _etext < p && p < _edata; 292 | } 293 | #else 294 | extern char __init_array_start[]; 295 | 296 | static inline mrb_bool 297 | mrb_ro_data_p(const char *p) 298 | { 299 | return _etext < p && p < (char*)&__init_array_start; 300 | } 301 | #endif 302 | #endif 303 | #else 304 | # define mrb_ro_data_p(p) FALSE 305 | #endif 306 | 307 | MRB_END_DECL 308 | 309 | #endif /* MRUBY_VALUE_H */ 310 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/variable.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/variable.h - mruby variables 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VARIABLE_H 8 | #define MRUBY_VARIABLE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Functions to access mruby variables. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef struct global_variable { 18 | int counter; 19 | mrb_value *data; 20 | mrb_value (*getter)(void); 21 | void (*setter)(void); 22 | /* void (*marker)(); */ 23 | /* int block_trace; */ 24 | /* struct trace_var *trace; */ 25 | } global_variable; 26 | 27 | struct global_entry { 28 | global_variable *var; 29 | mrb_sym id; 30 | }; 31 | 32 | mrb_value mrb_vm_special_get(mrb_state*, mrb_sym); 33 | void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value); 34 | mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym); 35 | void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value); 36 | mrb_value mrb_vm_const_get(mrb_state*, mrb_sym); 37 | void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value); 38 | MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym); 39 | MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value); 40 | MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym); 41 | MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym); 42 | 43 | MRB_API mrb_bool mrb_iv_name_sym_p(mrb_state *mrb, mrb_sym sym); 44 | MRB_API void mrb_iv_name_sym_check(mrb_state *mrb, mrb_sym sym); 45 | MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym); 46 | MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v); 47 | MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym); 48 | MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym); 49 | MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v); 50 | MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym); 51 | MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym); 52 | MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src); 53 | MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id); 54 | 55 | /** 56 | * Get a global variable. Will return nil if the var does not exist 57 | * 58 | * Example: 59 | * 60 | * !!!ruby 61 | * # Ruby style 62 | * var = $value 63 | * 64 | * !!!c 65 | * // C style 66 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 67 | * mrb_value var = mrb_gv_get(mrb, sym); 68 | * 69 | * @param mrb The mruby state reference 70 | * @param sym The name of the global variable 71 | * @return The value of that global variable. May be nil 72 | */ 73 | MRB_API mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym); 74 | 75 | /** 76 | * Set a global variable 77 | * 78 | * Example: 79 | * 80 | * !!!ruby 81 | * # Ruby style 82 | * $value = "foo" 83 | * 84 | * !!!c 85 | * // C style 86 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 87 | * mrb_gv_set(mrb, sym, mrb_str_new_lit("foo")); 88 | * 89 | * @param mrb The mruby state reference 90 | * @param sym The name of the global variable 91 | * @param val The value of the global variable 92 | */ 93 | MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val); 94 | 95 | /** 96 | * Remove a global variable. 97 | * 98 | * Example: 99 | * 100 | * !!!ruby 101 | * # Ruby style 102 | * $value = nil 103 | * 104 | * !!!c 105 | * // C style 106 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 107 | * mrb_gv_remove(mrb, sym); 108 | * 109 | * @param mrb The mruby state reference 110 | * @param sym The name of the global variable 111 | * @param val The value of the global variable 112 | */ 113 | MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym); 114 | 115 | MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym); 116 | MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v); 117 | MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v); 118 | MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym); 119 | mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*); 120 | mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod); 121 | mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self); 122 | mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value); 123 | mrb_value mrb_mod_class_variables(mrb_state*, mrb_value); 124 | mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym); 125 | mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym); 126 | 127 | /* GC functions */ 128 | void mrb_gc_mark_gv(mrb_state*); 129 | void mrb_gc_free_gv(mrb_state*); 130 | void mrb_gc_mark_iv(mrb_state*, struct RObject*); 131 | size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*); 132 | void mrb_gc_free_iv(mrb_state*, struct RObject*); 133 | 134 | MRB_END_DECL 135 | 136 | #endif /* MRUBY_VARIABLE_H */ 137 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Headers/mruby/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/version.h - mruby version definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VERSION_H 8 | #define MRUBY_VERSION_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * mruby version definition macros 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | /* 18 | * A passed in expression. 19 | */ 20 | #define MRB_STRINGIZE0(expr) #expr 21 | 22 | /* 23 | * Passes in an expression to MRB_STRINGIZE0. 24 | */ 25 | #define MRB_STRINGIZE(expr) MRB_STRINGIZE0(expr) 26 | 27 | /* 28 | * The version of Ruby used by mruby. 29 | */ 30 | #define MRUBY_RUBY_VERSION "2.0" 31 | 32 | /* 33 | * Ruby engine. 34 | */ 35 | #define MRUBY_RUBY_ENGINE "mruby" 36 | 37 | /* 38 | * Major release version number. 39 | */ 40 | #define MRUBY_RELEASE_MAJOR 2 41 | 42 | /* 43 | * Minor release version number. 44 | */ 45 | #define MRUBY_RELEASE_MINOR 0 46 | 47 | /* 48 | * Tiny release version number. 49 | */ 50 | #define MRUBY_RELEASE_TEENY 0 51 | 52 | /* 53 | * The mruby version. 54 | */ 55 | #define MRUBY_VERSION MRB_STRINGIZE(MRUBY_RELEASE_MAJOR) "." MRB_STRINGIZE(MRUBY_RELEASE_MINOR) "." MRB_STRINGIZE(MRUBY_RELEASE_TEENY) 56 | 57 | /* 58 | * Release number. 59 | */ 60 | #define MRUBY_RELEASE_NO (MRUBY_RELEASE_MAJOR * 100 * 100 + MRUBY_RELEASE_MINOR * 100 + MRUBY_RELEASE_TEENY) 61 | 62 | /* 63 | * Release year. 64 | */ 65 | #define MRUBY_RELEASE_YEAR 2018 66 | 67 | /* 68 | * Release month. 69 | */ 70 | #define MRUBY_RELEASE_MONTH 12 71 | 72 | /* 73 | * Release day. 74 | */ 75 | #define MRUBY_RELEASE_DAY 11 76 | 77 | /* 78 | * Release date as a string. 79 | */ 80 | #define MRUBY_RELEASE_DATE MRB_STRINGIZE(MRUBY_RELEASE_YEAR) "-" MRB_STRINGIZE(MRUBY_RELEASE_MONTH) "-" MRB_STRINGIZE(MRUBY_RELEASE_DAY) 81 | 82 | /* 83 | * The year mruby was first created. 84 | */ 85 | #define MRUBY_BIRTH_YEAR 2010 86 | 87 | /* 88 | * MRuby's authors. 89 | */ 90 | #define MRUBY_AUTHOR "mruby developers" 91 | 92 | /* 93 | * mruby's version, and release date. 94 | */ 95 | #define MRUBY_DESCRIPTION \ 96 | "mruby " MRUBY_VERSION \ 97 | " (" MRUBY_RELEASE_DATE ") " \ 98 | 99 | /* 100 | * mruby's copyright information. 101 | */ 102 | #define MRUBY_COPYRIGHT \ 103 | "mruby - Copyright (c) " \ 104 | MRB_STRINGIZE(MRUBY_BIRTH_YEAR)"-" \ 105 | MRB_STRINGIZE(MRUBY_RELEASE_YEAR)" " \ 106 | MRUBY_AUTHOR \ 107 | 108 | MRB_END_DECL 109 | 110 | #endif /* MRUBY_VERSION_H */ 111 | -------------------------------------------------------------------------------- /ios/MRuby.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | MRuby 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | FMWK 13 | CFBundleIdentifier 14 | MRuby.MRuby 15 | CFBundleExecutable 16 | MRuby 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /ios/MRuby.framework/MRuby: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby2d/mruby-frameworks/83906f0c55eba587a5b1a95e05a14dda1c31acf0/ios/MRuby.framework/MRuby -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mrbconf.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mrbconf.h - mruby core configuration 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBYCONF_H 8 | #define MRUBYCONF_H 9 | 10 | #include 11 | #include 12 | 13 | /* architecture selection: */ 14 | /* specify -DMRB_32BIT or -DMRB_64BIT to override */ 15 | #if !defined(MRB_32BIT) && !defined(MRB_64BIT) 16 | #if UINT64_MAX == SIZE_MAX 17 | #define MRB_64BIT 18 | #else 19 | #define MRB_32BIT 20 | #endif 21 | #endif 22 | 23 | #if defined(MRB_32BIT) && defined(MRB_64BIT) 24 | #error Cannot build for 32 and 64 bit architecture at the same time 25 | #endif 26 | 27 | /* configuration options: */ 28 | /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ 29 | //#define MRB_USE_FLOAT 30 | 31 | /* exclude floating point numbers */ 32 | //#define MRB_WITHOUT_FLOAT 33 | 34 | /* add -DMRB_METHOD_CACHE to use method cache to improve performance */ 35 | //#define MRB_METHOD_CACHE 36 | /* size of the method cache (need to be the power of 2) */ 37 | //#define MRB_METHOD_CACHE_SIZE (1<<7) 38 | 39 | /* add -DMRB_METHOD_TABLE_INLINE to reduce the size of method table */ 40 | /* MRB_METHOD_TABLE_INLINE requires LSB of function pointers to be zero */ 41 | /* you might need to specify --falign-functions=n (where n>1) */ 42 | //#define MRB_METHOD_TABLE_INLINE 43 | 44 | /* add -DMRB_INT16 to use 16bit integer for mrb_int; conflict with MRB_INT64 */ 45 | //#define MRB_INT16 46 | 47 | /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT16 */ 48 | //#define MRB_INT64 49 | 50 | /* if no specific integer type is chosen */ 51 | #if !defined(MRB_INT16) && !defined(MRB_INT32) && !defined(MRB_INT64) 52 | # if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING) 53 | /* Use 64bit integers on 64bit architecture (without MRB_NAN_BOXING) */ 54 | # define MRB_INT64 55 | # else 56 | /* Otherwise use 32bit integers */ 57 | # define MRB_INT32 58 | # endif 59 | #endif 60 | 61 | /* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT and MRB_WITHOUT_FLOAT */ 62 | //#define MRB_NAN_BOXING 63 | 64 | /* define on big endian machines; used by MRB_NAN_BOXING */ 65 | //#define MRB_ENDIAN_BIG 66 | 67 | /* represent mrb_value as a word (natural unit of data for the processor) */ 68 | //#define MRB_WORD_BOXING 69 | 70 | /* string class to handle UTF-8 encoding */ 71 | //#define MRB_UTF8_STRING 72 | 73 | /* argv max size in mrb_funcall */ 74 | //#define MRB_FUNCALL_ARGC_MAX 16 75 | 76 | /* number of object per heap page */ 77 | //#define MRB_HEAP_PAGE_SIZE 1024 78 | 79 | /* if _etext and _edata available, mruby can reduce memory used by symbols */ 80 | //#define MRB_USE_ETEXT_EDATA 81 | 82 | /* do not use __init_array_start to determine readonly data section; 83 | effective only when MRB_USE_ETEXT_EDATA is defined */ 84 | //#define MRB_NO_INIT_ARRAY_START 85 | 86 | /* turn off generational GC by default */ 87 | //#define MRB_GC_TURN_OFF_GENERATIONAL 88 | 89 | /* default size of khash table bucket */ 90 | //#define KHASH_DEFAULT_SIZE 32 91 | 92 | /* allocated memory address alignment */ 93 | //#define POOL_ALIGNMENT 4 94 | 95 | /* page size of memory pool */ 96 | //#define POOL_PAGE_SIZE 16000 97 | 98 | /* initial minimum size for string buffer */ 99 | //#define MRB_STR_BUF_MIN_SIZE 128 100 | 101 | /* arena size */ 102 | //#define MRB_GC_ARENA_SIZE 100 103 | 104 | /* fixed size GC arena */ 105 | //#define MRB_GC_FIXED_ARENA 106 | 107 | /* state atexit stack size */ 108 | //#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5 109 | 110 | /* fixed size state atexit stack */ 111 | //#define MRB_FIXED_STATE_ATEXIT_STACK 112 | 113 | /* -DMRB_DISABLE_XXXX to drop following features */ 114 | //#define MRB_DISABLE_STDIO /* use of stdio */ 115 | 116 | /* -DMRB_ENABLE_XXXX to enable following features */ 117 | //#define MRB_ENABLE_DEBUG_HOOK /* hooks for debugger */ 118 | 119 | /* end of configuration */ 120 | 121 | /* define MRB_DISABLE_XXXX from DISABLE_XXX (for compatibility) */ 122 | #ifdef DISABLE_STDIO 123 | #define MRB_DISABLE_STDIO 124 | #endif 125 | 126 | /* define MRB_ENABLE_XXXX from ENABLE_XXX (for compatibility) */ 127 | #ifdef ENABLE_DEBUG 128 | #define MRB_ENABLE_DEBUG_HOOK 129 | #endif 130 | 131 | #ifndef MRB_DISABLE_STDIO 132 | # include 133 | #endif 134 | 135 | #ifndef FALSE 136 | # define FALSE 0 137 | #endif 138 | 139 | #ifndef TRUE 140 | # define TRUE 1 141 | #endif 142 | 143 | #endif /* MRUBYCONF_H */ 144 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/array.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/array.h - Array class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ARRAY_H 8 | #define MRUBY_ARRAY_H 9 | 10 | #include "common.h" 11 | 12 | /* 13 | * Array class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | 18 | typedef struct mrb_shared_array { 19 | int refcnt; 20 | mrb_int len; 21 | mrb_value *ptr; 22 | } mrb_shared_array; 23 | 24 | #define MRB_ARY_EMBED_LEN_MAX ((mrb_int)(sizeof(void*)*3/sizeof(mrb_value))) 25 | struct RArray { 26 | MRB_OBJECT_HEADER; 27 | union { 28 | struct { 29 | mrb_int len; 30 | union { 31 | mrb_int capa; 32 | mrb_shared_array *shared; 33 | } aux; 34 | mrb_value *ptr; 35 | } heap; 36 | mrb_value embed[MRB_ARY_EMBED_LEN_MAX]; 37 | } as; 38 | }; 39 | 40 | #define mrb_ary_ptr(v) ((struct RArray*)(mrb_ptr(v))) 41 | #define mrb_ary_value(p) mrb_obj_value((void*)(p)) 42 | #define RARRAY(v) ((struct RArray*)(mrb_ptr(v))) 43 | 44 | #define MRB_ARY_EMBED_MASK 7 45 | #define ARY_EMBED_P(a) ((a)->flags & MRB_ARY_EMBED_MASK) 46 | #define ARY_UNSET_EMBED_FLAG(a) ((a)->flags &= ~(MRB_ARY_EMBED_MASK)) 47 | #define ARY_EMBED_LEN(a) ((mrb_int)(((a)->flags & MRB_ARY_EMBED_MASK) - 1)) 48 | #define ARY_SET_EMBED_LEN(a,len) ((a)->flags = ((a)->flags&~MRB_ARY_EMBED_MASK) | ((uint32_t)(len) + 1)) 49 | #define ARY_EMBED_PTR(a) (&((a)->as.embed[0])) 50 | 51 | #define ARY_LEN(a) (ARY_EMBED_P(a)?ARY_EMBED_LEN(a):(a)->as.heap.len) 52 | #define ARY_PTR(a) (ARY_EMBED_P(a)?ARY_EMBED_PTR(a):(a)->as.heap.ptr) 53 | #define RARRAY_LEN(a) ARY_LEN(RARRAY(a)) 54 | #define RARRAY_PTR(a) ARY_PTR(RARRAY(a)) 55 | #define ARY_SET_LEN(a,n) do {\ 56 | if (ARY_EMBED_P(a)) {\ 57 | mrb_assert((n) <= MRB_ARY_EMBED_LEN_MAX); \ 58 | ARY_SET_EMBED_LEN(a,n);\ 59 | }\ 60 | else\ 61 | (a)->as.heap.len = (n);\ 62 | } while (0) 63 | #define ARY_CAPA(a) (ARY_EMBED_P(a)?MRB_ARY_EMBED_LEN_MAX:(a)->as.heap.aux.capa) 64 | #define MRB_ARY_SHARED 256 65 | #define ARY_SHARED_P(a) ((a)->flags & MRB_ARY_SHARED) 66 | #define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED) 67 | #define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED) 68 | 69 | void mrb_ary_decref(mrb_state*, mrb_shared_array*); 70 | MRB_API void mrb_ary_modify(mrb_state*, struct RArray*); 71 | MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int); 72 | 73 | /* 74 | * Initializes a new array. 75 | * 76 | * Equivalent to: 77 | * 78 | * Array.new 79 | * 80 | * @param mrb The mruby state reference. 81 | * @return The initialized array. 82 | */ 83 | MRB_API mrb_value mrb_ary_new(mrb_state *mrb); 84 | 85 | /* 86 | * Initializes a new array with initial values 87 | * 88 | * Equivalent to: 89 | * 90 | * Array[value1, value2, ...] 91 | * 92 | * @param mrb The mruby state reference. 93 | * @param size The numer of values. 94 | * @param vals The actual values. 95 | * @return The initialized array. 96 | */ 97 | MRB_API mrb_value mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals); 98 | 99 | /* 100 | * Initializes a new array with two initial values 101 | * 102 | * Equivalent to: 103 | * 104 | * Array[car, cdr] 105 | * 106 | * @param mrb The mruby state reference. 107 | * @param car The first value. 108 | * @param cdr The second value. 109 | * @return The initialized array. 110 | */ 111 | MRB_API mrb_value mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr); 112 | 113 | /* 114 | * Concatenate two arrays. The target array will be modified 115 | * 116 | * Equivalent to: 117 | * ary.concat(other) 118 | * 119 | * @param mrb The mruby state reference. 120 | * @param self The target array. 121 | * @param other The array that will be concatenated to self. 122 | */ 123 | MRB_API void mrb_ary_concat(mrb_state *mrb, mrb_value self, mrb_value other); 124 | 125 | /* 126 | * Create an array from the input. It tries calling to_a on the 127 | * value. If value does not respond to that, it creates a new 128 | * array with just this value. 129 | * 130 | * @param mrb The mruby state reference. 131 | * @param value The value to change into an array. 132 | * @return An array representation of value. 133 | */ 134 | MRB_API mrb_value mrb_ary_splat(mrb_state *mrb, mrb_value value); 135 | 136 | /* 137 | * Pushes value into array. 138 | * 139 | * Equivalent to: 140 | * 141 | * ary << value 142 | * 143 | * @param mrb The mruby state reference. 144 | * @param ary The array in which the value will be pushed 145 | * @param value The value to be pushed into array 146 | */ 147 | MRB_API void mrb_ary_push(mrb_state *mrb, mrb_value array, mrb_value value); 148 | 149 | /* 150 | * Pops the last element from the array. 151 | * 152 | * Equivalent to: 153 | * 154 | * ary.pop 155 | * 156 | * @param mrb The mruby state reference. 157 | * @param ary The array from which the value will be popped. 158 | * @return The popped value. 159 | */ 160 | MRB_API mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary); 161 | 162 | /* 163 | * Returns a reference to an element of the array on the given index. 164 | * 165 | * Equivalent to: 166 | * 167 | * ary[n] 168 | * 169 | * @param mrb The mruby state reference. 170 | * @param ary The target array. 171 | * @param n The array index being referenced 172 | * @return The referenced value. 173 | */ 174 | MRB_API mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n); 175 | 176 | /* 177 | * Sets a value on an array at the given index 178 | * 179 | * Equivalent to: 180 | * 181 | * ary[n] = val 182 | * 183 | * @param mrb The mruby state reference. 184 | * @param ary The target array. 185 | * @param n The array index being referenced. 186 | * @param val The value being setted. 187 | */ 188 | MRB_API void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val); 189 | 190 | /* 191 | * Replace the array with another array 192 | * 193 | * Equivalent to: 194 | * 195 | * ary.replace(other) 196 | * 197 | * @param mrb The mruby state reference 198 | * @param self The target array. 199 | * @param other The array to replace it with. 200 | */ 201 | MRB_API void mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other); 202 | MRB_API mrb_value mrb_ensure_array_type(mrb_state *mrb, mrb_value self); 203 | MRB_API mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self); 204 | 205 | /* 206 | * Unshift an element into the array 207 | * 208 | * Equivalent to: 209 | * 210 | * ary.unshift(item) 211 | * 212 | * @param mrb The mruby state reference. 213 | * @param self The target array. 214 | * @param item The item to unshift. 215 | */ 216 | MRB_API mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item); 217 | 218 | /* 219 | * Get nth element in the array 220 | * 221 | * Equivalent to: 222 | * 223 | * ary[offset] 224 | * 225 | * @param ary The target array. 226 | * @param offset The element position (negative counts from the tail). 227 | */ 228 | MRB_API mrb_value mrb_ary_entry(mrb_value ary, mrb_int offset); 229 | 230 | /* 231 | * Shifts the first element from the array. 232 | * 233 | * Equivalent to: 234 | * 235 | * ary.shift 236 | * 237 | * @param mrb The mruby state reference. 238 | * @param self The array from which the value will be shifted. 239 | * @return The shifted value. 240 | */ 241 | MRB_API mrb_value mrb_ary_shift(mrb_state *mrb, mrb_value self); 242 | 243 | /* 244 | * Removes all elements from the array 245 | * 246 | * Equivalent to: 247 | * 248 | * ary.clear 249 | * 250 | * @param mrb The mruby state reference. 251 | * @param self The target array. 252 | * @return self 253 | */ 254 | MRB_API mrb_value mrb_ary_clear(mrb_state *mrb, mrb_value self); 255 | 256 | /* 257 | * Join the array elements together in a string 258 | * 259 | * Equivalent to: 260 | * 261 | * ary.join(sep="") 262 | * 263 | * @param mrb The mruby state reference. 264 | * @param ary The target array 265 | * @param sep The separater, can be NULL 266 | */ 267 | MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep); 268 | 269 | /* 270 | * Update the capacity of the array 271 | * 272 | * @param mrb The mruby state reference. 273 | * @param ary The target array. 274 | * @param new_len The new capacity of the array 275 | */ 276 | MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len); 277 | 278 | MRB_END_DECL 279 | 280 | #endif /* MRUBY_ARRAY_H */ 281 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/boxing_nan.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_nan.h - nan boxing mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_NAN_H 8 | #define MRUBY_BOXING_NAN_H 9 | 10 | #ifdef MRB_USE_FLOAT 11 | # error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT conflict <<---- 12 | #endif 13 | 14 | #ifdef MRB_WITHOUT_FLOAT 15 | # error ---->> MRB_NAN_BOXING and MRB_WITHOUT_FLOAT conflict <<---- 16 | #endif 17 | 18 | #ifdef MRB_INT64 19 | # error ---->> MRB_NAN_BOXING and MRB_INT64 conflict <<---- 20 | #endif 21 | 22 | #define MRB_FIXNUM_SHIFT 0 23 | #define MRB_TT_HAS_BASIC MRB_TT_OBJECT 24 | 25 | #ifdef MRB_ENDIAN_BIG 26 | #define MRB_ENDIAN_LOHI(a,b) a b 27 | #else 28 | #define MRB_ENDIAN_LOHI(a,b) b a 29 | #endif 30 | 31 | /* value representation by nan-boxing: 32 | * float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 33 | * object: 111111111111TTTT TTPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP 34 | * int : 1111111111110001 0000000000000000 IIIIIIIIIIIIIIII IIIIIIIIIIIIIIII 35 | * sym : 1111111111110001 0100000000000000 SSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSS 36 | * In order to get enough bit size to save TT, all pointers are shifted 2 bits 37 | * in the right direction. Also, TTTTTT is the mrb_vtype + 1; 38 | */ 39 | typedef struct mrb_value { 40 | union { 41 | mrb_float f; 42 | union { 43 | void *p; 44 | struct { 45 | MRB_ENDIAN_LOHI( 46 | uint32_t ttt; 47 | ,union { 48 | mrb_int i; 49 | mrb_sym sym; 50 | }; 51 | ) 52 | }; 53 | } value; 54 | }; 55 | } mrb_value; 56 | 57 | #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) 58 | 59 | #define mrb_tt(o) ((enum mrb_vtype)(((o).value.ttt & 0xfc000)>>14)-1) 60 | #define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT) 61 | #define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)((o).value.p)))<<2)) 62 | #define mrb_float(o) (o).f 63 | #define mrb_cptr(o) mrb_ptr(o) 64 | #define mrb_fixnum(o) (o).value.i 65 | #define mrb_symbol(o) (o).value.sym 66 | 67 | #ifdef MRB_64BIT 68 | #define BOXNAN_SHIFT_LONG_POINTER(v) (((uintptr_t)(v)>>34)&0x3fff) 69 | #else 70 | #define BOXNAN_SHIFT_LONG_POINTER(v) 0 71 | #endif 72 | 73 | #define BOXNAN_SET_VALUE(o, tt, attr, v) do {\ 74 | (o).attr = (v);\ 75 | (o).value.ttt = 0xfff00000 | (((tt)+1)<<14);\ 76 | } while (0) 77 | 78 | #define BOXNAN_SET_OBJ_VALUE(o, tt, v) do {\ 79 | (o).value.p = (void*)((uintptr_t)(v)>>2);\ 80 | (o).value.ttt = (0xfff00000|(((tt)+1)<<14)|BOXNAN_SHIFT_LONG_POINTER(v));\ 81 | } while (0) 82 | 83 | #define SET_FLOAT_VALUE(mrb,r,v) do { \ 84 | if (v != v) { \ 85 | (r).value.ttt = 0x7ff80000; \ 86 | (r).value.i = 0; \ 87 | } \ 88 | else { \ 89 | (r).f = v; \ 90 | }} while(0) 91 | 92 | #define SET_NIL_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 93 | #define SET_FALSE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 94 | #define SET_TRUE_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 95 | #define SET_BOOL_VALUE(r,b) BOXNAN_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 96 | #define SET_INT_VALUE(r,n) BOXNAN_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 97 | #define SET_SYM_VALUE(r,v) BOXNAN_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 98 | #define SET_OBJ_VALUE(r,v) BOXNAN_SET_OBJ_VALUE(r, (((struct RObject*)(v))->tt), (v)) 99 | #define SET_CPTR_VALUE(mrb,r,v) BOXNAN_SET_OBJ_VALUE(r, MRB_TT_CPTR, v) 100 | #define SET_UNDEF_VALUE(r) BOXNAN_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 101 | 102 | #endif /* MRUBY_BOXING_NAN_H */ 103 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/boxing_no.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_no.h - unboxed mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_NO_H 8 | #define MRUBY_BOXING_NO_H 9 | 10 | #define MRB_FIXNUM_SHIFT 0 11 | #define MRB_TT_HAS_BASIC MRB_TT_OBJECT 12 | 13 | typedef struct mrb_value { 14 | union { 15 | #ifndef MRB_WITHOUT_FLOAT 16 | mrb_float f; 17 | #endif 18 | void *p; 19 | mrb_int i; 20 | mrb_sym sym; 21 | } value; 22 | enum mrb_vtype tt; 23 | } mrb_value; 24 | 25 | #ifndef MRB_WITHOUT_FLOAT 26 | #define mrb_float_pool(mrb,f) mrb_float_value(mrb,f) 27 | #endif 28 | 29 | #define mrb_ptr(o) (o).value.p 30 | #define mrb_cptr(o) mrb_ptr(o) 31 | #ifndef MRB_WITHOUT_FLOAT 32 | #define mrb_float(o) (o).value.f 33 | #endif 34 | #define mrb_fixnum(o) (o).value.i 35 | #define mrb_symbol(o) (o).value.sym 36 | #define mrb_type(o) (o).tt 37 | 38 | #define BOXNIX_SET_VALUE(o, ttt, attr, v) do {\ 39 | (o).tt = ttt;\ 40 | (o).attr = v;\ 41 | } while (0) 42 | 43 | #define SET_NIL_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 44 | #define SET_FALSE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 45 | #define SET_TRUE_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 46 | #define SET_BOOL_VALUE(r,b) BOXNIX_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 47 | #define SET_INT_VALUE(r,n) BOXNIX_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 48 | #ifndef MRB_WITHOUT_FLOAT 49 | #define SET_FLOAT_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v)) 50 | #endif 51 | #define SET_SYM_VALUE(r,v) BOXNIX_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 52 | #define SET_OBJ_VALUE(r,v) BOXNIX_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v)) 53 | #define SET_CPTR_VALUE(mrb,r,v) BOXNIX_SET_VALUE(r, MRB_TT_CPTR, value.p, v) 54 | #define SET_UNDEF_VALUE(r) BOXNIX_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 55 | 56 | #endif /* MRUBY_BOXING_NO_H */ 57 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/boxing_word.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/boxing_word.h - word boxing mrb_value definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_BOXING_WORD_H 8 | #define MRUBY_BOXING_WORD_H 9 | 10 | #if defined(MRB_INT16) 11 | # error MRB_INT16 is too small for MRB_WORD_BOXING. 12 | #endif 13 | 14 | #if defined(MRB_INT64) && !defined(MRB_64BIT) 15 | #error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode. 16 | #endif 17 | 18 | #ifndef MRB_WITHOUT_FLOAT 19 | struct RFloat { 20 | MRB_OBJECT_HEADER; 21 | mrb_float f; 22 | }; 23 | #endif 24 | 25 | struct RCptr { 26 | MRB_OBJECT_HEADER; 27 | void *p; 28 | }; 29 | 30 | #define MRB_FIXNUM_SHIFT 1 31 | #ifdef MRB_WITHOUT_FLOAT 32 | #define MRB_TT_HAS_BASIC MRB_TT_CPTR 33 | #else 34 | #define MRB_TT_HAS_BASIC MRB_TT_FLOAT 35 | #endif 36 | 37 | enum mrb_special_consts { 38 | MRB_Qnil = 0, 39 | MRB_Qfalse = 2, 40 | MRB_Qtrue = 4, 41 | MRB_Qundef = 6, 42 | }; 43 | 44 | #define MRB_FIXNUM_FLAG 0x01 45 | #define MRB_SYMBOL_FLAG 0x0e 46 | #define MRB_SPECIAL_SHIFT 8 47 | 48 | #if defined(MRB_64BIT) 49 | #define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT) 50 | #define MRB_SYMBOL_MAX UINT32_MAX 51 | #else 52 | #define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT - MRB_SPECIAL_SHIFT) 53 | #define MRB_SYMBOL_MAX (UINT32_MAX >> MRB_SPECIAL_SHIFT) 54 | #endif 55 | 56 | typedef union mrb_value { 57 | union { 58 | void *p; 59 | struct { 60 | unsigned int i_flag : MRB_FIXNUM_SHIFT; 61 | mrb_int i : (MRB_INT_BIT - MRB_FIXNUM_SHIFT); 62 | }; 63 | struct { 64 | unsigned int sym_flag : MRB_SPECIAL_SHIFT; 65 | mrb_sym sym : MRB_SYMBOL_BITSIZE; 66 | }; 67 | struct RBasic *bp; 68 | #ifndef MRB_WITHOUT_FLOAT 69 | struct RFloat *fp; 70 | #endif 71 | struct RCptr *vp; 72 | } value; 73 | unsigned long w; 74 | } mrb_value; 75 | 76 | MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*); 77 | #ifndef MRB_WITHOUT_FLOAT 78 | MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float); 79 | MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float); 80 | #endif 81 | 82 | #ifndef MRB_WITHOUT_FLOAT 83 | #define mrb_float_pool(mrb,f) mrb_word_boxing_float_pool(mrb,f) 84 | #endif 85 | 86 | #define mrb_ptr(o) (o).value.p 87 | #define mrb_cptr(o) (o).value.vp->p 88 | #ifndef MRB_WITHOUT_FLOAT 89 | #define mrb_float(o) (o).value.fp->f 90 | #endif 91 | #define mrb_fixnum(o) ((mrb_int)(o).value.i) 92 | #define mrb_symbol(o) (o).value.sym 93 | 94 | static inline enum mrb_vtype 95 | mrb_type(mrb_value o) 96 | { 97 | switch (o.w) { 98 | case MRB_Qfalse: 99 | case MRB_Qnil: 100 | return MRB_TT_FALSE; 101 | case MRB_Qtrue: 102 | return MRB_TT_TRUE; 103 | case MRB_Qundef: 104 | return MRB_TT_UNDEF; 105 | } 106 | if (o.value.i_flag == MRB_FIXNUM_FLAG) { 107 | return MRB_TT_FIXNUM; 108 | } 109 | if (o.value.sym_flag == MRB_SYMBOL_FLAG) { 110 | return MRB_TT_SYMBOL; 111 | } 112 | return o.value.bp->tt; 113 | } 114 | 115 | #define mrb_bool(o) ((o).w != MRB_Qnil && (o).w != MRB_Qfalse) 116 | #define mrb_fixnum_p(o) ((o).value.i_flag == MRB_FIXNUM_FLAG) 117 | #define mrb_undef_p(o) ((o).w == MRB_Qundef) 118 | #define mrb_nil_p(o) ((o).w == MRB_Qnil) 119 | 120 | #define BOXWORD_SET_VALUE(o, ttt, attr, v) do { \ 121 | switch (ttt) {\ 122 | case MRB_TT_FALSE: (o).w = (v) ? MRB_Qfalse : MRB_Qnil; break;\ 123 | case MRB_TT_TRUE: (o).w = MRB_Qtrue; break;\ 124 | case MRB_TT_UNDEF: (o).w = MRB_Qundef; break;\ 125 | case MRB_TT_FIXNUM: (o).w = 0;(o).value.i_flag = MRB_FIXNUM_FLAG; (o).attr = (v); break;\ 126 | case MRB_TT_SYMBOL: (o).w = 0;(o).value.sym_flag = MRB_SYMBOL_FLAG; (o).attr = (v); break;\ 127 | default: (o).w = 0; (o).attr = (v); if ((o).value.bp) (o).value.bp->tt = ttt; break;\ 128 | }\ 129 | } while (0) 130 | 131 | #ifndef MRB_WITHOUT_FLOAT 132 | #define SET_FLOAT_VALUE(mrb,r,v) r = mrb_word_boxing_float_value(mrb, v) 133 | #endif 134 | #define SET_CPTR_VALUE(mrb,r,v) r = mrb_word_boxing_cptr_value(mrb, v) 135 | #define SET_NIL_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_FALSE, value.i, 0) 136 | #define SET_FALSE_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_FALSE, value.i, 1) 137 | #define SET_TRUE_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_TRUE, value.i, 1) 138 | #define SET_BOOL_VALUE(r,b) BOXWORD_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1) 139 | #define SET_INT_VALUE(r,n) BOXWORD_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n)) 140 | #define SET_SYM_VALUE(r,v) BOXWORD_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v)) 141 | #define SET_OBJ_VALUE(r,v) BOXWORD_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v)) 142 | #define SET_UNDEF_VALUE(r) BOXWORD_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0) 143 | 144 | #endif /* MRUBY_BOXING_WORD_H */ 145 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/class.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/class.h - Class class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_CLASS_H 8 | #define MRUBY_CLASS_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Class class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | struct RClass { 18 | MRB_OBJECT_HEADER; 19 | struct iv_tbl *iv; 20 | struct kh_mt *mt; 21 | struct RClass *super; 22 | }; 23 | 24 | #define mrb_class_ptr(v) ((struct RClass*)(mrb_ptr(v))) 25 | 26 | static inline struct RClass* 27 | mrb_class(mrb_state *mrb, mrb_value v) 28 | { 29 | switch (mrb_type(v)) { 30 | case MRB_TT_FALSE: 31 | if (mrb_fixnum(v)) 32 | return mrb->false_class; 33 | return mrb->nil_class; 34 | case MRB_TT_TRUE: 35 | return mrb->true_class; 36 | case MRB_TT_SYMBOL: 37 | return mrb->symbol_class; 38 | case MRB_TT_FIXNUM: 39 | return mrb->fixnum_class; 40 | #ifndef MRB_WITHOUT_FLOAT 41 | case MRB_TT_FLOAT: 42 | return mrb->float_class; 43 | #endif 44 | case MRB_TT_CPTR: 45 | return mrb->object_class; 46 | case MRB_TT_ENV: 47 | return NULL; 48 | default: 49 | return mrb_obj_ptr(v)->c; 50 | } 51 | } 52 | 53 | /* flags: 54 | 20: frozen 55 | 19: is_prepended 56 | 18: is_origin 57 | 17: is_inherited (used by method cache) 58 | 16: unused 59 | 0-15: instance type 60 | */ 61 | #define MRB_FL_CLASS_IS_PREPENDED (1 << 19) 62 | #define MRB_FL_CLASS_IS_ORIGIN (1 << 18) 63 | #define MRB_CLASS_ORIGIN(c) do {\ 64 | if (c->flags & MRB_FL_CLASS_IS_PREPENDED) {\ 65 | c = c->super;\ 66 | while (!(c->flags & MRB_FL_CLASS_IS_ORIGIN)) {\ 67 | c = c->super;\ 68 | }\ 69 | }\ 70 | } while (0) 71 | #define MRB_FL_CLASS_IS_INHERITED (1 << 17) 72 | #define MRB_INSTANCE_TT_MASK (0xFF) 73 | #define MRB_SET_INSTANCE_TT(c, tt) c->flags = ((c->flags & ~MRB_INSTANCE_TT_MASK) | (char)tt) 74 | #define MRB_INSTANCE_TT(c) (enum mrb_vtype)(c->flags & MRB_INSTANCE_TT_MASK) 75 | 76 | MRB_API struct RClass* mrb_define_class_id(mrb_state*, mrb_sym, struct RClass*); 77 | MRB_API struct RClass* mrb_define_module_id(mrb_state*, mrb_sym); 78 | MRB_API struct RClass *mrb_vm_define_class(mrb_state*, mrb_value, mrb_value, mrb_sym); 79 | MRB_API struct RClass *mrb_vm_define_module(mrb_state*, mrb_value, mrb_sym); 80 | MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t); 81 | MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec); 82 | MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b); 83 | 84 | MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym); 85 | MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym); 86 | 87 | MRB_API struct RClass* mrb_class_real(struct RClass* cl); 88 | 89 | void mrb_class_name_class(mrb_state*, struct RClass*, struct RClass*, mrb_sym); 90 | mrb_value mrb_class_find_path(mrb_state*, struct RClass*); 91 | void mrb_gc_mark_mt(mrb_state*, struct RClass*); 92 | size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*); 93 | void mrb_gc_free_mt(mrb_state*, struct RClass*); 94 | 95 | MRB_END_DECL 96 | 97 | #endif /* MRUBY_CLASS_H */ 98 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | **"common.h - mruby common platform definition" 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_COMMON_H 8 | #define MRUBY_COMMON_H 9 | 10 | #ifdef __APPLE__ 11 | #ifndef __TARGETCONDITIONALS__ 12 | #include "TargetConditionals.h" 13 | #endif 14 | #endif 15 | 16 | #ifdef __cplusplus 17 | #ifdef MRB_ENABLE_CXX_ABI 18 | #define MRB_BEGIN_DECL 19 | #define MRB_END_DECL 20 | #else 21 | # define MRB_BEGIN_DECL extern "C" { 22 | # define MRB_END_DECL } 23 | #endif 24 | #else 25 | /** Start declarations in C mode */ 26 | # define MRB_BEGIN_DECL 27 | /** End declarations in C mode */ 28 | # define MRB_END_DECL 29 | #endif 30 | 31 | /** 32 | * Shared compiler macros 33 | */ 34 | MRB_BEGIN_DECL 35 | 36 | /** Declare a function that never returns. */ 37 | #if __STDC_VERSION__ >= 201112L 38 | # define mrb_noreturn _Noreturn 39 | #elif defined __GNUC__ && !defined __STRICT_ANSI__ 40 | # define mrb_noreturn __attribute__((noreturn)) 41 | #elif defined _MSC_VER 42 | # define mrb_noreturn __declspec(noreturn) 43 | #else 44 | # define mrb_noreturn 45 | #endif 46 | 47 | /** Mark a function as deprecated. */ 48 | #if defined __GNUC__ && !defined __STRICT_ANSI__ 49 | # define mrb_deprecated __attribute__((deprecated)) 50 | #elif defined _MSC_VER 51 | # define mrb_deprecated __declspec(deprecated) 52 | #else 53 | # define mrb_deprecated 54 | #endif 55 | 56 | /** Declare a function as always inlined. */ 57 | #if defined(_MSC_VER) 58 | # define MRB_INLINE static __inline 59 | #else 60 | # define MRB_INLINE static inline 61 | #endif 62 | 63 | 64 | /** Declare a public MRuby API function. */ 65 | #if defined(MRB_BUILD_AS_DLL) 66 | #if defined(MRB_CORE) || defined(MRB_LIB) 67 | # define MRB_API __declspec(dllexport) 68 | #else 69 | # define MRB_API __declspec(dllimport) 70 | #endif 71 | #else 72 | # define MRB_API extern 73 | #endif 74 | 75 | MRB_END_DECL 76 | 77 | #endif /* MRUBY_COMMON_H */ 78 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/compile.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/compile.h - mruby parser 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_COMPILE_H 8 | #define MRUBY_COMPILE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Compiler 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | #include 18 | 19 | struct mrb_jmpbuf; 20 | 21 | struct mrb_parser_state; 22 | /* load context */ 23 | typedef struct mrbc_context { 24 | mrb_sym *syms; 25 | int slen; 26 | char *filename; 27 | short lineno; 28 | int (*partial_hook)(struct mrb_parser_state*); 29 | void *partial_data; 30 | struct RClass *target_class; 31 | mrb_bool capture_errors:1; 32 | mrb_bool dump_result:1; 33 | mrb_bool no_exec:1; 34 | mrb_bool keep_lv:1; 35 | mrb_bool no_optimize:1; 36 | mrb_bool on_eval:1; 37 | 38 | size_t parser_nerr; 39 | } mrbc_context; 40 | 41 | MRB_API mrbc_context* mrbc_context_new(mrb_state *mrb); 42 | MRB_API void mrbc_context_free(mrb_state *mrb, mrbc_context *cxt); 43 | MRB_API const char *mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s); 44 | MRB_API void mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*partial_hook)(struct mrb_parser_state*), void*data); 45 | 46 | /* AST node structure */ 47 | typedef struct mrb_ast_node { 48 | struct mrb_ast_node *car, *cdr; 49 | uint16_t lineno, filename_index; 50 | } mrb_ast_node; 51 | 52 | /* lexer states */ 53 | enum mrb_lex_state_enum { 54 | EXPR_BEG, /* ignore newline, +/- is a sign. */ 55 | EXPR_END, /* newline significant, +/- is an operator. */ 56 | EXPR_ENDARG, /* ditto, and unbound braces. */ 57 | EXPR_ENDFN, /* ditto, and unbound braces. */ 58 | EXPR_ARG, /* newline significant, +/- is an operator. */ 59 | EXPR_CMDARG, /* newline significant, +/- is an operator. */ 60 | EXPR_MID, /* newline significant, +/- is an operator. */ 61 | EXPR_FNAME, /* ignore newline, no reserved words. */ 62 | EXPR_DOT, /* right after '.' or '::', no reserved words. */ 63 | EXPR_CLASS, /* immediate after 'class', no here document. */ 64 | EXPR_VALUE, /* alike EXPR_BEG but label is disallowed. */ 65 | EXPR_MAX_STATE 66 | }; 67 | 68 | /* saved error message */ 69 | struct mrb_parser_message { 70 | int lineno; 71 | int column; 72 | char* message; 73 | }; 74 | 75 | #define STR_FUNC_PARSING 0x01 76 | #define STR_FUNC_EXPAND 0x02 77 | #define STR_FUNC_REGEXP 0x04 78 | #define STR_FUNC_WORD 0x08 79 | #define STR_FUNC_SYMBOL 0x10 80 | #define STR_FUNC_ARRAY 0x20 81 | #define STR_FUNC_HEREDOC 0x40 82 | #define STR_FUNC_XQUOTE 0x80 83 | 84 | enum mrb_string_type { 85 | str_not_parsing = (0), 86 | str_squote = (STR_FUNC_PARSING), 87 | str_dquote = (STR_FUNC_PARSING|STR_FUNC_EXPAND), 88 | str_regexp = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND), 89 | str_sword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY), 90 | str_dword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND), 91 | str_ssym = (STR_FUNC_PARSING|STR_FUNC_SYMBOL), 92 | str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY), 93 | str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND), 94 | str_heredoc = (STR_FUNC_PARSING|STR_FUNC_HEREDOC), 95 | str_xquote = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND), 96 | }; 97 | 98 | /* heredoc structure */ 99 | struct mrb_parser_heredoc_info { 100 | mrb_bool allow_indent:1; 101 | mrb_bool line_head:1; 102 | enum mrb_string_type type; 103 | const char *term; 104 | int term_len; 105 | mrb_ast_node *doc; 106 | }; 107 | 108 | #define MRB_PARSER_TOKBUF_MAX 65536 109 | #define MRB_PARSER_TOKBUF_SIZE 256 110 | 111 | /* parser structure */ 112 | struct mrb_parser_state { 113 | mrb_state *mrb; 114 | struct mrb_pool *pool; 115 | mrb_ast_node *cells; 116 | const char *s, *send; 117 | #ifndef MRB_DISABLE_STDIO 118 | FILE *f; 119 | #endif 120 | mrbc_context *cxt; 121 | char const *filename; 122 | int lineno; 123 | int column; 124 | 125 | enum mrb_lex_state_enum lstate; 126 | mrb_ast_node *lex_strterm; /* (type nest_level beg . end) */ 127 | 128 | unsigned int cond_stack; 129 | unsigned int cmdarg_stack; 130 | int paren_nest; 131 | int lpar_beg; 132 | int in_def, in_single; 133 | mrb_bool cmd_start:1; 134 | mrb_ast_node *locals; 135 | 136 | mrb_ast_node *pb; 137 | char *tokbuf; 138 | char buf[MRB_PARSER_TOKBUF_SIZE]; 139 | int tidx; 140 | int tsiz; 141 | 142 | mrb_ast_node *all_heredocs; /* list of mrb_parser_heredoc_info* */ 143 | mrb_ast_node *heredocs_from_nextline; 144 | mrb_ast_node *parsing_heredoc; 145 | mrb_ast_node *lex_strterm_before_heredoc; 146 | 147 | void *ylval; 148 | 149 | size_t nerr; 150 | size_t nwarn; 151 | mrb_ast_node *tree; 152 | 153 | mrb_bool no_optimize:1; 154 | mrb_bool on_eval:1; 155 | mrb_bool capture_errors:1; 156 | struct mrb_parser_message error_buffer[10]; 157 | struct mrb_parser_message warn_buffer[10]; 158 | 159 | mrb_sym* filename_table; 160 | uint16_t filename_table_length; 161 | uint16_t current_filename_index; 162 | 163 | struct mrb_jmpbuf* jmp; 164 | }; 165 | 166 | MRB_API struct mrb_parser_state* mrb_parser_new(mrb_state*); 167 | MRB_API void mrb_parser_free(struct mrb_parser_state*); 168 | MRB_API void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*); 169 | 170 | MRB_API void mrb_parser_set_filename(struct mrb_parser_state*, char const*); 171 | MRB_API char const* mrb_parser_get_filename(struct mrb_parser_state*, uint16_t idx); 172 | 173 | /* utility functions */ 174 | #ifndef MRB_DISABLE_STDIO 175 | MRB_API struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*); 176 | #endif 177 | MRB_API struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*); 178 | MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t,mrbc_context*); 179 | MRB_API struct RProc* mrb_generate_code(mrb_state*, struct mrb_parser_state*); 180 | MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c); 181 | 182 | /* program load functions */ 183 | #ifndef MRB_DISABLE_STDIO 184 | MRB_API mrb_value mrb_load_file(mrb_state*,FILE*); 185 | MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt); 186 | #endif 187 | MRB_API mrb_value mrb_load_string(mrb_state *mrb, const char *s); 188 | MRB_API mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, size_t len); 189 | MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt); 190 | MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrbc_context *cxt); 191 | 192 | /** @} */ 193 | MRB_END_DECL 194 | 195 | #endif /* MRUBY_COMPILE_H */ 196 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/data.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/data.h - Data class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DATA_H 8 | #define MRUBY_DATA_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Custom C wrapped data. 14 | * 15 | * Defining Ruby wrappers around native objects. 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | /** 20 | * Custom data type description. 21 | */ 22 | typedef struct mrb_data_type { 23 | /** data type name */ 24 | const char *struct_name; 25 | 26 | /** data type release function pointer */ 27 | void (*dfree)(mrb_state *mrb, void*); 28 | } mrb_data_type; 29 | 30 | struct RData { 31 | MRB_OBJECT_HEADER; 32 | struct iv_tbl *iv; 33 | const mrb_data_type *type; 34 | void *data; 35 | }; 36 | 37 | MRB_API struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *datap, const mrb_data_type *type); 38 | 39 | #define Data_Wrap_Struct(mrb,klass,type,ptr)\ 40 | mrb_data_object_alloc(mrb,klass,ptr,type) 41 | 42 | #define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \ 43 | sval = mrb_malloc(mrb, sizeof(strct)); \ 44 | { static const strct zero = { 0 }; *sval = zero; };\ 45 | data = Data_Wrap_Struct(mrb,klass,type,sval);\ 46 | } while (0) 47 | 48 | #define RDATA(obj) ((struct RData *)(mrb_ptr(obj))) 49 | #define DATA_PTR(d) (RDATA(d)->data) 50 | #define DATA_TYPE(d) (RDATA(d)->type) 51 | MRB_API void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*); 52 | MRB_API void *mrb_data_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*); 53 | #define DATA_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_get_ptr(mrb,obj,dtype) 54 | MRB_API void *mrb_data_check_get_ptr(mrb_state *mrb, mrb_value, const mrb_data_type*); 55 | #define DATA_CHECK_GET_PTR(mrb,obj,dtype,type) (type*)mrb_data_check_get_ptr(mrb,obj,dtype) 56 | 57 | /* obsolete functions and macros */ 58 | #define mrb_data_check_and_get(mrb,obj,dtype) mrb_data_get_ptr(mrb,obj,dtype) 59 | #define mrb_get_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 60 | #define mrb_check_datatype(mrb,val,type) mrb_data_get_ptr(mrb, val, type) 61 | #define Data_Get_Struct(mrb,obj,type,sval) do {\ 62 | *(void**)&sval = mrb_data_get_ptr(mrb, obj, type); \ 63 | } while (0) 64 | 65 | static inline void 66 | mrb_data_init(mrb_value v, void *ptr, const mrb_data_type *type) 67 | { 68 | mrb_assert(mrb_type(v) == MRB_TT_DATA); 69 | DATA_PTR(v) = ptr; 70 | DATA_TYPE(v) = type; 71 | } 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_DATA_H */ 76 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/debug.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/debug.h - mruby debug info 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DEBUG_H 8 | #define MRUBY_DEBUG_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Debugging. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef enum mrb_debug_line_type { 18 | mrb_debug_line_ary = 0, 19 | mrb_debug_line_flat_map = 1 20 | } mrb_debug_line_type; 21 | 22 | typedef struct mrb_irep_debug_info_line { 23 | uint32_t start_pos; 24 | uint16_t line; 25 | } mrb_irep_debug_info_line; 26 | 27 | typedef struct mrb_irep_debug_info_file { 28 | uint32_t start_pos; 29 | const char *filename; 30 | mrb_sym filename_sym; 31 | uint32_t line_entry_count; 32 | mrb_debug_line_type line_type; 33 | union { 34 | void *ptr; 35 | mrb_irep_debug_info_line *flat_map; 36 | uint16_t *ary; 37 | } lines; 38 | } mrb_irep_debug_info_file; 39 | 40 | typedef struct mrb_irep_debug_info { 41 | uint32_t pc_count; 42 | uint16_t flen; 43 | mrb_irep_debug_info_file **files; 44 | } mrb_irep_debug_info; 45 | 46 | /* 47 | * get line from irep's debug info and program counter 48 | * @return returns NULL if not found 49 | */ 50 | MRB_API const char *mrb_debug_get_filename(mrb_irep *irep, ptrdiff_t pc); 51 | 52 | /* 53 | * get line from irep's debug info and program counter 54 | * @return returns -1 if not found 55 | */ 56 | MRB_API int32_t mrb_debug_get_line(mrb_irep *irep, ptrdiff_t pc); 57 | 58 | MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep); 59 | MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file( 60 | mrb_state *mrb, mrb_irep_debug_info *info, 61 | const char *filename, uint16_t *lines, 62 | uint32_t start_pos, uint32_t end_pos); 63 | MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d); 64 | 65 | MRB_END_DECL 66 | 67 | #endif /* MRUBY_DEBUG_H */ 68 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/dump.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/dump.h - mruby binary dumper (mrbc binary format) 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_DUMP_H 8 | #define MRUBY_DUMP_H 9 | 10 | #include 11 | #include 12 | #include "common.h" 13 | 14 | /** 15 | * Dumping compiled mruby script. 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | #define DUMP_DEBUG_INFO 1 20 | #define DUMP_ENDIAN_BIG 2 21 | #define DUMP_ENDIAN_LIL 4 22 | #define DUMP_ENDIAN_NAT 6 23 | #define DUMP_ENDIAN_MASK 6 24 | 25 | int mrb_dump_irep(mrb_state *mrb, mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size); 26 | #ifndef MRB_DISABLE_STDIO 27 | int mrb_dump_irep_binary(mrb_state*, mrb_irep*, uint8_t, FILE*); 28 | int mrb_dump_irep_cfunc(mrb_state *mrb, mrb_irep*, uint8_t flags, FILE *f, const char *initname); 29 | mrb_irep *mrb_read_irep_file(mrb_state*, FILE*); 30 | MRB_API mrb_value mrb_load_irep_file(mrb_state*,FILE*); 31 | MRB_API mrb_value mrb_load_irep_file_cxt(mrb_state*, FILE*, mrbc_context*); 32 | #endif 33 | MRB_API mrb_irep *mrb_read_irep(mrb_state*, const uint8_t*); 34 | 35 | /* dump/load error code 36 | * 37 | * NOTE: MRB_DUMP_GENERAL_FAILURE is caused by 38 | * unspecified issues like malloc failed. 39 | */ 40 | #define MRB_DUMP_OK 0 41 | #define MRB_DUMP_GENERAL_FAILURE (-1) 42 | #define MRB_DUMP_WRITE_FAULT (-2) 43 | #define MRB_DUMP_READ_FAULT (-3) 44 | #define MRB_DUMP_CRC_ERROR (-4) 45 | #define MRB_DUMP_INVALID_FILE_HEADER (-5) 46 | #define MRB_DUMP_INVALID_IREP (-6) 47 | #define MRB_DUMP_INVALID_ARGUMENT (-7) 48 | 49 | /* null symbol length */ 50 | #define MRB_DUMP_NULL_SYM_LEN 0xFFFF 51 | 52 | /* Rite Binary File header */ 53 | #define RITE_BINARY_IDENT "RITE" 54 | #define RITE_BINARY_IDENT_LIL "ETIR" 55 | #define RITE_BINARY_FORMAT_VER "0005" 56 | #define RITE_COMPILER_NAME "MATZ" 57 | #define RITE_COMPILER_VERSION "0000" 58 | 59 | #define RITE_VM_VER "0002" 60 | 61 | #define RITE_BINARY_EOF "END\0" 62 | #define RITE_SECTION_IREP_IDENT "IREP" 63 | #define RITE_SECTION_LINENO_IDENT "LINE" 64 | #define RITE_SECTION_DEBUG_IDENT "DBG\0" 65 | #define RITE_SECTION_LV_IDENT "LVAR" 66 | 67 | #define MRB_DUMP_DEFAULT_STR_LEN 128 68 | #define MRB_DUMP_ALIGNMENT sizeof(uint32_t) 69 | 70 | /* binary header */ 71 | struct rite_binary_header { 72 | uint8_t binary_ident[4]; /* Binary Identifier */ 73 | uint8_t binary_version[4]; /* Binary Format Version */ 74 | uint8_t binary_crc[2]; /* Binary CRC */ 75 | uint8_t binary_size[4]; /* Binary Size */ 76 | uint8_t compiler_name[4]; /* Compiler name */ 77 | uint8_t compiler_version[4]; 78 | }; 79 | 80 | /* section header */ 81 | #define RITE_SECTION_HEADER \ 82 | uint8_t section_ident[4]; \ 83 | uint8_t section_size[4] 84 | 85 | struct rite_section_header { 86 | RITE_SECTION_HEADER; 87 | }; 88 | 89 | struct rite_section_irep_header { 90 | RITE_SECTION_HEADER; 91 | 92 | uint8_t rite_version[4]; /* Rite Instruction Specification Version */ 93 | }; 94 | 95 | struct rite_section_lineno_header { 96 | RITE_SECTION_HEADER; 97 | }; 98 | 99 | struct rite_section_debug_header { 100 | RITE_SECTION_HEADER; 101 | }; 102 | 103 | struct rite_section_lv_header { 104 | RITE_SECTION_HEADER; 105 | }; 106 | 107 | #define RITE_LV_NULL_MARK UINT16_MAX 108 | 109 | struct rite_binary_footer { 110 | RITE_SECTION_HEADER; 111 | }; 112 | 113 | static inline int 114 | bigendian_p() 115 | { 116 | int i; 117 | char *p; 118 | 119 | i = 1; 120 | p = (char*)&i; 121 | return p[0]?0:1; 122 | } 123 | 124 | static inline size_t 125 | uint8_to_bin(uint8_t s, uint8_t *bin) 126 | { 127 | *bin = s; 128 | return sizeof(uint8_t); 129 | } 130 | 131 | static inline size_t 132 | uint16_to_bin(uint16_t s, uint8_t *bin) 133 | { 134 | *bin++ = (s >> 8) & 0xff; 135 | *bin = s & 0xff; 136 | return sizeof(uint16_t); 137 | } 138 | 139 | static inline size_t 140 | uint32_to_bin(uint32_t l, uint8_t *bin) 141 | { 142 | *bin++ = (l >> 24) & 0xff; 143 | *bin++ = (l >> 16) & 0xff; 144 | *bin++ = (l >> 8) & 0xff; 145 | *bin = l & 0xff; 146 | return sizeof(uint32_t); 147 | } 148 | 149 | static inline size_t 150 | uint32l_to_bin(uint32_t l, uint8_t *bin) 151 | { 152 | bin[3] = (l >> 24) & 0xff; 153 | bin[2] = (l >> 16) & 0xff; 154 | bin[1] = (l >> 8) & 0xff; 155 | bin[0] = l & 0xff; 156 | return sizeof(uint32_t); 157 | } 158 | 159 | static inline uint32_t 160 | bin_to_uint32(const uint8_t *bin) 161 | { 162 | return (uint32_t)bin[0] << 24 | 163 | (uint32_t)bin[1] << 16 | 164 | (uint32_t)bin[2] << 8 | 165 | (uint32_t)bin[3]; 166 | } 167 | 168 | static inline uint32_t 169 | bin_to_uint32l(const uint8_t *bin) 170 | { 171 | return (uint32_t)bin[3] << 24 | 172 | (uint32_t)bin[2] << 16 | 173 | (uint32_t)bin[1] << 8 | 174 | (uint32_t)bin[0]; 175 | } 176 | 177 | static inline uint16_t 178 | bin_to_uint16(const uint8_t *bin) 179 | { 180 | return (uint16_t)bin[0] << 8 | 181 | (uint16_t)bin[1]; 182 | } 183 | 184 | static inline uint8_t 185 | bin_to_uint8(const uint8_t *bin) 186 | { 187 | return (uint8_t)bin[0]; 188 | } 189 | 190 | MRB_END_DECL 191 | 192 | /** @internal crc.c */ 193 | uint16_t 194 | calc_crc_16_ccitt(const uint8_t *src, size_t nbytes, uint16_t crc); 195 | 196 | #endif /* MRUBY_DUMP_H */ 197 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/error.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/error.h - Exception class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ERROR_H 8 | #define MRUBY_ERROR_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby error handling. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | struct RException { 18 | MRB_OBJECT_HEADER; 19 | struct iv_tbl *iv; 20 | }; 21 | 22 | #define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v)) 23 | 24 | MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg); 25 | MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str); 26 | #define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit)) 27 | MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv); 28 | MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc); 29 | MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb); 30 | MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...); 31 | 32 | /* declaration for fail method */ 33 | MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value); 34 | 35 | struct RBreak { 36 | MRB_OBJECT_HEADER; 37 | struct RProc *proc; 38 | mrb_value val; 39 | }; 40 | 41 | /** 42 | * Protect 43 | * 44 | * @mrbgem mruby-error 45 | */ 46 | MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state); 47 | 48 | /** 49 | * Ensure 50 | * 51 | * @mrbgem mruby-error 52 | */ 53 | MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 54 | mrb_func_t ensure, mrb_value e_data); 55 | 56 | /** 57 | * Rescue 58 | * 59 | * @mrbgem mruby-error 60 | */ 61 | MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 62 | mrb_func_t rescue, mrb_value r_data); 63 | 64 | /** 65 | * Rescue exception 66 | * 67 | * @mrbgem mruby-error 68 | */ 69 | MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data, 70 | mrb_func_t rescue, mrb_value r_data, 71 | mrb_int len, struct RClass **classes); 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_ERROR_H */ 76 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/gc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/gc.h - garbage collector for mruby 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_GC_H 8 | #define MRUBY_GC_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Uncommon memory management stuffs. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | 18 | struct mrb_state; 19 | 20 | #define MRB_EACH_OBJ_OK 0 21 | #define MRB_EACH_OBJ_BREAK 1 22 | typedef int (mrb_each_object_callback)(struct mrb_state *mrb, struct RBasic *obj, void *data); 23 | void mrb_objspace_each_objects(struct mrb_state *mrb, mrb_each_object_callback *callback, void *data); 24 | MRB_API void mrb_free_context(struct mrb_state *mrb, struct mrb_context *c); 25 | 26 | #ifndef MRB_GC_ARENA_SIZE 27 | #define MRB_GC_ARENA_SIZE 100 28 | #endif 29 | 30 | typedef enum { 31 | MRB_GC_STATE_ROOT = 0, 32 | MRB_GC_STATE_MARK, 33 | MRB_GC_STATE_SWEEP 34 | } mrb_gc_state; 35 | 36 | /* Disable MSVC warning "C4200: nonstandard extension used: zero-sized array 37 | * in struct/union" when in C++ mode */ 38 | #ifdef _MSC_VER 39 | #pragma warning(push) 40 | #pragma warning(disable : 4200) 41 | #endif 42 | 43 | typedef struct mrb_heap_page { 44 | struct RBasic *freelist; 45 | struct mrb_heap_page *prev; 46 | struct mrb_heap_page *next; 47 | struct mrb_heap_page *free_next; 48 | struct mrb_heap_page *free_prev; 49 | mrb_bool old:1; 50 | void *objects[]; 51 | } mrb_heap_page; 52 | 53 | #ifdef _MSC_VER 54 | #pragma warning(pop) 55 | #endif 56 | 57 | typedef struct mrb_gc { 58 | mrb_heap_page *heaps; /* heaps for GC */ 59 | mrb_heap_page *sweeps; 60 | mrb_heap_page *free_heaps; 61 | size_t live; /* count of live objects */ 62 | #ifdef MRB_GC_FIXED_ARENA 63 | struct RBasic *arena[MRB_GC_ARENA_SIZE]; /* GC protection array */ 64 | #else 65 | struct RBasic **arena; /* GC protection array */ 66 | int arena_capa; 67 | #endif 68 | int arena_idx; 69 | 70 | mrb_gc_state state; /* state of gc */ 71 | int current_white_part; /* make white object by white_part */ 72 | struct RBasic *gray_list; /* list of gray objects to be traversed incrementally */ 73 | struct RBasic *atomic_gray_list; /* list of objects to be traversed atomically */ 74 | size_t live_after_mark; 75 | size_t threshold; 76 | int interval_ratio; 77 | int step_ratio; 78 | mrb_bool iterating :1; 79 | mrb_bool disabled :1; 80 | mrb_bool full :1; 81 | mrb_bool generational :1; 82 | mrb_bool out_of_memory :1; 83 | size_t majorgc_old_threshold; 84 | } mrb_gc; 85 | 86 | MRB_API mrb_bool 87 | mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object); 88 | 89 | MRB_END_DECL 90 | 91 | #endif /* MRUBY_GC_H */ 92 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/hash.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/hash.h - Hash class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_HASH_H 8 | #define MRUBY_HASH_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Hash class 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | struct RHash { 19 | MRB_OBJECT_HEADER; 20 | struct iv_tbl *iv; 21 | struct htable *ht; 22 | }; 23 | 24 | #define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v))) 25 | #define mrb_hash_value(p) mrb_obj_value((void*)(p)) 26 | 27 | MRB_API mrb_value mrb_hash_new_capa(mrb_state*, mrb_int); 28 | MRB_API mrb_value mrb_ensure_hash_type(mrb_state *mrb, mrb_value hash); 29 | MRB_API mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash); 30 | 31 | /* 32 | * Initializes a new hash. 33 | * 34 | * Equivalent to: 35 | * 36 | * Hash.new 37 | * 38 | * @param mrb The mruby state reference. 39 | * @return The initialized hash. 40 | */ 41 | MRB_API mrb_value mrb_hash_new(mrb_state *mrb); 42 | 43 | /* 44 | * Sets a keys and values to hashes. 45 | * 46 | * Equivalent to: 47 | * 48 | * hash[key] = val 49 | * 50 | * @param mrb The mruby state reference. 51 | * @param hash The target hash. 52 | * @param key The key to set. 53 | * @param val The value to set. 54 | * @return The value. 55 | */ 56 | MRB_API void mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val); 57 | 58 | /* 59 | * Gets a value from a key. If the key is not found, the default of the 60 | * hash is used. 61 | * 62 | * Equivalent to: 63 | * 64 | * hash[key] 65 | * 66 | * @param mrb The mruby state reference. 67 | * @param hash The target hash. 68 | * @param key The key to get. 69 | * @return The found value. 70 | */ 71 | MRB_API mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key); 72 | 73 | /* 74 | * Gets a value from a key. If the key is not found, the default parameter is 75 | * used. 76 | * 77 | * Equivalent to: 78 | * 79 | * hash.key?(key) ? hash[key] : def 80 | * 81 | * @param mrb The mruby state reference. 82 | * @param hash The target hash. 83 | * @param key The key to get. 84 | * @param def The default value. 85 | * @return The found value. 86 | */ 87 | MRB_API mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def); 88 | 89 | /* 90 | * Deletes hash key and value pair. 91 | * 92 | * Equivalent to: 93 | * 94 | * hash.delete(key) 95 | * 96 | * @param mrb The mruby state reference. 97 | * @param hash The target hash. 98 | * @param key The key to delete. 99 | * @return The deleted value. 100 | */ 101 | MRB_API mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key); 102 | 103 | /* 104 | * Gets an array of keys. 105 | * 106 | * Equivalent to: 107 | * 108 | * hash.keys 109 | * 110 | * @param mrb The mruby state reference. 111 | * @param hash The target hash. 112 | * @return An array with the keys of the hash. 113 | */ 114 | MRB_API mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash); 115 | /* 116 | * Check if the hash has the key. 117 | * 118 | * Equivalent to: 119 | * 120 | * hash.key?(key) 121 | * 122 | * @param mrb The mruby state reference. 123 | * @param hash The target hash. 124 | * @param key The key to check existence. 125 | * @return True if the hash has the key 126 | */ 127 | MRB_API mrb_bool mrb_hash_key_p(mrb_state *mrb, mrb_value hash, mrb_value key); 128 | 129 | /* 130 | * Check if the hash is empty 131 | * 132 | * Equivalent to: 133 | * 134 | * hash.empty? 135 | * 136 | * @param mrb The mruby state reference. 137 | * @param self The target hash. 138 | * @return True if the hash is empty, false otherwise. 139 | */ 140 | MRB_API mrb_bool mrb_hash_empty_p(mrb_state *mrb, mrb_value self); 141 | 142 | /* 143 | * Gets an array of values. 144 | * 145 | * Equivalent to: 146 | * 147 | * hash.values 148 | * 149 | * @param mrb The mruby state reference. 150 | * @param hash The target hash. 151 | * @return An array with the values of the hash. 152 | */ 153 | MRB_API mrb_value mrb_hash_values(mrb_state *mrb, mrb_value hash); 154 | 155 | /* 156 | * Clears the hash. 157 | * 158 | * Equivalent to: 159 | * 160 | * hash.clear 161 | * 162 | * @param mrb The mruby state reference. 163 | * @param hash The target hash. 164 | * @return The hash 165 | */ 166 | MRB_API mrb_value mrb_hash_clear(mrb_state *mrb, mrb_value hash); 167 | 168 | /* 169 | * Copies the hash. 170 | * 171 | * 172 | * @param mrb The mruby state reference. 173 | * @param hash The target hash. 174 | * @return The copy of the hash 175 | */ 176 | MRB_API mrb_value mrb_hash_dup(mrb_state *mrb, mrb_value hash); 177 | 178 | /* 179 | * Merges two hashes. The first hash will be modified by the 180 | * second hash. 181 | * 182 | * @param mrb The mruby state reference. 183 | * @param hash1 The target hash. 184 | * @param hash2 Updating hash 185 | */ 186 | MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2); 187 | 188 | /* declaration of struct kh_ht */ 189 | /* be careful when you touch the internal */ 190 | typedef struct { 191 | mrb_value v; 192 | mrb_int n; 193 | } mrb_hash_value; 194 | 195 | KHASH_DECLARE(ht, mrb_value, mrb_hash_value, TRUE) 196 | 197 | /* RHASH_TBL allocates st_table if not available. */ 198 | #define RHASH(obj) ((struct RHash*)(mrb_ptr(obj))) 199 | #define RHASH_TBL(h) (RHASH(h)->ht) 200 | #define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), mrb_intern_lit(mrb, "ifnone")) 201 | #define RHASH_PROCDEFAULT(h) RHASH_IFNONE(h) 202 | 203 | #define MRB_HASH_DEFAULT 1 204 | #define MRB_HASH_PROC_DEFAULT 2 205 | #define MRB_RHASH_DEFAULT_P(h) (RHASH(h)->flags & MRB_HASH_DEFAULT) 206 | #define MRB_RHASH_PROCDEFAULT_P(h) (RHASH(h)->flags & MRB_HASH_PROC_DEFAULT) 207 | 208 | /* GC functions */ 209 | void mrb_gc_mark_hash(mrb_state*, struct RHash*); 210 | size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*); 211 | void mrb_gc_free_hash(mrb_state*, struct RHash*); 212 | 213 | MRB_END_DECL 214 | 215 | #endif /* MRUBY_HASH_H */ 216 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/irep.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/irep.h - mrb_irep structure 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_IREP_H 8 | #define MRUBY_IREP_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Compiled mruby scripts. 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | enum irep_pool_type { 19 | IREP_TT_STRING, 20 | IREP_TT_FIXNUM, 21 | IREP_TT_FLOAT, 22 | }; 23 | 24 | struct mrb_locals { 25 | mrb_sym name; 26 | uint16_t r; 27 | }; 28 | 29 | /* Program data array struct */ 30 | typedef struct mrb_irep { 31 | uint16_t nlocals; /* Number of local variables */ 32 | uint16_t nregs; /* Number of register variables */ 33 | uint8_t flags; 34 | 35 | mrb_code *iseq; 36 | mrb_value *pool; 37 | mrb_sym *syms; 38 | struct mrb_irep **reps; 39 | 40 | struct mrb_locals *lv; 41 | /* debug info */ 42 | struct mrb_irep_debug_info* debug_info; 43 | 44 | uint16_t ilen, plen, slen, rlen; 45 | uint32_t refcnt; 46 | } mrb_irep; 47 | 48 | #define MRB_ISEQ_NO_FREE 1 49 | 50 | MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb); 51 | 52 | /* @param [const uint8_t*] irep code, expected as a literal */ 53 | MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*); 54 | 55 | /* @param [const uint8_t*] irep code, expected as a literal */ 56 | MRB_API mrb_value mrb_load_irep_cxt(mrb_state*, const uint8_t*, mrbc_context*); 57 | 58 | void mrb_irep_free(mrb_state*, struct mrb_irep*); 59 | void mrb_irep_incref(mrb_state*, struct mrb_irep*); 60 | void mrb_irep_decref(mrb_state*, struct mrb_irep*); 61 | void mrb_irep_cutref(mrb_state*, struct mrb_irep*); 62 | void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep); 63 | 64 | struct mrb_insn_data { 65 | uint8_t insn; 66 | uint16_t a; 67 | uint16_t b; 68 | uint8_t c; 69 | }; 70 | 71 | struct mrb_insn_data mrb_decode_insn(mrb_code *pc); 72 | 73 | MRB_END_DECL 74 | 75 | #endif /* MRUBY_IREP_H */ 76 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/istruct.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/istruct.h - Inline structures 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_ISTRUCT_H 8 | #define MRUBY_ISTRUCT_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Inline structures that fit in RVALUE 15 | * 16 | * They cannot have finalizer, and cannot have instance variables. 17 | */ 18 | MRB_BEGIN_DECL 19 | 20 | #define ISTRUCT_DATA_SIZE (sizeof(void*) * 3) 21 | 22 | struct RIstruct { 23 | MRB_OBJECT_HEADER; 24 | char inline_data[ISTRUCT_DATA_SIZE]; 25 | }; 26 | 27 | #define RISTRUCT(obj) ((struct RIstruct*)(mrb_ptr(obj))) 28 | #define ISTRUCT_PTR(obj) (RISTRUCT(obj)->inline_data) 29 | 30 | MRB_INLINE mrb_int mrb_istruct_size() 31 | { 32 | return ISTRUCT_DATA_SIZE; 33 | } 34 | 35 | MRB_INLINE void* mrb_istruct_ptr(mrb_value object) 36 | { 37 | return ISTRUCT_PTR(object); 38 | } 39 | 40 | MRB_INLINE void mrb_istruct_copy(mrb_value dest, mrb_value src) 41 | { 42 | memcpy(ISTRUCT_PTR(dest), ISTRUCT_PTR(src), ISTRUCT_DATA_SIZE); 43 | } 44 | 45 | MRB_END_DECL 46 | 47 | #endif /* MRUBY_ISTRUCT_H */ 48 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/numeric.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/numeric.h - Numeric, Integer, Float, Fixnum class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_NUMERIC_H 8 | #define MRUBY_NUMERIC_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Numeric class and it's sub-classes. 14 | * 15 | * Integer, Float and Fixnum 16 | */ 17 | MRB_BEGIN_DECL 18 | 19 | #define TYPED_POSFIXABLE(f,t) ((f) <= (t)MRB_INT_MAX) 20 | #define TYPED_NEGFIXABLE(f,t) ((f) >= (t)MRB_INT_MIN) 21 | #define TYPED_FIXABLE(f,t) (TYPED_POSFIXABLE(f,t) && TYPED_NEGFIXABLE(f,t)) 22 | #define POSFIXABLE(f) TYPED_POSFIXABLE(f,mrb_int) 23 | #define NEGFIXABLE(f) TYPED_NEGFIXABLE(f,mrb_int) 24 | #define FIXABLE(f) TYPED_FIXABLE(f,mrb_int) 25 | #ifndef MRB_WITHOUT_FLOAT 26 | #define FIXABLE_FLOAT(f) TYPED_FIXABLE(f,double) 27 | #endif 28 | 29 | #ifndef MRB_WITHOUT_FLOAT 30 | MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val); 31 | #endif 32 | MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base); 33 | /* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */ 34 | #ifndef MRB_WITHOUT_FLOAT 35 | MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt); 36 | MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x); 37 | #endif 38 | 39 | mrb_value mrb_fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y); 40 | mrb_value mrb_fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y); 41 | mrb_value mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y); 42 | mrb_value mrb_num_div(mrb_state *mrb, mrb_value x, mrb_value y); 43 | 44 | #ifndef __has_builtin 45 | #define __has_builtin(x) 0 46 | #endif 47 | 48 | #if (defined(__GNUC__) && __GNUC__ >= 5) || \ 49 | (__has_builtin(__builtin_add_overflow) && \ 50 | __has_builtin(__builtin_sub_overflow) && \ 51 | __has_builtin(__builtin_mul_overflow)) 52 | # define MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 53 | #endif 54 | 55 | /* 56 | // Clang 3.8 and 3.9 have problem compiling mruby in 32-bit mode, when MRB_INT64 is set 57 | // because of missing __mulodi4 and similar functions in its runtime. We need to use custom 58 | // implementation for them. 59 | */ 60 | #ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 61 | #if defined(__clang__) && (__clang_major__ == 3) && (__clang_minor__ >= 8) && \ 62 | defined(MRB_32BIT) && defined(MRB_INT64) 63 | #undef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 64 | #endif 65 | #endif 66 | 67 | #ifdef MRB_HAVE_TYPE_GENERIC_CHECKED_ARITHMETIC_BUILTINS 68 | 69 | #ifndef MRB_WORD_BOXING 70 | # define WBCHK(x) 0 71 | #else 72 | # define WBCHK(x) !FIXABLE(x) 73 | #endif 74 | 75 | static inline mrb_bool 76 | mrb_int_add_overflow(mrb_int augend, mrb_int addend, mrb_int *sum) 77 | { 78 | return __builtin_add_overflow(augend, addend, sum) || WBCHK(*sum); 79 | } 80 | 81 | static inline mrb_bool 82 | mrb_int_sub_overflow(mrb_int minuend, mrb_int subtrahend, mrb_int *difference) 83 | { 84 | return __builtin_sub_overflow(minuend, subtrahend, difference) || WBCHK(*difference); 85 | } 86 | 87 | static inline mrb_bool 88 | mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) 89 | { 90 | return __builtin_mul_overflow(multiplier, multiplicand, product) || WBCHK(*product); 91 | } 92 | 93 | #undef WBCHK 94 | 95 | #else 96 | 97 | #define MRB_UINT_MAKE2(n) uint ## n ## _t 98 | #define MRB_UINT_MAKE(n) MRB_UINT_MAKE2(n) 99 | #define mrb_uint MRB_UINT_MAKE(MRB_INT_BIT) 100 | 101 | #define MRB_INT_OVERFLOW_MASK ((mrb_uint)1 << (MRB_INT_BIT - 1 - MRB_FIXNUM_SHIFT)) 102 | 103 | static inline mrb_bool 104 | mrb_int_add_overflow(mrb_int augend, mrb_int addend, mrb_int *sum) 105 | { 106 | mrb_uint x = (mrb_uint)augend; 107 | mrb_uint y = (mrb_uint)addend; 108 | mrb_uint z = (mrb_uint)(x + y); 109 | *sum = (mrb_int)z; 110 | return !!(((x ^ z) & (y ^ z)) & MRB_INT_OVERFLOW_MASK); 111 | } 112 | 113 | static inline mrb_bool 114 | mrb_int_sub_overflow(mrb_int minuend, mrb_int subtrahend, mrb_int *difference) 115 | { 116 | mrb_uint x = (mrb_uint)minuend; 117 | mrb_uint y = (mrb_uint)subtrahend; 118 | mrb_uint z = (mrb_uint)(x - y); 119 | *difference = (mrb_int)z; 120 | return !!(((x ^ z) & (~y ^ z)) & MRB_INT_OVERFLOW_MASK); 121 | } 122 | 123 | static inline mrb_bool 124 | mrb_int_mul_overflow(mrb_int multiplier, mrb_int multiplicand, mrb_int *product) 125 | { 126 | #if MRB_INT_BIT == 32 127 | int64_t n = (int64_t)multiplier * multiplicand; 128 | *product = (mrb_int)n; 129 | return !FIXABLE(n); 130 | #else 131 | if (multiplier > 0) { 132 | if (multiplicand > 0) { 133 | if (multiplier > MRB_INT_MAX / multiplicand) return TRUE; 134 | } 135 | else { 136 | if (multiplicand < MRB_INT_MAX / multiplier) return TRUE; 137 | } 138 | } 139 | else { 140 | if (multiplicand > 0) { 141 | if (multiplier < MRB_INT_MAX / multiplicand) return TRUE; 142 | } 143 | else { 144 | if (multiplier != 0 && multiplicand < MRB_INT_MAX / multiplier) return TRUE; 145 | } 146 | } 147 | *product = multiplier * multiplicand; 148 | return FALSE; 149 | #endif 150 | } 151 | 152 | #undef MRB_INT_OVERFLOW_MASK 153 | #undef mrb_uint 154 | #undef MRB_UINT_MAKE 155 | #undef MRB_UINT_MAKE2 156 | 157 | #endif 158 | 159 | MRB_END_DECL 160 | 161 | #endif /* MRUBY_NUMERIC_H */ 162 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/object.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/object.h - mruby object definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_OBJECT_H 8 | #define MRUBY_OBJECT_H 9 | 10 | #define MRB_OBJECT_HEADER \ 11 | enum mrb_vtype tt:8;\ 12 | uint32_t color:3;\ 13 | uint32_t flags:21;\ 14 | struct RClass *c;\ 15 | struct RBasic *gcnext 16 | 17 | #define MRB_FLAG_TEST(obj, flag) ((obj)->flags & flag) 18 | 19 | 20 | struct RBasic { 21 | MRB_OBJECT_HEADER; 22 | }; 23 | #define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v))) 24 | 25 | #define MRB_FL_OBJ_IS_FROZEN (1 << 20) 26 | #define MRB_FROZEN_P(o) ((o)->flags & MRB_FL_OBJ_IS_FROZEN) 27 | #define MRB_SET_FROZEN_FLAG(o) ((o)->flags |= MRB_FL_OBJ_IS_FROZEN) 28 | #define MRB_UNSET_FROZEN_FLAG(o) ((o)->flags &= ~MRB_FL_OBJ_IS_FROZEN) 29 | 30 | struct RObject { 31 | MRB_OBJECT_HEADER; 32 | struct iv_tbl *iv; 33 | }; 34 | #define mrb_obj_ptr(v) ((struct RObject*)(mrb_ptr(v))) 35 | 36 | #define mrb_immediate_p(x) (mrb_type(x) < MRB_TT_HAS_BASIC) 37 | #define mrb_special_const_p(x) mrb_immediate_p(x) 38 | 39 | struct RFiber { 40 | MRB_OBJECT_HEADER; 41 | struct mrb_context *cxt; 42 | }; 43 | 44 | #endif /* MRUBY_OBJECT_H */ 45 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/opcode.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/opcode.h - RiteVM operation codes 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_OPCODE_H 8 | #define MRUBY_OPCODE_H 9 | 10 | enum mrb_insn { 11 | #define OPCODE(x,_) OP_ ## x, 12 | #include "mruby/ops.h" 13 | #undef OPCODE 14 | }; 15 | 16 | #define OP_L_STRICT 1 17 | #define OP_L_CAPTURE 2 18 | #define OP_L_METHOD OP_L_STRICT 19 | #define OP_L_LAMBDA (OP_L_STRICT|OP_L_CAPTURE) 20 | #define OP_L_BLOCK OP_L_CAPTURE 21 | 22 | #define OP_R_NORMAL 0 23 | #define OP_R_BREAK 1 24 | #define OP_R_RETURN 2 25 | 26 | #define PEEK_B(pc) (*(pc)) 27 | #define PEEK_S(pc) ((pc)[0]<<8|(pc)[1]) 28 | #define PEEK_W(pc) ((pc)[0]<<16|(pc)[1]<<8|(pc)[2]) 29 | 30 | #define READ_B() PEEK_B(pc++) 31 | #define READ_S() (pc+=2, PEEK_S(pc-2)) 32 | #define READ_W() (pc+=3, PEEK_W(pc-3)) 33 | 34 | #define FETCH_Z() /* nothing */ 35 | #define FETCH_B() do {a=READ_B();} while (0) 36 | #define FETCH_BB() do {a=READ_B(); b=READ_B();} while (0) 37 | #define FETCH_BBB() do {a=READ_B(); b=READ_B(); c=READ_B();} while (0) 38 | #define FETCH_BS() do {a=READ_B(); b=READ_S();} while (0) 39 | #define FETCH_S() do {a=READ_S();} while (0) 40 | #define FETCH_W() do {a=READ_W();} while (0) 41 | 42 | /* with OP_EXT1 (1st 16bit) */ 43 | #define FETCH_Z_1() FETCH_Z() 44 | #define FETCH_B_1() FETCH_S() 45 | #define FETCH_BB_1() do {a=READ_S(); b=READ_B();} while (0) 46 | #define FETCH_BBB_1() do {a=READ_S(); b=READ_B(); c=READ_B();} while (0) 47 | #define FETCH_BS_1() do {a=READ_S(); b=READ_S();} while (0) 48 | #define FETCH_S_1() FETCH_S() 49 | #define FETCH_W_1() FETCH_W() 50 | 51 | /* with OP_EXT2 (2nd 16bit) */ 52 | #define FETCH_Z_2() FETCH_Z() 53 | #define FETCH_B_2() FETCH_B() 54 | #define FETCH_BB_2() do {a=READ_B(); b=READ_S();} while (0) 55 | #define FETCH_BBB_2() do {a=READ_B(); b=READ_S(); c=READ_B();} while (0) 56 | #define FETCH_BS_2() FETCH_BS() 57 | #define FETCH_S_2() FETCH_S() 58 | #define FETCH_W_2() FETCH_W() 59 | 60 | /* with OP_EXT3 (1st & 2nd 16bit) */ 61 | #define FETCH_Z_3() FETCH_Z() 62 | #define FETCH_B_3() FETCH_B() 63 | #define FETCH_BB_3() do {a=READ_S(); b=READ_S();} while (0) 64 | #define FETCH_BBB_3() do {a=READ_S(); b=READ_S(); c=READ_B();} while (0) 65 | #define FETCH_BS_3() do {a=READ_S(); b=READ_S();} while (0) 66 | #define FETCH_S_3() FETCH_S() 67 | #define FETCH_W_3() FETCH_W() 68 | 69 | #endif /* MRUBY_OPCODE_H */ 70 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/ops.h: -------------------------------------------------------------------------------- 1 | /* operand types: 2 | + Z: no operand (Z,Z,Z,Z) 3 | + B: 8bit (B,S,B,B) 4 | + BB: 8+8bit (BB,SB,BS,SS) 5 | + BBB: 8+8+8bit (BBB,SBB,BSB,SSB) 6 | + BS: 8+16bit (BS,SS,BS,BS) 7 | + S: 16bit (S,S,S,S) 8 | + W: 24bit (W,W,W,W) 9 | */ 10 | 11 | /*----------------------------------------------------------------------- 12 | operation code operands semantics 13 | ------------------------------------------------------------------------*/ 14 | OPCODE(NOP, Z) /* no operation */ 15 | OPCODE(MOVE, BB) /* R(a) = R(b) */ 16 | OPCODE(LOADL, BB) /* R(a) = Pool(b) */ 17 | OPCODE(LOADI, BB) /* R(a) = mrb_int(b) */ 18 | OPCODE(LOADINEG, BB) /* R(a) = mrb_int(-b) */ 19 | OPCODE(LOADI__1, B) /* R(a) = mrb_int(-1) */ 20 | OPCODE(LOADI_0, B) /* R(a) = mrb_int(0) */ 21 | OPCODE(LOADI_1, B) /* R(a) = mrb_int(1) */ 22 | OPCODE(LOADI_2, B) /* R(a) = mrb_int(2) */ 23 | OPCODE(LOADI_3, B) /* R(a) = mrb_int(3) */ 24 | OPCODE(LOADI_4, B) /* R(a) = mrb_int(4) */ 25 | OPCODE(LOADI_5, B) /* R(a) = mrb_int(5) */ 26 | OPCODE(LOADI_6, B) /* R(a) = mrb_int(6) */ 27 | OPCODE(LOADI_7, B) /* R(a) = mrb_int(7) */ 28 | OPCODE(LOADSYM, BB) /* R(a) = Syms(b) */ 29 | OPCODE(LOADNIL, B) /* R(a) = nil */ 30 | OPCODE(LOADSELF, B) /* R(a) = self */ 31 | OPCODE(LOADT, B) /* R(a) = true */ 32 | OPCODE(LOADF, B) /* R(a) = false */ 33 | OPCODE(GETGV, BB) /* R(a) = getglobal(Syms(b)) */ 34 | OPCODE(SETGV, BB) /* setglobal(Syms(b), R(a)) */ 35 | OPCODE(GETSV, BB) /* R(a) = Special[Syms(b)] */ 36 | OPCODE(SETSV, BB) /* Special[Syms(b)] = R(a) */ 37 | OPCODE(GETIV, BB) /* R(a) = ivget(Syms(b)) */ 38 | OPCODE(SETIV, BB) /* ivset(Syms(b),R(a)) */ 39 | OPCODE(GETCV, BB) /* R(a) = cvget(Syms(b)) */ 40 | OPCODE(SETCV, BB) /* cvset(Syms(b),R(a)) */ 41 | OPCODE(GETCONST, BB) /* R(a) = constget(Syms(b)) */ 42 | OPCODE(SETCONST, BB) /* constset(Syms(b),R(a)) */ 43 | OPCODE(GETMCNST, BB) /* R(a) = R(a)::Syms(b) */ 44 | OPCODE(SETMCNST, BB) /* R(a+1)::Syms(b) = R(a) */ 45 | OPCODE(GETUPVAR, BBB) /* R(a) = uvget(b,c) */ 46 | OPCODE(SETUPVAR, BBB) /* uvset(b,c,R(a)) */ 47 | OPCODE(JMP, S) /* pc=a */ 48 | OPCODE(JMPIF, BS) /* if R(b) pc=a */ 49 | OPCODE(JMPNOT, BS) /* if !R(b) pc=a */ 50 | OPCODE(JMPNIL, BS) /* if R(b)==nil pc=a */ 51 | OPCODE(ONERR, S) /* rescue_push(a) */ 52 | OPCODE(EXCEPT, B) /* R(a) = exc */ 53 | OPCODE(RESCUE, BB) /* R(b) = R(a).isa?(R(b)) */ 54 | OPCODE(POPERR, B) /* a.times{rescue_pop()} */ 55 | OPCODE(RAISE, B) /* raise(R(a)) */ 56 | OPCODE(EPUSH, B) /* ensure_push(SEQ[a]) */ 57 | OPCODE(EPOP, B) /* A.times{ensure_pop().call} */ 58 | OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */ 59 | OPCODE(SENDVB, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) */ 60 | OPCODE(SEND, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) */ 61 | OPCODE(SENDB, BBB) /* R(a) = call(R(a),Syms(Bx),R(a+1),...,R(a+c),&R(a+c+1)) */ 62 | OPCODE(CALL, Z) /* R(0) = self.call(frame.argc, frame.argv) */ 63 | OPCODE(SUPER, BB) /* R(a) = super(R(a+1),... ,R(a+b+1)) */ 64 | OPCODE(ARGARY, BS) /* R(a) = argument array (16=m5:r1:m5:d1:lv4) */ 65 | OPCODE(ENTER, W) /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */ 66 | OPCODE(KEY_P, BB) /* R(a) = kdict.key?(Syms(b)) # todo */ 67 | OPCODE(KEYEND, Z) /* raise unless kdict.empty? # todo */ 68 | OPCODE(KARG, BB) /* R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) # todo */ 69 | OPCODE(RETURN, B) /* return R(a) (normal) */ 70 | OPCODE(RETURN_BLK, B) /* return R(a) (in-block return) */ 71 | OPCODE(BREAK, B) /* break R(a) */ 72 | OPCODE(BLKPUSH, BS) /* R(a) = block (16=m5:r1:m5:d1:lv4) */ 73 | OPCODE(ADD, B) /* R(a) = R(a)+R(a+1) */ 74 | OPCODE(ADDI, BB) /* R(a) = R(a)+mrb_int(c) */ 75 | OPCODE(SUB, B) /* R(a) = R(a)-R(a+1) */ 76 | OPCODE(SUBI, BB) /* R(a) = R(a)-C */ 77 | OPCODE(MUL, B) /* R(a) = R(a)*R(a+1) */ 78 | OPCODE(DIV, B) /* R(a) = R(a)/R(a+1) */ 79 | OPCODE(EQ, B) /* R(a) = R(a)==R(a+1) */ 80 | OPCODE(LT, B) /* R(a) = R(a)R(a+1) */ 83 | OPCODE(GE, B) /* R(a) = R(a)>=R(a+1) */ 84 | OPCODE(ARRAY, BB) /* R(a) = ary_new(R(a),R(a+1)..R(a+b)) */ 85 | OPCODE(ARRAY2, BBB) /* R(a) = ary_new(R(b),R(b+1)..R(b+c)) */ 86 | OPCODE(ARYCAT, B) /* ary_cat(R(a),R(a+1)) */ 87 | OPCODE(ARYPUSH, B) /* ary_push(R(a),R(a+1)) */ 88 | OPCODE(ARYDUP, B) /* R(a) = ary_dup(R(a)) */ 89 | OPCODE(AREF, BBB) /* R(a) = R(b)[c] */ 90 | OPCODE(ASET, BBB) /* R(a)[c] = R(b) */ 91 | OPCODE(APOST, BBB) /* *R(a),R(a+1)..R(a+C) = R(a)[b..] */ 92 | OPCODE(INTERN, B) /* R(a) = intern(R(a)) */ 93 | OPCODE(STRING, BB) /* R(a) = str_dup(Lit(b)) */ 94 | OPCODE(STRCAT, B) /* str_cat(R(a),R(a+1)) */ 95 | OPCODE(HASH, BB) /* R(a) = hash_new(R(a),R(a+1)..R(a+b)) */ 96 | OPCODE(HASHADD, BB) /* R(a) = hash_push(R(a),R(a+1)..R(a+b)) */ 97 | OPCODE(HASHCAT, B) /* R(a) = hash_cat(R(a),R(a+1)) */ 98 | OPCODE(LAMBDA, BB) /* R(a) = lambda(SEQ[b],L_LAMBDA) */ 99 | OPCODE(BLOCK, BB) /* R(a) = lambda(SEQ[b],L_BLOCK) */ 100 | OPCODE(METHOD, BB) /* R(a) = lambda(SEQ[b],L_METHOD) */ 101 | OPCODE(RANGE_INC, B) /* R(a) = range_new(R(a),R(a+1),FALSE) */ 102 | OPCODE(RANGE_EXC, B) /* R(a) = range_new(R(a),R(a+1),TRUE) */ 103 | OPCODE(OCLASS, B) /* R(a) = ::Object */ 104 | OPCODE(CLASS, BB) /* R(a) = newclass(R(a),Syms(b),R(a+1)) */ 105 | OPCODE(MODULE, BB) /* R(a) = newmodule(R(a),Syms(b)) */ 106 | OPCODE(EXEC, BB) /* R(a) = blockexec(R(a),SEQ[b]) */ 107 | OPCODE(DEF, BB) /* R(a).newmethod(Syms(b),R(a+1)) */ 108 | OPCODE(ALIAS, BB) /* alias_method(target_class,Syms(a),Syms(b)) */ 109 | OPCODE(UNDEF, B) /* undef_method(target_class,Syms(a)) */ 110 | OPCODE(SCLASS, B) /* R(a) = R(a).singleton_class */ 111 | OPCODE(TCLASS, B) /* R(a) = target_class */ 112 | OPCODE(DEBUG, BBB) /* print a,b,c */ 113 | OPCODE(ERR, B) /* raise(LocalJumpError, Lit(a)) */ 114 | OPCODE(EXT1, Z) /* make 1st operand 16bit */ 115 | OPCODE(EXT2, Z) /* make 2nd operand 16bit */ 116 | OPCODE(EXT3, Z) /* make 1st and 2nd operands 16bit */ 117 | OPCODE(STOP, Z) /* stop VM */ 118 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/proc.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/proc.h - Proc class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_PROC_H 8 | #define MRUBY_PROC_H 9 | 10 | #include "common.h" 11 | #include 12 | 13 | /** 14 | * Proc class 15 | */ 16 | MRB_BEGIN_DECL 17 | 18 | struct REnv { 19 | MRB_OBJECT_HEADER; 20 | mrb_value *stack; 21 | struct mrb_context *cxt; 22 | mrb_sym mid; 23 | }; 24 | 25 | /* flags (21bits): 1(shared flag):10(cioff/bidx):10(stack_len) */ 26 | #define MRB_ENV_SET_STACK_LEN(e,len) (e)->flags = (((e)->flags & ~0x3ff)|((unsigned int)(len) & 0x3ff)) 27 | #define MRB_ENV_STACK_LEN(e) ((mrb_int)((e)->flags & 0x3ff)) 28 | #define MRB_ENV_STACK_UNSHARED (1<<20) 29 | #define MRB_ENV_UNSHARE_STACK(e) (e)->flags |= MRB_ENV_STACK_UNSHARED 30 | #define MRB_ENV_STACK_SHARED_P(e) (((e)->flags & MRB_ENV_STACK_UNSHARED) == 0) 31 | #define MRB_ENV_BIDX(e) (((e)->flags >> 10) & 0x3ff) 32 | #define MRB_ENV_SET_BIDX(e,idx) (e)->flags = (((e)->flags & ~(0x3ff<<10))|((unsigned int)(idx) & 0x3ff)<<10) 33 | 34 | void mrb_env_unshare(mrb_state*, struct REnv*); 35 | 36 | struct RProc { 37 | MRB_OBJECT_HEADER; 38 | union { 39 | mrb_irep *irep; 40 | mrb_func_t func; 41 | } body; 42 | struct RProc *upper; 43 | union { 44 | struct RClass *target_class; 45 | struct REnv *env; 46 | } e; 47 | }; 48 | 49 | /* aspec access */ 50 | #define MRB_ASPEC_REQ(a) (((a) >> 18) & 0x1f) 51 | #define MRB_ASPEC_OPT(a) (((a) >> 13) & 0x1f) 52 | #define MRB_ASPEC_REST(a) (((a) >> 12) & 0x1) 53 | #define MRB_ASPEC_POST(a) (((a) >> 7) & 0x1f) 54 | #define MRB_ASPEC_KEY(a) (((a) >> 2) & 0x1f) 55 | #define MRB_ASPEC_KDICT(a) ((a) & (1<<1)) 56 | #define MRB_ASPEC_BLOCK(a) ((a) & 1) 57 | 58 | #define MRB_PROC_CFUNC_FL 128 59 | #define MRB_PROC_CFUNC_P(p) (((p)->flags & MRB_PROC_CFUNC_FL) != 0) 60 | #define MRB_PROC_CFUNC(p) (p)->body.func 61 | #define MRB_PROC_STRICT 256 62 | #define MRB_PROC_STRICT_P(p) (((p)->flags & MRB_PROC_STRICT) != 0) 63 | #define MRB_PROC_ORPHAN 512 64 | #define MRB_PROC_ORPHAN_P(p) (((p)->flags & MRB_PROC_ORPHAN) != 0) 65 | #define MRB_PROC_ENVSET 1024 66 | #define MRB_PROC_ENV_P(p) (((p)->flags & MRB_PROC_ENVSET) != 0) 67 | #define MRB_PROC_ENV(p) (MRB_PROC_ENV_P(p) ? (p)->e.env : NULL) 68 | #define MRB_PROC_TARGET_CLASS(p) (MRB_PROC_ENV_P(p) ? (p)->e.env->c : (p)->e.target_class) 69 | #define MRB_PROC_SET_TARGET_CLASS(p,tc) do {\ 70 | if (MRB_PROC_ENV_P(p)) {\ 71 | (p)->e.env->c = (tc);\ 72 | mrb_field_write_barrier(mrb, (struct RBasic*)(p)->e.env, (struct RBasic*)tc);\ 73 | }\ 74 | else {\ 75 | (p)->e.target_class = (tc);\ 76 | mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)tc);\ 77 | }\ 78 | } while (0) 79 | #define MRB_PROC_SCOPE 2048 80 | #define MRB_PROC_SCOPE_P(p) (((p)->flags & MRB_PROC_SCOPE) != 0) 81 | 82 | #define mrb_proc_ptr(v) ((struct RProc*)(mrb_ptr(v))) 83 | 84 | struct RProc *mrb_proc_new(mrb_state*, mrb_irep*); 85 | struct RProc *mrb_closure_new(mrb_state*, mrb_irep*); 86 | MRB_API struct RProc *mrb_proc_new_cfunc(mrb_state*, mrb_func_t); 87 | MRB_API struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int nlocals); 88 | void mrb_proc_copy(struct RProc *a, struct RProc *b); 89 | 90 | /* implementation of #send method */ 91 | mrb_value mrb_f_send(mrb_state *mrb, mrb_value self); 92 | 93 | /* following functions are defined in mruby-proc-ext so please include it when using */ 94 | MRB_API struct RProc *mrb_proc_new_cfunc_with_env(mrb_state*, mrb_func_t, mrb_int, const mrb_value*); 95 | MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state*, mrb_int); 96 | /* old name */ 97 | #define mrb_cfunc_env_get(mrb, idx) mrb_proc_cfunc_env_get(mrb, idx) 98 | 99 | #ifdef MRB_METHOD_TABLE_INLINE 100 | 101 | #define MRB_METHOD_FUNC_FL ((uintptr_t)1) 102 | #define MRB_METHOD_FUNC_P(m) (((uintptr_t)(m))&MRB_METHOD_FUNC_FL) 103 | #define MRB_METHOD_FUNC(m) ((mrb_func_t)((uintptr_t)(m)&(~MRB_METHOD_FUNC_FL))) 104 | #define MRB_METHOD_FROM_FUNC(m,fn) m=(mrb_method_t)((struct RProc*)((uintptr_t)(fn)|MRB_METHOD_FUNC_FL)) 105 | #define MRB_METHOD_FROM_PROC(m,pr) m=(mrb_method_t)(struct RProc*)(pr) 106 | #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) 107 | #define MRB_METHOD_PROC(m) ((struct RProc*)(m)) 108 | #define MRB_METHOD_UNDEF_P(m) ((m)==0) 109 | 110 | #else 111 | 112 | #define MRB_METHOD_FUNC_P(m) ((m).func_p) 113 | #define MRB_METHOD_FUNC(m) ((m).func) 114 | #define MRB_METHOD_FROM_FUNC(m,fn) do{(m).func_p=TRUE;(m).func=(fn);}while(0) 115 | #define MRB_METHOD_FROM_PROC(m,pr) do{(m).func_p=FALSE;(m).proc=(pr);}while(0) 116 | #define MRB_METHOD_PROC_P(m) (!MRB_METHOD_FUNC_P(m)) 117 | #define MRB_METHOD_PROC(m) ((m).proc) 118 | #define MRB_METHOD_UNDEF_P(m) ((m).proc==NULL) 119 | 120 | #endif /* MRB_METHOD_TABLE_INLINE */ 121 | 122 | #define MRB_METHOD_CFUNC_P(m) (MRB_METHOD_FUNC_P(m)?TRUE:(MRB_METHOD_PROC(m)?(MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m))):FALSE)) 123 | #define MRB_METHOD_CFUNC(m) (MRB_METHOD_FUNC_P(m)?MRB_METHOD_FUNC(m):((MRB_METHOD_PROC(m)&&MRB_PROC_CFUNC_P(MRB_METHOD_PROC(m)))?MRB_PROC_CFUNC(MRB_METHOD_PROC(m)):NULL)) 124 | 125 | 126 | #include 127 | KHASH_DECLARE(mt, mrb_sym, mrb_method_t, TRUE) 128 | 129 | MRB_END_DECL 130 | 131 | #endif /* MRUBY_PROC_H */ 132 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/range.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/range.h - Range class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_RANGE_H 8 | #define MRUBY_RANGE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Range class 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef struct mrb_range_edges { 18 | mrb_value beg; 19 | mrb_value end; 20 | } mrb_range_edges; 21 | 22 | struct RRange { 23 | MRB_OBJECT_HEADER; 24 | mrb_range_edges *edges; 25 | mrb_bool excl : 1; 26 | }; 27 | 28 | MRB_API struct RRange* mrb_range_ptr(mrb_state *mrb, mrb_value v); 29 | #define mrb_range_raw_ptr(v) ((struct RRange*)mrb_ptr(v)) 30 | #define mrb_range_value(p) mrb_obj_value((void*)(p)) 31 | 32 | /* 33 | * Initializes a Range. 34 | * 35 | * If the third parameter is FALSE then it includes the last value in the range. 36 | * If the third parameter is TRUE then it excludes the last value in the range. 37 | * 38 | * @param start the beginning value. 39 | * @param end the ending value. 40 | * @param exclude represents the inclusion or exclusion of the last value. 41 | */ 42 | MRB_API mrb_value mrb_range_new(mrb_state *mrb, mrb_value start, mrb_value end, mrb_bool exclude); 43 | 44 | MRB_API mrb_int mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len, mrb_bool trunc); 45 | mrb_value mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, const mrb_value *argv, mrb_value (*func)(mrb_state*, mrb_value, mrb_int)); 46 | 47 | MRB_END_DECL 48 | 49 | #endif /* MRUBY_RANGE_H */ 50 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/re.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/re.h - Regexp class 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_RE_H 8 | #define MRUBY_RE_H 9 | 10 | MRB_BEGIN_DECL 11 | 12 | #define REGEXP_CLASS "Regexp" 13 | 14 | MRB_END_DECL 15 | 16 | #endif /* RE_H */ 17 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/throw.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/throw.h - mruby exception throwing handler 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRB_THROW_H 8 | #define MRB_THROW_H 9 | 10 | #if defined(MRB_ENABLE_CXX_ABI) 11 | # if !defined(__cplusplus) 12 | # error Trying to use C++ exception handling in C code 13 | # endif 14 | #endif 15 | 16 | #if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus) 17 | 18 | #define MRB_TRY(buf) try { 19 | #define MRB_CATCH(buf) } catch(mrb_jmpbuf_impl e) { if (e != (buf)->impl) { throw e; } 20 | #define MRB_END_EXC(buf) } 21 | 22 | #define MRB_THROW(buf) throw((buf)->impl) 23 | typedef mrb_int mrb_jmpbuf_impl; 24 | 25 | #else 26 | 27 | #include 28 | 29 | #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) 30 | #define MRB_SETJMP _setjmp 31 | #define MRB_LONGJMP _longjmp 32 | #else 33 | #define MRB_SETJMP setjmp 34 | #define MRB_LONGJMP longjmp 35 | #endif 36 | 37 | #define MRB_TRY(buf) if (MRB_SETJMP((buf)->impl) == 0) { 38 | #define MRB_CATCH(buf) } else { 39 | #define MRB_END_EXC(buf) } 40 | 41 | #define MRB_THROW(buf) MRB_LONGJMP((buf)->impl, 1); 42 | #define mrb_jmpbuf_impl jmp_buf 43 | 44 | #endif 45 | 46 | struct mrb_jmpbuf { 47 | mrb_jmpbuf_impl impl; 48 | 49 | #if defined(MRB_ENABLE_CXX_EXCEPTION) && defined(__cplusplus) 50 | static mrb_int jmpbuf_id; 51 | mrb_jmpbuf() : impl(jmpbuf_id++) {} 52 | #endif 53 | }; 54 | 55 | #endif /* MRB_THROW_H */ 56 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/value.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/value.h - mruby value definitions 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VALUE_H 8 | #define MRUBY_VALUE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * MRuby Value definition functions and macros. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef uint32_t mrb_sym; 18 | typedef uint8_t mrb_bool; 19 | struct mrb_state; 20 | 21 | #if defined(MRB_INT16) && defined(MRB_INT64) 22 | # error "You can't define MRB_INT16 and MRB_INT64 at the same time." 23 | #endif 24 | 25 | #if defined _MSC_VER && _MSC_VER < 1800 26 | # define PRIo64 "llo" 27 | # define PRId64 "lld" 28 | # define PRIx64 "llx" 29 | # define PRIo16 "ho" 30 | # define PRId16 "hd" 31 | # define PRIx16 "hx" 32 | # define PRIo32 "o" 33 | # define PRId32 "d" 34 | # define PRIx32 "x" 35 | #else 36 | # include 37 | #endif 38 | 39 | #if defined(MRB_INT64) 40 | typedef int64_t mrb_int; 41 | # define MRB_INT_BIT 64 42 | # define MRB_INT_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT) 43 | # define MRB_INT_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT) 44 | # define MRB_PRIo PRIo64 45 | # define MRB_PRId PRId64 46 | # define MRB_PRIx PRIx64 47 | #elif defined(MRB_INT16) 48 | typedef int16_t mrb_int; 49 | # define MRB_INT_BIT 16 50 | # define MRB_INT_MIN (INT16_MIN>>MRB_FIXNUM_SHIFT) 51 | # define MRB_INT_MAX (INT16_MAX>>MRB_FIXNUM_SHIFT) 52 | # define MRB_PRIo PRIo16 53 | # define MRB_PRId PRId16 54 | # define MRB_PRIx PRIx16 55 | #else 56 | typedef int32_t mrb_int; 57 | # define MRB_INT_BIT 32 58 | # define MRB_INT_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT) 59 | # define MRB_INT_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT) 60 | # define MRB_PRIo PRIo32 61 | # define MRB_PRId PRId32 62 | # define MRB_PRIx PRIx32 63 | #endif 64 | 65 | 66 | #ifndef MRB_WITHOUT_FLOAT 67 | MRB_API double mrb_float_read(const char*, char**); 68 | #ifdef MRB_USE_FLOAT 69 | typedef float mrb_float; 70 | #else 71 | typedef double mrb_float; 72 | #endif 73 | #endif 74 | 75 | #if defined _MSC_VER && _MSC_VER < 1900 76 | # ifndef __cplusplus 77 | # define inline __inline 78 | # endif 79 | # include 80 | MRB_API int mrb_msvc_vsnprintf(char *s, size_t n, const char *format, va_list arg); 81 | MRB_API int mrb_msvc_snprintf(char *s, size_t n, const char *format, ...); 82 | # define vsnprintf(s, n, format, arg) mrb_msvc_vsnprintf(s, n, format, arg) 83 | # define snprintf(s, n, format, ...) mrb_msvc_snprintf(s, n, format, __VA_ARGS__) 84 | # if _MSC_VER < 1800 && !defined MRB_WITHOUT_FLOAT 85 | # include 86 | # define isfinite(n) _finite(n) 87 | # define isnan _isnan 88 | # define isinf(n) (!_finite(n) && !_isnan(n)) 89 | # define signbit(n) (_copysign(1.0, (n)) < 0.0) 90 | static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000; 91 | # define INFINITY (*(float *)&IEEE754_INFINITY_BITS_SINGLE) 92 | # define NAN ((float)(INFINITY - INFINITY)) 93 | # endif 94 | #endif 95 | 96 | enum mrb_vtype { 97 | MRB_TT_FALSE = 0, /* 0 */ 98 | MRB_TT_FREE, /* 1 */ 99 | MRB_TT_TRUE, /* 2 */ 100 | MRB_TT_FIXNUM, /* 3 */ 101 | MRB_TT_SYMBOL, /* 4 */ 102 | MRB_TT_UNDEF, /* 5 */ 103 | MRB_TT_FLOAT, /* 6 */ 104 | MRB_TT_CPTR, /* 7 */ 105 | MRB_TT_OBJECT, /* 8 */ 106 | MRB_TT_CLASS, /* 9 */ 107 | MRB_TT_MODULE, /* 10 */ 108 | MRB_TT_ICLASS, /* 11 */ 109 | MRB_TT_SCLASS, /* 12 */ 110 | MRB_TT_PROC, /* 13 */ 111 | MRB_TT_ARRAY, /* 14 */ 112 | MRB_TT_HASH, /* 15 */ 113 | MRB_TT_STRING, /* 16 */ 114 | MRB_TT_RANGE, /* 17 */ 115 | MRB_TT_EXCEPTION, /* 18 */ 116 | MRB_TT_FILE, /* 19 */ 117 | MRB_TT_ENV, /* 20 */ 118 | MRB_TT_DATA, /* 21 */ 119 | MRB_TT_FIBER, /* 22 */ 120 | MRB_TT_ISTRUCT, /* 23 */ 121 | MRB_TT_BREAK, /* 24 */ 122 | MRB_TT_MAXDEFINE /* 25 */ 123 | }; 124 | 125 | #include 126 | 127 | #ifdef MRB_DOCUMENTATION_BLOCK 128 | 129 | /** 130 | * @abstract 131 | * MRuby value boxing. 132 | * 133 | * Actual implementation depends on configured boxing type. 134 | * 135 | * @see mruby/boxing_no.h Default boxing representation 136 | * @see mruby/boxing_word.h Word representation 137 | * @see mruby/boxing_nan.h Boxed double representation 138 | */ 139 | typedef void mrb_value; 140 | 141 | #endif 142 | 143 | #if defined(MRB_NAN_BOXING) 144 | #include "boxing_nan.h" 145 | #elif defined(MRB_WORD_BOXING) 146 | #include "boxing_word.h" 147 | #else 148 | #include "boxing_no.h" 149 | #endif 150 | 151 | #ifndef mrb_fixnum_p 152 | #define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM) 153 | #endif 154 | #ifndef mrb_undef_p 155 | #define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF) 156 | #endif 157 | #ifndef mrb_nil_p 158 | #define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !mrb_fixnum(o)) 159 | #endif 160 | #ifndef mrb_bool 161 | #define mrb_bool(o) (mrb_type(o) != MRB_TT_FALSE) 162 | #endif 163 | #ifndef MRB_WITHOUT_FLOAT 164 | #define mrb_float_p(o) (mrb_type(o) == MRB_TT_FLOAT) 165 | #endif 166 | #define mrb_symbol_p(o) (mrb_type(o) == MRB_TT_SYMBOL) 167 | #define mrb_array_p(o) (mrb_type(o) == MRB_TT_ARRAY) 168 | #define mrb_string_p(o) (mrb_type(o) == MRB_TT_STRING) 169 | #define mrb_hash_p(o) (mrb_type(o) == MRB_TT_HASH) 170 | #define mrb_cptr_p(o) (mrb_type(o) == MRB_TT_CPTR) 171 | #define mrb_exception_p(o) (mrb_type(o) == MRB_TT_EXCEPTION) 172 | #define mrb_test(o) mrb_bool(o) 173 | MRB_API mrb_bool mrb_regexp_p(struct mrb_state*, mrb_value); 174 | 175 | /* 176 | * Returns a float in Ruby. 177 | */ 178 | #ifndef MRB_WITHOUT_FLOAT 179 | MRB_INLINE mrb_value mrb_float_value(struct mrb_state *mrb, mrb_float f) 180 | { 181 | mrb_value v; 182 | (void) mrb; 183 | SET_FLOAT_VALUE(mrb, v, f); 184 | return v; 185 | } 186 | #endif 187 | 188 | static inline mrb_value 189 | mrb_cptr_value(struct mrb_state *mrb, void *p) 190 | { 191 | mrb_value v; 192 | (void) mrb; 193 | SET_CPTR_VALUE(mrb,v,p); 194 | return v; 195 | } 196 | 197 | /* 198 | * Returns a fixnum in Ruby. 199 | */ 200 | MRB_INLINE mrb_value mrb_fixnum_value(mrb_int i) 201 | { 202 | mrb_value v; 203 | SET_INT_VALUE(v, i); 204 | return v; 205 | } 206 | 207 | static inline mrb_value 208 | mrb_symbol_value(mrb_sym i) 209 | { 210 | mrb_value v; 211 | SET_SYM_VALUE(v, i); 212 | return v; 213 | } 214 | 215 | static inline mrb_value 216 | mrb_obj_value(void *p) 217 | { 218 | mrb_value v; 219 | SET_OBJ_VALUE(v, (struct RBasic*)p); 220 | mrb_assert(p == mrb_ptr(v)); 221 | mrb_assert(((struct RBasic*)p)->tt == mrb_type(v)); 222 | return v; 223 | } 224 | 225 | 226 | /* 227 | * Get a nil mrb_value object. 228 | * 229 | * @return 230 | * nil mrb_value object reference. 231 | */ 232 | MRB_INLINE mrb_value mrb_nil_value(void) 233 | { 234 | mrb_value v; 235 | SET_NIL_VALUE(v); 236 | return v; 237 | } 238 | 239 | /* 240 | * Returns false in Ruby. 241 | */ 242 | MRB_INLINE mrb_value mrb_false_value(void) 243 | { 244 | mrb_value v; 245 | SET_FALSE_VALUE(v); 246 | return v; 247 | } 248 | 249 | /* 250 | * Returns true in Ruby. 251 | */ 252 | MRB_INLINE mrb_value mrb_true_value(void) 253 | { 254 | mrb_value v; 255 | SET_TRUE_VALUE(v); 256 | return v; 257 | } 258 | 259 | static inline mrb_value 260 | mrb_bool_value(mrb_bool boolean) 261 | { 262 | mrb_value v; 263 | SET_BOOL_VALUE(v, boolean); 264 | return v; 265 | } 266 | 267 | static inline mrb_value 268 | mrb_undef_value(void) 269 | { 270 | mrb_value v; 271 | SET_UNDEF_VALUE(v); 272 | return v; 273 | } 274 | 275 | #ifdef MRB_USE_ETEXT_EDATA 276 | #if (defined(__APPLE__) && defined(__MACH__)) 277 | #include 278 | static inline mrb_bool 279 | mrb_ro_data_p(const char *p) 280 | { 281 | return (const char*)get_etext() < p && p < (const char*)get_edata(); 282 | } 283 | #else 284 | extern char _etext[]; 285 | #ifdef MRB_NO_INIT_ARRAY_START 286 | extern char _edata[]; 287 | 288 | static inline mrb_bool 289 | mrb_ro_data_p(const char *p) 290 | { 291 | return _etext < p && p < _edata; 292 | } 293 | #else 294 | extern char __init_array_start[]; 295 | 296 | static inline mrb_bool 297 | mrb_ro_data_p(const char *p) 298 | { 299 | return _etext < p && p < (char*)&__init_array_start; 300 | } 301 | #endif 302 | #endif 303 | #else 304 | # define mrb_ro_data_p(p) FALSE 305 | #endif 306 | 307 | MRB_END_DECL 308 | 309 | #endif /* MRUBY_VALUE_H */ 310 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/variable.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/variable.h - mruby variables 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VARIABLE_H 8 | #define MRUBY_VARIABLE_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * Functions to access mruby variables. 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | typedef struct global_variable { 18 | int counter; 19 | mrb_value *data; 20 | mrb_value (*getter)(void); 21 | void (*setter)(void); 22 | /* void (*marker)(); */ 23 | /* int block_trace; */ 24 | /* struct trace_var *trace; */ 25 | } global_variable; 26 | 27 | struct global_entry { 28 | global_variable *var; 29 | mrb_sym id; 30 | }; 31 | 32 | mrb_value mrb_vm_special_get(mrb_state*, mrb_sym); 33 | void mrb_vm_special_set(mrb_state*, mrb_sym, mrb_value); 34 | mrb_value mrb_vm_cv_get(mrb_state*, mrb_sym); 35 | void mrb_vm_cv_set(mrb_state*, mrb_sym, mrb_value); 36 | mrb_value mrb_vm_const_get(mrb_state*, mrb_sym); 37 | void mrb_vm_const_set(mrb_state*, mrb_sym, mrb_value); 38 | MRB_API mrb_value mrb_const_get(mrb_state*, mrb_value, mrb_sym); 39 | MRB_API void mrb_const_set(mrb_state*, mrb_value, mrb_sym, mrb_value); 40 | MRB_API mrb_bool mrb_const_defined(mrb_state*, mrb_value, mrb_sym); 41 | MRB_API void mrb_const_remove(mrb_state*, mrb_value, mrb_sym); 42 | 43 | MRB_API mrb_bool mrb_iv_name_sym_p(mrb_state *mrb, mrb_sym sym); 44 | MRB_API void mrb_iv_name_sym_check(mrb_state *mrb, mrb_sym sym); 45 | MRB_API mrb_value mrb_obj_iv_get(mrb_state *mrb, struct RObject *obj, mrb_sym sym); 46 | MRB_API void mrb_obj_iv_set(mrb_state *mrb, struct RObject *obj, mrb_sym sym, mrb_value v); 47 | MRB_API mrb_bool mrb_obj_iv_defined(mrb_state *mrb, struct RObject *obj, mrb_sym sym); 48 | MRB_API mrb_value mrb_iv_get(mrb_state *mrb, mrb_value obj, mrb_sym sym); 49 | MRB_API void mrb_iv_set(mrb_state *mrb, mrb_value obj, mrb_sym sym, mrb_value v); 50 | MRB_API mrb_bool mrb_iv_defined(mrb_state*, mrb_value, mrb_sym); 51 | MRB_API mrb_value mrb_iv_remove(mrb_state *mrb, mrb_value obj, mrb_sym sym); 52 | MRB_API void mrb_iv_copy(mrb_state *mrb, mrb_value dst, mrb_value src); 53 | MRB_API mrb_bool mrb_const_defined_at(mrb_state *mrb, mrb_value mod, mrb_sym id); 54 | 55 | /** 56 | * Get a global variable. Will return nil if the var does not exist 57 | * 58 | * Example: 59 | * 60 | * !!!ruby 61 | * # Ruby style 62 | * var = $value 63 | * 64 | * !!!c 65 | * // C style 66 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 67 | * mrb_value var = mrb_gv_get(mrb, sym); 68 | * 69 | * @param mrb The mruby state reference 70 | * @param sym The name of the global variable 71 | * @return The value of that global variable. May be nil 72 | */ 73 | MRB_API mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym); 74 | 75 | /** 76 | * Set a global variable 77 | * 78 | * Example: 79 | * 80 | * !!!ruby 81 | * # Ruby style 82 | * $value = "foo" 83 | * 84 | * !!!c 85 | * // C style 86 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 87 | * mrb_gv_set(mrb, sym, mrb_str_new_lit("foo")); 88 | * 89 | * @param mrb The mruby state reference 90 | * @param sym The name of the global variable 91 | * @param val The value of the global variable 92 | */ 93 | MRB_API void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val); 94 | 95 | /** 96 | * Remove a global variable. 97 | * 98 | * Example: 99 | * 100 | * !!!ruby 101 | * # Ruby style 102 | * $value = nil 103 | * 104 | * !!!c 105 | * // C style 106 | * mrb_sym sym = mrb_intern_lit(mrb, "$value"); 107 | * mrb_gv_remove(mrb, sym); 108 | * 109 | * @param mrb The mruby state reference 110 | * @param sym The name of the global variable 111 | * @param val The value of the global variable 112 | */ 113 | MRB_API void mrb_gv_remove(mrb_state *mrb, mrb_sym sym); 114 | 115 | MRB_API mrb_value mrb_cv_get(mrb_state *mrb, mrb_value mod, mrb_sym sym); 116 | MRB_API void mrb_mod_cv_set(mrb_state *mrb, struct RClass * c, mrb_sym sym, mrb_value v); 117 | MRB_API void mrb_cv_set(mrb_state *mrb, mrb_value mod, mrb_sym sym, mrb_value v); 118 | MRB_API mrb_bool mrb_cv_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym); 119 | mrb_value mrb_obj_iv_inspect(mrb_state*, struct RObject*); 120 | mrb_value mrb_mod_constants(mrb_state *mrb, mrb_value mod); 121 | mrb_value mrb_f_global_variables(mrb_state *mrb, mrb_value self); 122 | mrb_value mrb_obj_instance_variables(mrb_state*, mrb_value); 123 | mrb_value mrb_mod_class_variables(mrb_state*, mrb_value); 124 | mrb_value mrb_mod_cv_get(mrb_state *mrb, struct RClass * c, mrb_sym sym); 125 | mrb_bool mrb_mod_cv_defined(mrb_state *mrb, struct RClass * c, mrb_sym sym); 126 | 127 | /* GC functions */ 128 | void mrb_gc_mark_gv(mrb_state*); 129 | void mrb_gc_free_gv(mrb_state*); 130 | void mrb_gc_mark_iv(mrb_state*, struct RObject*); 131 | size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*); 132 | void mrb_gc_free_iv(mrb_state*, struct RObject*); 133 | 134 | MRB_END_DECL 135 | 136 | #endif /* MRUBY_VARIABLE_H */ 137 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Headers/mruby/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | ** mruby/version.h - mruby version definition 3 | ** 4 | ** See Copyright Notice in mruby.h 5 | */ 6 | 7 | #ifndef MRUBY_VERSION_H 8 | #define MRUBY_VERSION_H 9 | 10 | #include "common.h" 11 | 12 | /** 13 | * mruby version definition macros 14 | */ 15 | MRB_BEGIN_DECL 16 | 17 | /* 18 | * A passed in expression. 19 | */ 20 | #define MRB_STRINGIZE0(expr) #expr 21 | 22 | /* 23 | * Passes in an expression to MRB_STRINGIZE0. 24 | */ 25 | #define MRB_STRINGIZE(expr) MRB_STRINGIZE0(expr) 26 | 27 | /* 28 | * The version of Ruby used by mruby. 29 | */ 30 | #define MRUBY_RUBY_VERSION "2.0" 31 | 32 | /* 33 | * Ruby engine. 34 | */ 35 | #define MRUBY_RUBY_ENGINE "mruby" 36 | 37 | /* 38 | * Major release version number. 39 | */ 40 | #define MRUBY_RELEASE_MAJOR 2 41 | 42 | /* 43 | * Minor release version number. 44 | */ 45 | #define MRUBY_RELEASE_MINOR 0 46 | 47 | /* 48 | * Tiny release version number. 49 | */ 50 | #define MRUBY_RELEASE_TEENY 0 51 | 52 | /* 53 | * The mruby version. 54 | */ 55 | #define MRUBY_VERSION MRB_STRINGIZE(MRUBY_RELEASE_MAJOR) "." MRB_STRINGIZE(MRUBY_RELEASE_MINOR) "." MRB_STRINGIZE(MRUBY_RELEASE_TEENY) 56 | 57 | /* 58 | * Release number. 59 | */ 60 | #define MRUBY_RELEASE_NO (MRUBY_RELEASE_MAJOR * 100 * 100 + MRUBY_RELEASE_MINOR * 100 + MRUBY_RELEASE_TEENY) 61 | 62 | /* 63 | * Release year. 64 | */ 65 | #define MRUBY_RELEASE_YEAR 2018 66 | 67 | /* 68 | * Release month. 69 | */ 70 | #define MRUBY_RELEASE_MONTH 12 71 | 72 | /* 73 | * Release day. 74 | */ 75 | #define MRUBY_RELEASE_DAY 11 76 | 77 | /* 78 | * Release date as a string. 79 | */ 80 | #define MRUBY_RELEASE_DATE MRB_STRINGIZE(MRUBY_RELEASE_YEAR) "-" MRB_STRINGIZE(MRUBY_RELEASE_MONTH) "-" MRB_STRINGIZE(MRUBY_RELEASE_DAY) 81 | 82 | /* 83 | * The year mruby was first created. 84 | */ 85 | #define MRUBY_BIRTH_YEAR 2010 86 | 87 | /* 88 | * MRuby's authors. 89 | */ 90 | #define MRUBY_AUTHOR "mruby developers" 91 | 92 | /* 93 | * mruby's version, and release date. 94 | */ 95 | #define MRUBY_DESCRIPTION \ 96 | "mruby " MRUBY_VERSION \ 97 | " (" MRUBY_RELEASE_DATE ") " \ 98 | 99 | /* 100 | * mruby's copyright information. 101 | */ 102 | #define MRUBY_COPYRIGHT \ 103 | "mruby - Copyright (c) " \ 104 | MRB_STRINGIZE(MRUBY_BIRTH_YEAR)"-" \ 105 | MRB_STRINGIZE(MRUBY_RELEASE_YEAR)" " \ 106 | MRUBY_AUTHOR \ 107 | 108 | MRB_END_DECL 109 | 110 | #endif /* MRUBY_VERSION_H */ 111 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | MRuby 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundlePackageType 12 | FMWK 13 | CFBundleIdentifier 14 | MRuby.MRuby 15 | CFBundleExecutable 16 | MRuby 17 | CFBundleVersion 18 | 1 19 | 20 | 21 | -------------------------------------------------------------------------------- /tvos/MRuby.framework/MRuby: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby2d/mruby-frameworks/83906f0c55eba587a5b1a95e05a14dda1c31acf0/tvos/MRuby.framework/MRuby --------------------------------------------------------------------------------