w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

gc.c
Go to the documentation of this file.
1 /*
2 ** gc.c - garbage collector for mruby
3 **
4 ** See Copyright Notice in mruby.h
5 */
6 
7 #include <string.h>
8 #include <stdlib.h>
9 #ifdef MRB_USE_MALLOC_TRIM
10 #include <malloc.h>
11 #endif
12 #include <mruby.h>
13 #include <mruby/array.h>
14 #include <mruby/class.h>
15 #include <mruby/data.h>
16 #include <mruby/istruct.h>
17 #include <mruby/hash.h>
18 #include <mruby/proc.h>
19 #include <mruby/range.h>
20 #include <mruby/string.h>
21 #include <mruby/variable.h>
22 #include <mruby/gc.h>
23 #include <mruby/error.h>
24 #include <mruby/throw.h>
25 #include <mruby/presym.h>
26 
27 /*
28  = Tri-color Incremental Garbage Collection
29 
30  mruby's GC is Tri-color Incremental GC with Mark & Sweep.
31  Algorithm details are omitted.
32  Instead, the implementation part is described below.
33 
34  == Object's Color
35 
36  Each object can be painted in three colors:
37 
38  * White - Unmarked.
39  * Gray - Marked, But the child objects are unmarked.
40  * Black - Marked, the child objects are also marked.
41 
42  Extra color
43 
44  * Red - Static (ROM object) no need to be collected.
45  - All child objects should be Red as well.
46 
47  == Two White Types
48 
49  There are two white color types in a flip-flop fashion: White-A and White-B,
50  which respectively represent the Current White color (the newly allocated
51  objects in the current GC cycle) and the Sweep Target White color (the
52  dead objects to be swept).
53 
54  A and B will be switched just at the beginning of the next GC cycle. At
55  that time, all the dead objects have been swept, while the newly created
56  objects in the current GC cycle which finally remains White are now
57  regarded as dead objects. Instead of traversing all the White-A objects and
58  painting them as White-B, just switch the meaning of White-A and White-B as
59  this will be much cheaper.
60 
61  As a result, the objects we sweep in the current GC cycle are always
62  left from the previous GC cycle. This allows us to sweep objects
63  incrementally, without the disturbance of the newly created objects.
64 
65  == Execution Timing
66 
67  GC Execution Time and Each step interval are decided by live objects count.
68  List of Adjustment API:
69 
70  * gc_interval_ratio_set
71  * gc_step_ratio_set
72 
73  For details, see the comments for each function.
74 
75  == Write Barrier
76 
77  mruby implementer and C extension library writer must insert a write
78  barrier when updating a reference from a field of an object.
79  When updating a reference from a field of object A to object B,
80  two different types of write barrier are available:
81 
82  * mrb_field_write_barrier - target B object for a mark.
83  * mrb_write_barrier - target A object for a mark.
84 
85  == Generational Mode
86 
87  mruby's GC offers an Generational Mode while re-using the tri-color GC
88  infrastructure. It will treat the Black objects as Old objects after each
89  sweep phase, instead of painting them White. The key ideas are still the same
90  as traditional generational GC:
91 
92  * Minor GC - just traverse the Young objects (Gray objects) in the mark
93  phase, then only sweep the newly created objects, and leave
94  the Old objects live.
95 
96  * Major GC - same as a full regular GC cycle.
97 
98  The difference from "traditional" generational GC is, that the major GC
99  in mruby is triggered incrementally in a tri-color manner.
100 
101 
102  For details, see the comments for each function.
103 
104 */
105 
106 struct free_obj {
108  struct RBasic *next;
109 };
110 
113  char padding[sizeof(void*) * 4 - sizeof(uint32_t)];
114 };
115 
116 typedef struct {
117  union {
118  struct RVALUE_initializer init; /* must be first member to ensure initialization */
119  struct free_obj free;
120  struct RBasic basic;
121  struct RObject object;
122  struct RClass klass;
123  struct RString string;
124  struct RArray array;
125  struct RHash hash;
126  struct RRange range;
127  struct RData data;
128  struct RIStruct istruct;
129  struct RProc proc;
130  struct REnv env;
131  struct RFiber fiber;
132  struct RException exc;
133  struct RBreak brk;
134 #ifdef MRB_WORD_BOXING
135 #ifndef MRB_NO_FLOAT
136  struct RFloat floatv;
137 #endif
138  struct RCptr cptr;
139 #endif
140  } as;
141 } RVALUE;
142 
143 #ifdef GC_PROFILE
144 #include <stdio.h>
145 #include <sys/time.h>
146 
147 static double program_invoke_time = 0;
148 static double gc_time = 0;
149 static double gc_total_time = 0;
150 
151 static double
152 gettimeofday_time(void)
153 {
154  struct timeval tv;
155  gettimeofday(&tv, NULL);
156  return tv.tv_sec + tv.tv_usec * 1e-6;
157 }
158 
159 #define GC_INVOKE_TIME_REPORT(with) do {\
160  fprintf(stderr, "%s\n", with);\
161  fprintf(stderr, "gc_invoke: %19.3f\n", gettimeofday_time() - program_invoke_time);\
162  fprintf(stderr, "is_generational: %d\n", is_generational(gc));\
163  fprintf(stderr, "is_major_gc: %d\n", is_major_gc(gc));\
164 } while(0)
165 
166 #define GC_TIME_START do {\
167  gc_time = gettimeofday_time();\
168 } while(0)
169 
170 #define GC_TIME_STOP_AND_REPORT do {\
171  gc_time = gettimeofday_time() - gc_time;\
172  gc_total_time += gc_time;\
173  fprintf(stderr, "gc_state: %d\n", gc->state);\
174  fprintf(stderr, "live: %zu\n", gc->live);\
175  fprintf(stderr, "majorgc_old_threshold: %zu\n", gc->majorgc_old_threshold);\
176  fprintf(stderr, "gc_threshold: %zu\n", gc->threshold);\
177  fprintf(stderr, "gc_time: %30.20f\n", gc_time);\
178  fprintf(stderr, "gc_total_time: %30.20f\n\n", gc_total_time);\
179 } while(0)
180 #else
181 #define GC_INVOKE_TIME_REPORT(s)
182 #define GC_TIME_START
183 #define GC_TIME_STOP_AND_REPORT
184 #endif
185 
186 #ifdef GC_DEBUG
187 #define DEBUG(x) (x)
188 #else
189 #define DEBUG(x)
190 #endif
191 
192 #ifndef MRB_HEAP_PAGE_SIZE
193 #define MRB_HEAP_PAGE_SIZE 1024
194 #endif
195 
196 #define GC_STEP_SIZE 1024
197 
198 /* white: 001 or 010, black: 100, gray: 000 */
199 #define GC_GRAY 0
200 #define GC_WHITE_A 1
201 #define GC_WHITE_B (1 << 1)
202 #define GC_BLACK (1 << 2)
203 #define GC_RED 7
204 #define GC_WHITES (GC_WHITE_A | GC_WHITE_B)
205 #define GC_COLOR_MASK 7
206 
207 #define paint_gray(o) ((o)->color = GC_GRAY)
208 #define paint_black(o) ((o)->color = GC_BLACK)
209 #define paint_white(o) ((o)->color = GC_WHITES)
210 #define paint_partial_white(s, o) ((o)->color = (s)->current_white_part)
211 #define is_gray(o) ((o)->color == GC_GRAY)
212 #define is_white(o) ((o)->color & GC_WHITES)
213 #define is_black(o) ((o)->color == GC_BLACK)
214 #define is_red(o) ((o)->color == GC_RED)
215 #define flip_white_part(s) ((s)->current_white_part = other_white_part(s))
216 #define other_white_part(s) ((s)->current_white_part ^ GC_WHITES)
217 #define is_dead(s, o) (((o)->color & other_white_part(s) & GC_WHITES) || (o)->tt == MRB_TT_FREE)
218 
219 #define objects(p) ((RVALUE *)p->objects)
220 
222 
223 MRB_API void*
224 mrb_realloc_simple(mrb_state *mrb, void *p, size_t len)
225 {
226  void *p2;
227 
228  p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud);
229  if (!p2 && len > 0 && mrb->gc.heaps) {
230  mrb_full_gc(mrb);
231  p2 = (mrb->allocf)(mrb, p, len, mrb->allocf_ud);
232  }
233 
234  return p2;
235 }
236 
237 MRB_API void*
238 mrb_realloc(mrb_state *mrb, void *p, size_t len)
239 {
240  void *p2;
241 
242  p2 = mrb_realloc_simple(mrb, p, len);
243  if (len == 0) return p2;
244  if (p2 == NULL) {
245  mrb->gc.out_of_memory = TRUE;
246  mrb_raise_nomemory(mrb);
247  }
248  else {
249  mrb->gc.out_of_memory = FALSE;
250  }
251 
252  return p2;
253 }
254 
255 MRB_API void*
256 mrb_malloc(mrb_state *mrb, size_t len)
257 {
258  return mrb_realloc(mrb, 0, len);
259 }
260 
261 MRB_API void*
263 {
264  return mrb_realloc_simple(mrb, 0, len);
265 }
266 
267 MRB_API void*
268 mrb_calloc(mrb_state *mrb, size_t nelem, size_t len)
269 {
270  void *p;
271 
272  if (nelem > 0 && len > 0 &&
273  nelem <= SIZE_MAX / len) {
274  size_t size;
275  size = nelem * len;
276  p = mrb_malloc(mrb, size);
277 
278  memset(p, 0, size);
279  }
280  else {
281  p = NULL;
282  }
283 
284  return p;
285 }
286 
287 MRB_API void
288 mrb_free(mrb_state *mrb, void *p)
289 {
290  (mrb->allocf)(mrb, p, 0, mrb->allocf_ud);
291 }
292 
293 MRB_API void*
294 mrb_alloca(mrb_state *mrb, size_t size)
295 {
296  struct RString *s;
297  s = (struct RString*)mrb_obj_alloc(mrb, MRB_TT_STRING, mrb->string_class);
298  return s->as.heap.ptr = (char*)mrb_malloc(mrb, size);
299 }
300 
301 static mrb_bool
302 heap_p(mrb_gc *gc, struct RBasic *object)
303 {
305 
306  page = gc->heaps;
307  while (page) {
308  RVALUE *p;
309 
310  p = objects(page);
311  if (&p[0].as.basic <= object && object <= &p[MRB_HEAP_PAGE_SIZE].as.basic) {
312  return TRUE;
313  }
314  page = page->next;
315  }
316  return FALSE;
317 }
318 
320 mrb_object_dead_p(mrb_state *mrb, struct RBasic *object) {
321  mrb_gc *gc = &mrb->gc;
322  if (!heap_p(gc, object)) return TRUE;
323  return is_dead(gc, object);
324 }
325 
326 static void
328 {
329  page->next = gc->heaps;
330  if (gc->heaps)
331  gc->heaps->prev = page;
332  gc->heaps = page;
333 }
334 
335 static void
337 {
338  if (page->prev)
339  page->prev->next = page->next;
340  if (page->next)
341  page->next->prev = page->prev;
342  if (gc->heaps == page)
343  gc->heaps = page->next;
344  page->prev = NULL;
345  page->next = NULL;
346 }
347 
348 static void
350 {
351  page->free_next = gc->free_heaps;
352  if (gc->free_heaps) {
353  gc->free_heaps->free_prev = page;
354  }
355  gc->free_heaps = page;
356 }
357 
358 static void
360 {
361  if (page->free_prev)
362  page->free_prev->free_next = page->free_next;
363  if (page->free_next)
364  page->free_next->free_prev = page->free_prev;
365  if (gc->free_heaps == page)
366  gc->free_heaps = page->free_next;
367  page->free_prev = NULL;
368  page->free_next = NULL;
369 }
370 
371 static void
373 {
375  RVALUE *p, *e;
376  struct RBasic *prev = NULL;
377 
378  for (p = objects(page), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
379  p->as.free.tt = MRB_TT_FREE;
380  p->as.free.next = prev;
381  prev = &p->as.basic;
382  }
383  page->freelist = prev;
384 
387 }
388 
389 #define DEFAULT_GC_INTERVAL_RATIO 200
390 #define DEFAULT_GC_STEP_RATIO 200
391 #define MAJOR_GC_INC_RATIO 120
392 #define MAJOR_GC_TOOMANY 10000
393 #define is_generational(gc) ((gc)->generational)
394 #define is_major_gc(gc) (is_generational(gc) && (gc)->full)
395 #define is_minor_gc(gc) (is_generational(gc) && !(gc)->full)
396 
397 void
399 {
400 #ifndef MRB_GC_FIXED_ARENA
401  gc->arena = (struct RBasic**)mrb_malloc(mrb, sizeof(struct RBasic*)*MRB_GC_ARENA_SIZE);
402  gc->arena_capa = MRB_GC_ARENA_SIZE;
403 #endif
404 
405  gc->current_white_part = GC_WHITE_A;
406  gc->heaps = NULL;
407  gc->free_heaps = NULL;
408  add_heap(mrb, gc);
409  gc->interval_ratio = DEFAULT_GC_INTERVAL_RATIO;
410  gc->step_ratio = DEFAULT_GC_STEP_RATIO;
411 #ifndef MRB_GC_TURN_OFF_GENERATIONAL
412  gc->generational = TRUE;
413  gc->full = TRUE;
414 #endif
415 
416 #ifdef GC_PROFILE
417  program_invoke_time = gettimeofday_time();
418 #endif
419 }
420 
421 static void obj_free(mrb_state *mrb, struct RBasic *obj, int end);
422 
423 static void
425 {
426  mrb_heap_page *page = gc->heaps;
427  mrb_heap_page *tmp;
428  RVALUE *p, *e;
429 
430  while (page) {
431  tmp = page;
432  page = page->next;
433  for (p = objects(tmp), e=p+MRB_HEAP_PAGE_SIZE; p<e; p++) {
434  if (p->as.free.tt != MRB_TT_FREE)
435  obj_free(mrb, &p->as.basic, TRUE);
436  }
437  mrb_free(mrb, tmp);
438  }
439 }
440 
441 void
443 {
444  free_heap(mrb, gc);
445 #ifndef MRB_GC_FIXED_ARENA
446  mrb_free(mrb, gc->arena);
447 #endif
448 }
449 
450 static void
452 {
453 #ifdef MRB_GC_FIXED_ARENA
454  if (gc->arena_idx >= MRB_GC_ARENA_SIZE) {
455  /* arena overflow error */
456  gc->arena_idx = MRB_GC_ARENA_SIZE - 4; /* force room in arena */
457  mrb_exc_raise(mrb, mrb_obj_value(mrb->arena_err));
458  }
459 #else
460  if (gc->arena_idx >= gc->arena_capa) {
461  /* extend arena */
462  gc->arena_capa = (int)(gc->arena_capa * 3 / 2);
463  gc->arena = (struct RBasic**)mrb_realloc(mrb, gc->arena, sizeof(struct RBasic*)*gc->arena_capa);
464  }
465 #endif
466  gc->arena[gc->arena_idx++] = p;
467 }
468 
469 /* mrb_gc_protect() leaves the object in the arena */
470 MRB_API void
472 {
473  if (mrb_immediate_p(obj)) return;
474  gc_protect(mrb, &mrb->gc, mrb_basic_ptr(obj));
475 }
476 
477 #define GC_ROOT_SYM MRB_SYM(_gc_root_)
478 
479 /* mrb_gc_register() keeps the object from GC.
480 
481  Register your object when it's exported to C world,
482  without reference from Ruby world, e.g. callback
483  arguments. Don't forget to remove the object using
484  mrb_gc_unregister, otherwise your object will leak.
485 */
486 
487 MRB_API void
489 {
490  mrb_sym root;
492 
493  if (mrb_immediate_p(obj)) return;
494  root = GC_ROOT_SYM;
495  table = mrb_gv_get(mrb, root);
496  if (mrb_nil_p(table) || !mrb_array_p(table)) {
497  table = mrb_ary_new(mrb);
498  mrb_gv_set(mrb, root, table);
499  }
500  mrb_ary_push(mrb, table, obj);
501 }
502 
503 /* mrb_gc_unregister() removes the object from GC root. */
504 MRB_API void
506 {
507  mrb_sym root;
509  struct RArray *a;
510  mrb_int i;
511 
512  if (mrb_immediate_p(obj)) return;
513  root = GC_ROOT_SYM;
514  table = mrb_gv_get(mrb, root);
515  if (mrb_nil_p(table)) return;
516  if (!mrb_array_p(table)) {
517  mrb_gv_set(mrb, root, mrb_nil_value());
518  return;
519  }
520  a = mrb_ary_ptr(table);
521  mrb_ary_modify(mrb, a);
522  for (i = 0; i < ARY_LEN(a); i++) {
523  if (mrb_ptr(ARY_PTR(a)[i]) == mrb_ptr(obj)) {
524  mrb_int len = ARY_LEN(a)-1;
525  mrb_value *ptr = ARY_PTR(a);
526 
527  ARY_SET_LEN(a, len);
528  memmove(&ptr[i], &ptr[i + 1], (len - i) * sizeof(mrb_value));
529  break;
530  }
531  }
532 }
533 
534 MRB_API struct RBasic*
535 mrb_obj_alloc(mrb_state *mrb, enum mrb_vtype ttype, struct RClass *cls)
536 {
537  struct RBasic *p;
538  static const RVALUE RVALUE_zero = { { { NULL, NULL, MRB_TT_FALSE } } };
539  mrb_gc *gc = &mrb->gc;
540 
541  if (cls) {
542  enum mrb_vtype tt;
543 
544  switch (cls->tt) {
545  case MRB_TT_CLASS:
546  case MRB_TT_SCLASS:
547  case MRB_TT_MODULE:
548  case MRB_TT_ENV:
549  break;
550  default:
551  mrb_raise(mrb, E_TYPE_ERROR, "allocation failure");
552  }
553  tt = MRB_INSTANCE_TT(cls);
554  if (tt != MRB_TT_FALSE &&
555  ttype != MRB_TT_SCLASS &&
556  ttype != MRB_TT_ICLASS &&
557  ttype != MRB_TT_ENV &&
558  ttype != tt) {
559  mrb_raisef(mrb, E_TYPE_ERROR, "allocation failure of %C", cls);
560  }
561  }
562 
563 #ifdef MRB_GC_STRESS
564  mrb_full_gc(mrb);
565 #endif
566  if (gc->threshold < gc->live) {
567  mrb_incremental_gc(mrb);
568  }
569  if (gc->free_heaps == NULL) {
570  add_heap(mrb, gc);
571  }
572 
573  p = gc->free_heaps->freelist;
574  gc->free_heaps->freelist = ((struct free_obj*)p)->next;
575  if (gc->free_heaps->freelist == NULL) {
576  unlink_free_heap_page(gc, gc->free_heaps);
577  }
578 
579  gc->live++;
580  gc_protect(mrb, gc, p);
581  *(RVALUE *)p = RVALUE_zero;
582  p->tt = ttype;
583  p->c = cls;
585  return p;
586 }
587 
588 static inline void
589 add_gray_list(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
590 {
591 #ifdef MRB_GC_STRESS
592  if (obj->tt > MRB_TT_MAXDEFINE) {
593  abort();
594  }
595 #endif
596  paint_gray(obj);
597  obj->gcnext = gc->gray_list;
598  gc->gray_list = obj;
599 }
600 
601 static mrb_int
603 {
604  const struct RProc *p = ci->proc;
605  mrb_int n = 0;
606 
607  if (!p) {
608  if (ci->argc < 0) return 3;
609  return ci->argc+2;
610  }
611  if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
612  n = p->body.irep->nregs;
613  }
614  if (ci->argc < 0) {
615  if (n < 3) n = 3; /* self + args + blk */
616  }
617  if (ci->argc > n) {
618  n = ci->argc + 2; /* self + blk */
619  }
620  return n;
621 }
622 
623 static void
625 {
626  size_t i;
627  size_t e;
628  mrb_value nil;
629 
630  if (c->stbase == NULL) return;
631  if (c->ci) {
632  e = (c->ci->stack ? c->ci->stack - c->stbase : 0);
633  e += ci_nregs(c->ci);
634  }
635  else {
636  e = 0;
637  }
638  if (c->stbase + e > c->stend) e = c->stend - c->stbase;
639  for (i=0; i<e; i++) {
640  mrb_value v = c->stbase[i];
641 
642  if (!mrb_immediate_p(v)) {
643  mrb_gc_mark(mrb, mrb_basic_ptr(v));
644  }
645  }
646  e = c->stend - c->stbase;
647  nil = mrb_nil_value();
648  for (; i<e; i++) {
649  c->stbase[i] = nil;
650  }
651 }
652 
653 static void
655 {
656  mrb_callinfo *ci;
657 
658  start:
659  if (c->status == MRB_FIBER_TERMINATED) return;
660 
661  /* mark VM stack */
662  mark_context_stack(mrb, c);
663 
664  /* mark call stack */
665  if (c->cibase) {
666  for (ci = c->cibase; ci <= c->ci; ci++) {
667  mrb_gc_mark(mrb, (struct RBasic*)ci->proc);
668  mrb_gc_mark(mrb, (struct RBasic*)ci->u.target_class);
669  }
670  }
671  /* mark fibers */
672  mrb_gc_mark(mrb, (struct RBasic*)c->fib);
673  if (c->prev) {
674  c = c->prev;
675  goto start;
676  }
677 }
678 
679 static void
681 {
682  mrb_assert(is_gray(obj));
683  paint_black(obj);
684  mrb_gc_mark(mrb, (struct RBasic*)obj->c);
685  switch (obj->tt) {
686  case MRB_TT_ICLASS:
687  {
688  struct RClass *c = (struct RClass*)obj;
690  mrb_gc_mark_mt(mrb, c);
691  mrb_gc_mark(mrb, (struct RBasic*)((struct RClass*)obj)->super);
692  }
693  break;
694 
695  case MRB_TT_CLASS:
696  case MRB_TT_MODULE:
697  case MRB_TT_SCLASS:
698  {
699  struct RClass *c = (struct RClass*)obj;
700 
701  mrb_gc_mark_mt(mrb, c);
702  mrb_gc_mark(mrb, (struct RBasic*)c->super);
703  }
704  /* fall through */
705 
706  case MRB_TT_OBJECT:
707  case MRB_TT_DATA:
708  case MRB_TT_EXCEPTION:
709  mrb_gc_mark_iv(mrb, (struct RObject*)obj);
710  break;
711 
712  case MRB_TT_PROC:
713  {
714  struct RProc *p = (struct RProc*)obj;
715 
716  mrb_gc_mark(mrb, (struct RBasic*)p->upper);
717  mrb_gc_mark(mrb, (struct RBasic*)p->e.env);
718  }
719  break;
720 
721  case MRB_TT_ENV:
722  {
723  struct REnv *e = (struct REnv*)obj;
724  mrb_int i, len;
725 
726  if (MRB_ENV_ONSTACK_P(e) && e->cxt && e->cxt->fib) {
727  mrb_gc_mark(mrb, (struct RBasic*)e->cxt->fib);
728  }
729  len = MRB_ENV_LEN(e);
730  for (i=0; i<len; i++) {
731  mrb_gc_mark_value(mrb, e->stack[i]);
732  }
733  }
734  break;
735 
736  case MRB_TT_FIBER:
737  {
738  struct mrb_context *c = ((struct RFiber*)obj)->cxt;
739 
740  if (c) mark_context(mrb, c);
741  }
742  break;
743 
744  case MRB_TT_ARRAY:
745  {
746  struct RArray *a = (struct RArray*)obj;
747  size_t i, e=ARY_LEN(a);
748  mrb_value *p = ARY_PTR(a);
749 
750  for (i=0; i<e; i++) {
751  mrb_gc_mark_value(mrb, p[i]);
752  }
753  }
754  break;
755 
756  case MRB_TT_HASH:
757  mrb_gc_mark_iv(mrb, (struct RObject*)obj);
758  mrb_gc_mark_hash(mrb, (struct RHash*)obj);
759  break;
760 
761  case MRB_TT_STRING:
762  if (RSTR_FSHARED_P(obj)) {
763  struct RString *s = (struct RString*)obj;
764  mrb_gc_mark(mrb, (struct RBasic*)s->as.heap.aux.fshared);
765  }
766  break;
767 
768  case MRB_TT_RANGE:
769  mrb_gc_mark_range(mrb, (struct RRange*)obj);
770  break;
771 
772  case MRB_TT_BREAK:
773  {
774  struct RBreak *brk = (struct RBreak*)obj;
775  mrb_gc_mark(mrb, (struct RBasic*)mrb_break_proc_get(brk));
777  }
778  break;
779 
780  default:
781  break;
782  }
783 }
784 
785 MRB_API void
786 mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
787 {
788  if (obj == 0) return;
789  if (!is_white(obj)) return;
790  if (is_red(obj)) return;
791  mrb_assert((obj)->tt != MRB_TT_FREE);
792  add_gray_list(mrb, &mrb->gc, obj);
793 }
794 
795 static void
796 obj_free(mrb_state *mrb, struct RBasic *obj, int end)
797 {
798  DEBUG(fprintf(stderr, "obj_free(%p,tt=%d)\n",obj,obj->tt));
799  switch (obj->tt) {
800  case MRB_TT_OBJECT:
801  mrb_gc_free_iv(mrb, (struct RObject*)obj);
802  break;
803 
804  case MRB_TT_EXCEPTION:
805  mrb_gc_free_iv(mrb, (struct RObject*)obj);
806  break;
807 
808  case MRB_TT_CLASS:
809  case MRB_TT_MODULE:
810  case MRB_TT_SCLASS:
811  mrb_gc_free_mt(mrb, (struct RClass*)obj);
812  mrb_gc_free_iv(mrb, (struct RObject*)obj);
813  if (!end)
814  mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
815  break;
816  case MRB_TT_ICLASS:
818  mrb_gc_free_mt(mrb, (struct RClass*)obj);
819  if (!end)
820  mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
821  break;
822  case MRB_TT_ENV:
823  {
824  struct REnv *e = (struct REnv*)obj;
825 
826  if (MRB_ENV_ONSTACK_P(e)) {
827  /* cannot be freed */
828  e->stack = NULL;
829  break;
830  }
831  mrb_free(mrb, e->stack);
832  e->stack = NULL;
833  }
834  break;
835 
836  case MRB_TT_FIBER:
837  {
838  struct mrb_context *c = ((struct RFiber*)obj)->cxt;
839 
840  if (c && c != mrb->root_c) {
841  if (!end && c->status != MRB_FIBER_TERMINATED) {
842  mrb_callinfo *ci = c->ci;
843  mrb_callinfo *ce = c->cibase;
844 
845  while (ce <= ci) {
846  struct REnv *e = ci->u.env;
847  if (e && !mrb_object_dead_p(mrb, (struct RBasic*)e) &&
848  e->tt == MRB_TT_ENV && MRB_ENV_ONSTACK_P(e)) {
849  mrb_env_unshare(mrb, e);
850  }
851  ci--;
852  }
853  }
854  mrb_free_context(mrb, c);
855  }
856  }
857  break;
858 
859  case MRB_TT_ARRAY:
860  if (ARY_SHARED_P(obj))
861  mrb_ary_decref(mrb, ((struct RArray*)obj)->as.heap.aux.shared);
862  else if (!ARY_EMBED_P(obj))
863  mrb_free(mrb, ((struct RArray*)obj)->as.heap.ptr);
864  break;
865 
866  case MRB_TT_HASH:
867  mrb_gc_free_iv(mrb, (struct RObject*)obj);
868  mrb_gc_free_hash(mrb, (struct RHash*)obj);
869  break;
870 
871  case MRB_TT_STRING:
872  mrb_gc_free_str(mrb, (struct RString*)obj);
873  break;
874 
875  case MRB_TT_PROC:
876  {
877  struct RProc *p = (struct RProc*)obj;
878 
879  if (!MRB_PROC_CFUNC_P(p) && p->body.irep) {
880  mrb_irep *irep = (mrb_irep*)p->body.irep;
881  if (end) {
882  mrb_irep_cutref(mrb, irep);
883  }
884  mrb_irep_decref(mrb, irep);
885  }
886  }
887  break;
888 
889  case MRB_TT_RANGE:
890  mrb_gc_free_range(mrb, ((struct RRange*)obj));
891  break;
892 
893  case MRB_TT_DATA:
894  {
895  struct RData *d = (struct RData*)obj;
896  if (d->type && d->type->dfree) {
897  d->type->dfree(mrb, d->data);
898  }
899  mrb_gc_free_iv(mrb, (struct RObject*)obj);
900  }
901  break;
902 
903  default:
904  break;
905  }
906  obj->tt = MRB_TT_FREE;
907 }
908 
909 static void
911 {
912  int i, e;
913 
914  if (!is_minor_gc(gc)) {
915  gc->gray_list = NULL;
916  gc->atomic_gray_list = NULL;
917  }
918 
919  mrb_gc_mark_gv(mrb);
920  /* mark arena */
921  for (i=0,e=gc->arena_idx; i<e; i++) {
922  mrb_gc_mark(mrb, gc->arena[i]);
923  }
924  /* mark class hierarchy */
925  mrb_gc_mark(mrb, (struct RBasic*)mrb->object_class);
926 
927  /* mark built-in classes */
928  mrb_gc_mark(mrb, (struct RBasic*)mrb->class_class);
929  mrb_gc_mark(mrb, (struct RBasic*)mrb->module_class);
930  mrb_gc_mark(mrb, (struct RBasic*)mrb->proc_class);
931  mrb_gc_mark(mrb, (struct RBasic*)mrb->string_class);
932  mrb_gc_mark(mrb, (struct RBasic*)mrb->array_class);
933  mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class);
934  mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class);
935 
936 #ifndef MRB_NO_FLOAT
937  mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class);
938 #endif
939  mrb_gc_mark(mrb, (struct RBasic*)mrb->integer_class);
940  mrb_gc_mark(mrb, (struct RBasic*)mrb->true_class);
941  mrb_gc_mark(mrb, (struct RBasic*)mrb->false_class);
942  mrb_gc_mark(mrb, (struct RBasic*)mrb->nil_class);
943  mrb_gc_mark(mrb, (struct RBasic*)mrb->symbol_class);
944  mrb_gc_mark(mrb, (struct RBasic*)mrb->kernel_module);
945 
946  mrb_gc_mark(mrb, (struct RBasic*)mrb->eException_class);
947  mrb_gc_mark(mrb, (struct RBasic*)mrb->eStandardError_class);
948 
949  /* mark top_self */
950  mrb_gc_mark(mrb, (struct RBasic*)mrb->top_self);
951  /* mark exception */
952  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
953  /* mark pre-allocated exception */
954  mrb_gc_mark(mrb, (struct RBasic*)mrb->nomem_err);
955  mrb_gc_mark(mrb, (struct RBasic*)mrb->stack_err);
956 #ifdef MRB_GC_FIXED_ARENA
957  mrb_gc_mark(mrb, (struct RBasic*)mrb->arena_err);
958 #endif
959 
960  mark_context(mrb, mrb->c);
961  if (mrb->root_c != mrb->c) {
962  mark_context(mrb, mrb->root_c);
963  }
964 }
965 
966 /* rough estimation of number of GC marks (non recursive) */
967 static size_t
969 {
970  size_t children = 0;
971 
972  switch (obj->tt) {
973  case MRB_TT_ICLASS:
974  children++;
975  break;
976 
977  case MRB_TT_CLASS:
978  case MRB_TT_SCLASS:
979  case MRB_TT_MODULE:
980  {
981  struct RClass *c = (struct RClass*)obj;
982 
983  children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
984  children += mrb_gc_mark_mt_size(mrb, c);
985  children++;
986  }
987  break;
988 
989  case MRB_TT_OBJECT:
990  case MRB_TT_DATA:
991  case MRB_TT_EXCEPTION:
992  children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
993  break;
994 
995  case MRB_TT_ENV:
996  children += MRB_ENV_LEN(obj);
997  break;
998 
999  case MRB_TT_FIBER:
1000  {
1001  struct mrb_context *c = ((struct RFiber*)obj)->cxt;
1002  size_t i;
1003  mrb_callinfo *ci;
1004 
1005  if (!c || c->status == MRB_FIBER_TERMINATED) break;
1006 
1007  /* mark stack */
1008  i = c->ci->stack - c->stbase;
1009 
1010  if (c->ci) {
1011  i += ci_nregs(c->ci);
1012  }
1013  if (c->stbase + i > c->stend) i = c->stend - c->stbase;
1014  children += i;
1015 
1016  /* mark closure */
1017  if (c->cibase) {
1018  for (i=0, ci = c->cibase; ci <= c->ci; i++, ci++)
1019  ;
1020  }
1021  children += i;
1022  }
1023  break;
1024 
1025  case MRB_TT_ARRAY:
1026  {
1027  struct RArray *a = (struct RArray*)obj;
1028  children += ARY_LEN(a);
1029  }
1030  break;
1031 
1032  case MRB_TT_HASH:
1033  children += mrb_gc_mark_iv_size(mrb, (struct RObject*)obj);
1034  children += mrb_gc_mark_hash_size(mrb, (struct RHash*)obj);
1035  break;
1036 
1037  case MRB_TT_PROC:
1038  case MRB_TT_RANGE:
1039  case MRB_TT_BREAK:
1040  children+=2;
1041  break;
1042 
1043  default:
1044  break;
1045  }
1046  return children;
1047 }
1048 
1049 
1050 static void
1052  while (gc->gray_list) {
1053  struct RBasic *obj = gc->gray_list;
1054  gc->gray_list = obj->gcnext;
1055  gc_mark_children(mrb, gc, obj);
1056  }
1057 }
1058 
1059 
1060 static size_t
1062 {
1063  size_t tried_marks = 0;
1064 
1065  while (gc->gray_list && tried_marks < limit) {
1066  struct RBasic *obj = gc->gray_list;
1067  gc->gray_list = obj->gcnext;
1068  gc_mark_children(mrb, gc, obj);
1069  tried_marks += gc_gray_counts(mrb, gc, obj);
1070  }
1071 
1072  return tried_marks;
1073 }
1074 
1075 static void
1077 {
1078  int i, e;
1079 
1080  /* mark arena */
1081  for (i=0,e=gc->arena_idx; i<e; i++) {
1082  mrb_gc_mark(mrb, gc->arena[i]);
1083  }
1084  mrb_gc_mark_gv(mrb);
1085  mark_context(mrb, mrb->c);
1086  if (mrb->c != mrb->root_c) {
1087  mark_context(mrb, mrb->root_c);
1088  }
1089  mrb_gc_mark(mrb, (struct RBasic*)mrb->exc);
1090  gc_mark_gray_list(mrb, gc);
1091  mrb_assert(gc->gray_list == NULL);
1092  gc->gray_list = gc->atomic_gray_list;
1093  gc->atomic_gray_list = NULL;
1094  gc_mark_gray_list(mrb, gc);
1095  mrb_assert(gc->gray_list == NULL);
1096 }
1097 
1098 static void
1100 {
1101  gc->state = MRB_GC_STATE_SWEEP;
1102  gc->sweeps = gc->heaps;
1103  gc->live_after_mark = gc->live;
1104 }
1105 
1106 static size_t
1108 {
1109  mrb_heap_page *page = gc->sweeps;
1110  size_t tried_sweep = 0;
1111 
1112  while (page && (tried_sweep < limit)) {
1113  RVALUE *p = objects(page);
1115  size_t freed = 0;
1116  mrb_bool dead_slot = TRUE;
1117  mrb_bool full = (page->freelist == NULL);
1118 
1119  if (is_minor_gc(gc) && page->old) {
1120  /* skip a slot which doesn't contain any young object */
1121  p = e;
1122  dead_slot = FALSE;
1123  }
1124  while (p<e) {
1125  if (is_dead(gc, &p->as.basic)) {
1126  if (p->as.basic.tt != MRB_TT_FREE) {
1127  obj_free(mrb, &p->as.basic, FALSE);
1128  if (p->as.basic.tt == MRB_TT_FREE) {
1129  p->as.free.next = page->freelist;
1130  page->freelist = (struct RBasic*)p;
1131  freed++;
1132  }
1133  else {
1134  dead_slot = FALSE;
1135  }
1136  }
1137  }
1138  else {
1139  if (!is_generational(gc))
1140  paint_partial_white(gc, &p->as.basic); /* next gc target */
1141  dead_slot = FALSE;
1142  }
1143  p++;
1144  }
1145 
1146  /* free dead slot */
1147  if (dead_slot && freed < MRB_HEAP_PAGE_SIZE) {
1148  mrb_heap_page *next = page->next;
1149 
1152  mrb_free(mrb, page);
1153  page = next;
1154  }
1155  else {
1156  if (full && freed > 0) {
1158  }
1159  if (page->freelist == NULL && is_minor_gc(gc))
1160  page->old = TRUE;
1161  else
1162  page->old = FALSE;
1163  page = page->next;
1164  }
1165  tried_sweep += MRB_HEAP_PAGE_SIZE;
1166  gc->live -= freed;
1167  gc->live_after_mark -= freed;
1168  }
1169  gc->sweeps = page;
1170  return tried_sweep;
1171 }
1172 
1173 static size_t
1175 {
1176  switch (gc->state) {
1177  case MRB_GC_STATE_ROOT:
1178  root_scan_phase(mrb, gc);
1179  gc->state = MRB_GC_STATE_MARK;
1181  return 0;
1182  case MRB_GC_STATE_MARK:
1183  if (gc->gray_list) {
1184  return incremental_marking_phase(mrb, gc, limit);
1185  }
1186  else {
1187  final_marking_phase(mrb, gc);
1189  return 0;
1190  }
1191  case MRB_GC_STATE_SWEEP: {
1192  size_t tried_sweep = 0;
1193  tried_sweep = incremental_sweep_phase(mrb, gc, limit);
1194  if (tried_sweep == 0)
1195  gc->state = MRB_GC_STATE_ROOT;
1196  return tried_sweep;
1197  }
1198  default:
1199  /* unknown state */
1200  mrb_assert(0);
1201  return 0;
1202  }
1203 }
1204 
1205 static void
1207 {
1208  do {
1209  incremental_gc(mrb, gc, SIZE_MAX);
1210  } while (gc->state != to_state);
1211 }
1212 
1213 static void
1215 {
1216  size_t limit = 0, result = 0;
1217  limit = (GC_STEP_SIZE/100) * gc->step_ratio;
1218  while (result < limit) {
1219  result += incremental_gc(mrb, gc, limit);
1220  if (gc->state == MRB_GC_STATE_ROOT)
1221  break;
1222  }
1223 
1224  gc->threshold = gc->live + GC_STEP_SIZE;
1225 }
1226 
1227 static void
1229 {
1230  mrb_bool origin_mode = gc->generational;
1231 
1233  if (is_major_gc(gc)) {
1234  /* finish the half baked GC */
1236  }
1237 
1238  /* Sweep the dead objects, then reset all the live objects
1239  * (including all the old objects, of course) to white. */
1240  gc->generational = FALSE;
1243  gc->generational = origin_mode;
1244 
1245  /* The gray objects have already been painted as white */
1246  gc->atomic_gray_list = gc->gray_list = NULL;
1247 }
1248 
1249 MRB_API void
1251 {
1252  mrb_gc *gc = &mrb->gc;
1253 
1254  if (gc->disabled || gc->iterating) return;
1255 
1256  GC_INVOKE_TIME_REPORT("mrb_incremental_gc()");
1257  GC_TIME_START;
1258 
1259  if (is_minor_gc(gc)) {
1261  }
1262  else {
1263  incremental_gc_step(mrb, gc);
1264  }
1265 
1266  if (gc->state == MRB_GC_STATE_ROOT) {
1267  mrb_assert(gc->live >= gc->live_after_mark);
1268  gc->threshold = (gc->live_after_mark/100) * gc->interval_ratio;
1269  if (gc->threshold < GC_STEP_SIZE) {
1270  gc->threshold = GC_STEP_SIZE;
1271  }
1272 
1273  if (is_major_gc(gc)) {
1274  size_t threshold = gc->live_after_mark/100 * MAJOR_GC_INC_RATIO;
1275 
1276  gc->full = FALSE;
1277  if (threshold < MAJOR_GC_TOOMANY) {
1278  gc->majorgc_old_threshold = threshold;
1279  }
1280  else {
1281  /* too many objects allocated during incremental GC, */
1282  /* instead of increasing threshold, invoke full GC. */
1283  mrb_full_gc(mrb);
1284  }
1285  }
1286  else if (is_minor_gc(gc)) {
1287  if (gc->live > gc->majorgc_old_threshold) {
1288  clear_all_old(mrb, gc);
1289  gc->full = TRUE;
1290  }
1291  }
1292  }
1293 
1295 }
1296 
1297 /* Perform a full gc cycle */
1298 MRB_API void
1300 {
1301  mrb_gc *gc = &mrb->gc;
1302 
1303  if (!mrb->c) return;
1304  if (gc->disabled || gc->iterating) return;
1305 
1306  GC_INVOKE_TIME_REPORT("mrb_full_gc()");
1307  GC_TIME_START;
1308 
1309  if (is_generational(gc)) {
1310  /* clear all the old objects back to young */
1311  clear_all_old(mrb, gc);
1312  gc->full = TRUE;
1313  }
1314  else if (gc->state != MRB_GC_STATE_ROOT) {
1315  /* finish half baked GC cycle */
1317  }
1318 
1320  gc->threshold = (gc->live_after_mark/100) * gc->interval_ratio;
1321 
1322  if (is_generational(gc)) {
1323  gc->majorgc_old_threshold = gc->live_after_mark/100 * MAJOR_GC_INC_RATIO;
1324  gc->full = FALSE;
1325  }
1326 
1327 #ifdef MRB_USE_MALLOC_TRIM
1328  malloc_trim(0);
1329 #endif
1331 }
1332 
1333 MRB_API void
1335 {
1336  mrb_full_gc(mrb);
1337 }
1338 
1339 /*
1340  * Field write barrier
1341  * Paint obj(Black) -> value(White) to obj(Black) -> value(Gray).
1342  */
1343 
1344 MRB_API void
1346 {
1347  mrb_gc *gc = &mrb->gc;
1348 
1349  if (!is_black(obj)) return;
1350  if (!is_white(value)) return;
1351 
1352  mrb_assert(gc->state == MRB_GC_STATE_MARK || (!is_dead(gc, value) && !is_dead(gc, obj)));
1354 
1355  if (is_generational(gc) || gc->state == MRB_GC_STATE_MARK) {
1356  add_gray_list(mrb, gc, value);
1357  }
1358  else {
1359  mrb_assert(gc->state == MRB_GC_STATE_SWEEP);
1360  paint_partial_white(gc, obj); /* for never write barriers */
1361  }
1362 }
1363 
1364 /*
1365  * Write barrier
1366  * Paint obj(Black) to obj(Gray).
1367  *
1368  * The object that is painted gray will be traversed atomically in final
1369  * mark phase. So you use this write barrier if it's frequency written spot.
1370  * e.g. Set element on Array.
1371  */
1372 
1373 MRB_API void
1375 {
1376  mrb_gc *gc = &mrb->gc;
1377 
1378  if (!is_black(obj)) return;
1379 
1380  mrb_assert(!is_dead(gc, obj));
1382  paint_gray(obj);
1383  obj->gcnext = gc->atomic_gray_list;
1384  gc->atomic_gray_list = obj;
1385 }
1386 
1387 /*
1388  * call-seq:
1389  * GC.start -> nil
1390  *
1391  * Initiates full garbage collection.
1392  *
1393  */
1394 
1395 static mrb_value
1397 {
1398  mrb_full_gc(mrb);
1399  return mrb_nil_value();
1400 }
1401 
1402 /*
1403  * call-seq:
1404  * GC.enable -> true or false
1405  *
1406  * Enables garbage collection, returning <code>true</code> if garbage
1407  * collection was previously disabled.
1408  *
1409  * GC.disable #=> false
1410  * GC.enable #=> true
1411  * GC.enable #=> false
1412  *
1413  */
1414 
1415 static mrb_value
1417 {
1418  mrb_bool old = mrb->gc.disabled;
1419 
1420  mrb->gc.disabled = FALSE;
1421 
1422  return mrb_bool_value(old);
1423 }
1424 
1425 /*
1426  * call-seq:
1427  * GC.disable -> true or false
1428  *
1429  * Disables garbage collection, returning <code>true</code> if garbage
1430  * collection was already disabled.
1431  *
1432  * GC.disable #=> false
1433  * GC.disable #=> true
1434  *
1435  */
1436 
1437 static mrb_value
1439 {
1440  mrb_bool old = mrb->gc.disabled;
1441 
1442  mrb->gc.disabled = TRUE;
1443 
1444  return mrb_bool_value(old);
1445 }
1446 
1447 /*
1448  * call-seq:
1449  * GC.interval_ratio -> fixnum
1450  *
1451  * Returns ratio of GC interval. Default value is 200(%).
1452  *
1453  */
1454 
1455 static mrb_value
1457 {
1458  return mrb_fixnum_value(mrb->gc.interval_ratio);
1459 }
1460 
1461 /*
1462  * call-seq:
1463  * GC.interval_ratio = fixnum -> nil
1464  *
1465  * Updates ratio of GC interval. Default value is 200(%).
1466  * GC start as soon as after end all step of GC if you set 100(%).
1467  *
1468  */
1469 
1470 static mrb_value
1472 {
1473  mrb_int ratio;
1474 
1475  mrb_get_args(mrb, "i", &ratio);
1476  mrb->gc.interval_ratio = (int)ratio;
1477  return mrb_nil_value();
1478 }
1479 
1480 /*
1481  * call-seq:
1482  * GC.step_ratio -> fixnum
1483  *
1484  * Returns step span ratio of Incremental GC. Default value is 200(%).
1485  *
1486  */
1487 
1488 static mrb_value
1490 {
1491  return mrb_fixnum_value(mrb->gc.step_ratio);
1492 }
1493 
1494 /*
1495  * call-seq:
1496  * GC.step_ratio = fixnum -> nil
1497  *
1498  * Updates step span ratio of Incremental GC. Default value is 200(%).
1499  * 1 step of incrementalGC becomes long if a rate is big.
1500  *
1501  */
1502 
1503 static mrb_value
1505 {
1506  mrb_int ratio;
1507 
1508  mrb_get_args(mrb, "i", &ratio);
1509  mrb->gc.step_ratio = (int)ratio;
1510  return mrb_nil_value();
1511 }
1512 
1513 static void
1515 {
1516  if (gc->disabled || gc->iterating) {
1517  mrb_raise(mrb, E_RUNTIME_ERROR, "generational mode changed when GC disabled");
1518  return;
1519  }
1520  if (is_generational(gc) && !enable) {
1521  clear_all_old(mrb, gc);
1522  mrb_assert(gc->state == MRB_GC_STATE_ROOT);
1523  gc->full = FALSE;
1524  }
1525  else if (!is_generational(gc) && enable) {
1527  gc->majorgc_old_threshold = gc->live_after_mark/100 * MAJOR_GC_INC_RATIO;
1528  gc->full = FALSE;
1529  }
1530  gc->generational = enable;
1531 }
1532 
1533 /*
1534  * call-seq:
1535  * GC.generational_mode -> true or false
1536  *
1537  * Returns generational or normal gc mode.
1538  *
1539  */
1540 
1541 static mrb_value
1543 {
1544  return mrb_bool_value(mrb->gc.generational);
1545 }
1546 
1547 /*
1548  * call-seq:
1549  * GC.generational_mode = true or false -> true or false
1550  *
1551  * Changes to generational or normal gc mode.
1552  *
1553  */
1554 
1555 static mrb_value
1557 {
1558  mrb_bool enable;
1559 
1560  mrb_get_args(mrb, "b", &enable);
1561  if (mrb->gc.generational != enable)
1562  change_gen_gc_mode(mrb, &mrb->gc, enable);
1563 
1564  return mrb_bool_value(enable);
1565 }
1566 
1567 
1568 static void
1570 {
1572 
1573  page = gc->heaps;
1574  while (page != NULL) {
1575  RVALUE *p;
1576  int i;
1577 
1578  p = objects(page);
1579  for (i=0; i < MRB_HEAP_PAGE_SIZE; i++) {
1580  if ((*callback)(mrb, &p[i].as.basic, data) == MRB_EACH_OBJ_BREAK)
1581  return;
1582  }
1583  page = page->next;
1584  }
1585 }
1586 
1587 void
1589 {
1590  mrb_bool iterating = mrb->gc.iterating;
1591 
1592  mrb_full_gc(mrb);
1593  mrb->gc.iterating = TRUE;
1594  if (iterating) {
1595  gc_each_objects(mrb, &mrb->gc, callback, data);
1596  }
1597  else {
1598  struct mrb_jmpbuf *prev_jmp = mrb->jmp;
1599  struct mrb_jmpbuf c_jmp;
1600 
1601  MRB_TRY(&c_jmp) {
1602  mrb->jmp = &c_jmp;
1603  gc_each_objects(mrb, &mrb->gc, callback, data);
1604  mrb->jmp = prev_jmp;
1605  mrb->gc.iterating = iterating;
1606  } MRB_CATCH(&c_jmp) {
1607  mrb->gc.iterating = iterating;
1608  mrb->jmp = prev_jmp;
1609  MRB_THROW(prev_jmp);
1610  } MRB_END_EXC(&c_jmp);
1611  }
1612 }
1613 
1614 size_t
1616 {
1617  return sizeof(RVALUE);
1618 }
1619 
1620 
1621 void
1623 {
1624  struct RClass *gc;
1625 
1626  mrb_static_assert(sizeof(RVALUE) <= sizeof(void*) * 6,
1627  "RVALUE size must be within 6 words");
1628 
1629  gc = mrb_define_module(mrb, "GC");
1630 
1631  mrb_define_class_method(mrb, gc, "start", gc_start, MRB_ARGS_NONE());
1632  mrb_define_class_method(mrb, gc, "enable", gc_enable, MRB_ARGS_NONE());
1633  mrb_define_class_method(mrb, gc, "disable", gc_disable, MRB_ARGS_NONE());
1634  mrb_define_class_method(mrb, gc, "interval_ratio", gc_interval_ratio_get, MRB_ARGS_NONE());
1635  mrb_define_class_method(mrb, gc, "interval_ratio=", gc_interval_ratio_set, MRB_ARGS_REQ(1));
1637  mrb_define_class_method(mrb, gc, "step_ratio=", gc_step_ratio_set, MRB_ARGS_REQ(1));
1638  mrb_define_class_method(mrb, gc, "generational_mode=", gc_generational_mode_set, MRB_ARGS_REQ(1));
1639  mrb_define_class_method(mrb, gc, "generational_mode", gc_generational_mode_get, MRB_ARGS_NONE());
1640 }
return _Result< 0 ? -1 :_Result;} #line 1069 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnwprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1091 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, va_list _ArgList) { return _vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1108 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format, va_list _ArgList) { return _vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1133 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1179 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1196 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __vswprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1212 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf(wchar_t *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1227 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1243 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1264 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1281 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1283 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1312 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, va_list _ArgList) { return _vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1347 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_l(_Format,((void *) 0), _ArgList);} #line 1361 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vswprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1380 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vscwprintf_p(wchar_t const *const _Format, va_list _ArgList) { return _vscwprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1394 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl __swprintf_l(wchar_t *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1414 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1435 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf(wchar_t *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__vswprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1454 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1474 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "__swprintf_l_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __swprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vswprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl __vswprintf_l(wchar_t *_Buffer, wchar_t const *_Format, _locale_t _Locale, va_list _Args);__declspec(deprecated("This function or variable may be unsafe. Consider using " "swprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swprintf(wchar_t *_Buffer, wchar_t const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vswprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vswprintf(wchar_t *_Buffer, wchar_t const *_Format, va_list _Args);__inline int __cdecl _swprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1511 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1532 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1534 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1562 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_p(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1582 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1603 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swprintf_c(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1623 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwprintf_l(wchar_t *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1646 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf(wchar_t *_Buffer, size_t _BufferCount, wchar_t const *_Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1668 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s_l(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwprintf_s(wchar_t *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1711 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1737 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1755 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p_l(wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1774 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _scwprintf_p(wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscwprintf_p_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1792 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #pragma warning(push) #pragma warning(disable:4141 6054) #pragma warning(pop) #line 1856 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" int __cdecl __stdio_common_vswscanf(unsigned __int64 _Options, wchar_t const *_Buffer, size_t _BufferCount, wchar_t const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vswscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1897 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf(wchar_t const *_Buffer, wchar_t const *_Format, va_list _ArgList) { return _vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vswscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl vswscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format, va_list _ArgList) { return _vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 1947 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 1949 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1976 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _vsnwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vswscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);} #line 1995 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_swscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _swscanf_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2015 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "swscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl swscanf(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2034 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _swscanf_s_l(wchar_t const *const _Buffer, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2054 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl swscanf_s(wchar_t const *const _Buffer, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vswscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" #line 2077 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2100 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snwscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snwscanf(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2122 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s_l(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2143 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __inline int __cdecl _snwscanf_s(wchar_t const *const _Buffer, size_t const _BufferCount, wchar_t const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnwscanf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2163 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstdio.h" __pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) typedef __int64 fpos_t;errno_t __cdecl _get_stream_buffer_pointers(FILE *_Stream, char ***_Base, char ***_Pointer, int **_Count);errno_t __cdecl clearerr_s(FILE *_Stream);errno_t __cdecl fopen_s(FILE **_Stream, char const *_FileName, char const *_Mode);size_t __cdecl fread_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);errno_t __cdecl freopen_s(FILE **_Stream, char const *_FileName, char const *_Mode, FILE *_OldStream);char *__cdecl gets_s(char *_Buffer, rsize_t _Size);errno_t __cdecl tmpfile_s(FILE **_Stream);errno_t __cdecl tmpnam_s(char *_Buffer, rsize_t _Size);#line 145 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl clearerr(FILE *_Stream);int __cdecl fclose(FILE *_Stream);int __cdecl _fcloseall(void);FILE *__cdecl _fdopen(int _FileHandle, char const *_Mode);int __cdecl feof(FILE *_Stream);int __cdecl ferror(FILE *_Stream);int __cdecl fflush(FILE *_Stream);int __cdecl fgetc(FILE *_Stream);int __cdecl _fgetchar(void);int __cdecl fgetpos(FILE *_Stream, fpos_t *_Position);char *__cdecl fgets(char *_Buffer, int _MaxCount, FILE *_Stream);int __cdecl _fileno(FILE *_Stream);int __cdecl _flushall(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "fopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl fopen(char const *_FileName, char const *_Mode);int __cdecl fputc(int _Character, FILE *_Stream);int __cdecl _fputchar(int _Character);int __cdecl fputs(char const *_Buffer, FILE *_Stream);size_t __cdecl fread(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);__declspec(deprecated("This function or variable may be unsafe. Consider using " "freopen_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl freopen(char const *_FileName, char const *_Mode, FILE *_Stream);FILE *__cdecl _fsopen(char const *_FileName, char const *_Mode, int _ShFlag);int __cdecl fsetpos(FILE *_Stream, fpos_t const *_Position);int __cdecl fseek(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl ftell(FILE *_Stream);__int64 __cdecl _ftelli64(FILE *_Stream);size_t __cdecl fwrite(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl getc(FILE *_Stream);int __cdecl getchar(void);int __cdecl _getmaxstdio(void);int __cdecl _getw(FILE *_Stream);void __cdecl perror(char const *_ErrorMessage);int __cdecl _pclose(FILE *_Stream);FILE *__cdecl _popen(char const *_Command, char const *_Mode);#line 344 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl putc(int _Character, FILE *_Stream);int __cdecl putchar(int _Character);int __cdecl puts(char const *_Buffer);int __cdecl _putw(int _Word, FILE *_Stream);int __cdecl remove(char const *_FileName);int __cdecl rename(char const *_OldFileName, char const *_NewFileName);int __cdecl _unlink(char const *_FileName);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_unlink" ". See online help for details.")) int __cdecl unlink(char const *_FileName);#line 391 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" void __cdecl rewind(FILE *_Stream);int __cdecl _rmtmp(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "setvbuf" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) void __cdecl setbuf(FILE *_Stream, char *_Buffer);int __cdecl _setmaxstdio(int _Maximum);int __cdecl setvbuf(FILE *_Stream, char *_Buffer, int _Mode, size_t _Size);__declspec(allocator) char *__cdecl _tempnam(char const *_DirectoryName, char const *_FilePrefix);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpfile_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) FILE *__cdecl tmpfile(void);__declspec(deprecated("This function or variable may be unsafe. Consider using " "tmpnam_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl tmpnam(char *_Buffer);int __cdecl ungetc(int _Character, FILE *_Stream);void __cdecl _lock_file(FILE *_Stream);void __cdecl _unlock_file(FILE *_Stream);int __cdecl _fclose_nolock(FILE *_Stream);int __cdecl _fflush_nolock(FILE *_Stream);int __cdecl _fgetc_nolock(FILE *_Stream);int __cdecl _fputc_nolock(int _Character, FILE *_Stream);size_t __cdecl _fread_nolock(void *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);size_t __cdecl _fread_nolock_s(void *_Buffer, size_t _BufferSize, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _fseek_nolock(FILE *_Stream, long _Offset, int _Origin);int __cdecl _fseeki64_nolock(FILE *_Stream, __int64 _Offset, int _Origin);long __cdecl _ftell_nolock(FILE *_Stream);__int64 __cdecl _ftelli64_nolock(FILE *_Stream);size_t __cdecl _fwrite_nolock(void const *_Buffer, size_t _ElementSize, size_t _ElementCount, FILE *_Stream);int __cdecl _getc_nolock(FILE *_Stream);int __cdecl _putc_nolock(int _Character, FILE *_Stream);int __cdecl _ungetc_nolock(int _Character, FILE *_Stream);int *__cdecl __p__commode(void);#line 596 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfprintf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_s(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vfprintf_p(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vfprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 648 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 662 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_s((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 677 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfprintf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 693 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 695 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfprintf_p((*__local_stdio_printf_options()), _Stream, _Format, _Locale, _ArgList);} #line 710 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfprintf_p(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);} #line 724 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 738 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf(char const *const _Format, va_list _ArgList) { return _vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 751 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 765 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vprintf_s(char const *const _Format, va_list _ArgList) { return _vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 780 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);} #line 796 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vprintf_p(char const *const _Format, va_list _ArgList) { return _vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);} #line 809 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 828 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 846 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl _set_printf_count_output(int _Value);int __cdecl _get_printf_count_output(void);__inline int __cdecl _fprintf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 871 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fprintf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 891 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 893 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 912 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fprintf_p(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 930 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 948 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 965 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 983 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl printf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_s_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1002 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1004 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1022 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _printf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfprintf_p_l((__acrt_iob_func(1)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1039 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vfscanf(unsigned __int64 _Options, FILE *_Stream, char const *_Format, _locale_t _Locale, va_list _Arglist);__inline int __cdecl _vfscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options()), _Stream, _Format, _Locale, _ArgList);} #line 1070 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1084 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vfscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vfscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Stream, _Format, _Locale, _ArgList);} #line 1101 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vfscanf_s(FILE *const _Stream, char const *const _Format, va_list _ArgList) { return _vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);} #line 1118 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1120 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1134 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf(char const *const _Format, va_list _ArgList) { return _vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1147 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscanf_s_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);} #line 1161 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vscanf_s(char const *const _Format, va_list _ArgList) { return _vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);} #line 1176 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1178 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_fscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _fscanf_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1197 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "fscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl fscanf(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1215 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _fscanf_s_l(FILE *const _Stream, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1234 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl fscanf_s(FILE *const _Stream, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l(_Stream, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1254 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_scanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _scanf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1274 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "scanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl scanf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1291 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scanf_s_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1309 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl scanf_s(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vfscanf_s_l((__acrt_iob_func(0)), _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1328 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1330 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsprintf(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsnprintf_s(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, size_t _MaxCount, char const *_Format, _locale_t _Locale, va_list _ArgList);int __cdecl __stdio_common_vsprintf_p(unsigned __int64 _Options, char *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsnprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1399 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1415 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);return _Result< 0 ? -1 :_Result;} #line 1446 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _vsprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 1462 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl vsprintf(char *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsnprintf_l(_Buffer,(size_t) -1, _Format,((void *) 0), _ArgList);} #line 1477 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1498 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1516 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1526 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1547 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1563 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsnprintf_s((*__local_stdio_printf_options()), _Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1585 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1602 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsnprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);} #line 1630 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1641 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1659 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf(char const *const _Format, va_list _ArgList) { return _vscprintf_l(_Format,((void *) 0), _ArgList);} #line 1672 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p_l(char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf_p((*__local_stdio_printf_options())|(1ULL<< 1),((void *) 0), 0, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1690 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vscprintf_p(char const *const _Format, va_list _ArgList) { return _vscprintf_p_l(_Format,((void *) 0), _ArgList);} #line 1703 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { int const _Result=__stdio_common_vsprintf((*__local_stdio_printf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);return _Result< 0 ? -1 :_Result;} #line 1723 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsnprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format, va_list _ArgList) { return _vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);} #line 1739 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sprintf_l(char *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1761 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf(char *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1782 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl sprintf(char *_Buffer, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "vsprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl vsprintf(char *_Buffer, char const *_Format, va_list _Args);__inline int __cdecl _sprintf_s_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1810 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sprintf_s(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_s_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1832 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 1834 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1862 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sprintf_p(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsprintf_p_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1882 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snprintf_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1905 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1936 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf(_Buffer, _BufferCount, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1956 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _snprintf(char *_Buffer, size_t _BufferCount, char const *_Format,...);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_vsnprintf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) int __cdecl _vsnprintf(char *_Buffer, size_t _BufferCount, char const *_Format, va_list _Args);__inline int __cdecl _snprintf_c_l(char *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 1986 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_c(char *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_c_l(_Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2006 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s_l(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2028 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snprintf_s(char *const _Buffer, size_t const _BufferCount, size_t const _MaxCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsnprintf_s_l(_Buffer, _BufferCount, _MaxCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2049 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2075 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_l(_Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2092 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p_l(char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p_l(_Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2110 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _scprintf_p(char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vscprintf_p(_Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2127 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" int __cdecl __stdio_common_vsscanf(unsigned __int64 _Options, char const *_Buffer, size_t _BufferCount, char const *_Format, _locale_t _Locale, va_list _ArgList);__inline int __cdecl _vsscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2158 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl vsscanf(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2172 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _vsscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale, va_list _ArgList) { return __stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer,(size_t) -1, _Format, _Locale, _ArgList);} #line 2189 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __inline int __cdecl vsscanf_s(char const *const _Buffer, char const *const _Format, va_list _ArgList) { return _vsscanf_s_l(_Buffer, _Format,((void *) 0), _ArgList);} #line 2208 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) #line 2219 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_sscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _sscanf_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2238 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "sscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl sscanf(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_l(_Buffer, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2256 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _sscanf_s_l(char const *const _Buffer, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=_vsscanf_s_l(_Buffer, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2275 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl sscanf_s(char const *const _Buffer, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=vsscanf_s(_Buffer, _Format, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2297 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #line 2299 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(push) #pragma warning(disable:6530) __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2326 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "_snscanf_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) __inline int __cdecl _snscanf(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options()), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2349 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s_l(char const *const _Buffer, size_t const _BufferCount, char const *const _Format, _locale_t const _Locale,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Locale))+((sizeof(_Locale)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format, _Locale, _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2374 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" __inline int __cdecl _snscanf_s(char const *const _Buffer, size_t const _BufferCount, char const *const _Format,...) { int _Result;va_list _ArgList;((void)(_ArgList=(va_list)(&(_Format))+((sizeof(_Format)+sizeof(int) - 1) &~(sizeof(int) - 1)))) ;_Result=__stdio_common_vsscanf((*__local_stdio_scanf_options())|(1ULL<< 0), _Buffer, _BufferCount, _Format,((void *) 0), _ArgList);((void)(_ArgList=(va_list) 0)) ;return _Result;} #line 2397 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h" #pragma warning(pop) __declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_tempnam" ". See online help for details.")) char *__cdecl tempnam(char const *_Directory, char const *_FilePrefix);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fcloseall" ". See online help for details.")) int __cdecl fcloseall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fdopen" ". See online help for details.")) FILE *__cdecl fdopen(int _FileHandle, char const *_Format);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fgetchar" ". See online help for details.")) int __cdecl fgetchar(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fileno" ". See online help for details.")) int __cdecl fileno(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_flushall" ". See online help for details.")) int __cdecl flushall(void);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_fputchar" ". See online help for details.")) int __cdecl fputchar(int _Ch);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_getw" ". See online help for details.")) int __cdecl getw(FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_putw" ". See online help for details.")) int __cdecl putw(int _Ch, FILE *_Stream);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_rmtmp" ". See online help for details.")) int __cdecl rmtmp(void);#line 2441 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\stdio.h"__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma once#pragma once#pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int *__cdecl _errno(void);errno_t __cdecl _set_errno(int _Value);errno_t __cdecl _get_errno(int *_Value);unsigned long *__cdecl __doserrno(void);errno_t __cdecl _set_doserrno(unsigned long _Value);errno_t __cdecl _get_doserrno(unsigned long *_Value);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) void *__cdecl memchr(void const *_Buf, int _Val, size_t _MaxCount);int __cdecl memcmp(void const *_Buf1, void const *_Buf2, size_t _Size);void *__cdecl memcpy(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memmove(void *_Dst, void const *_Src, size_t _Size);void *__cdecl memset(void *_Dst, int _Val, size_t _Size);char *__cdecl strchr(char const *_Str, int _Val);char *__cdecl strrchr(char const *_Str, int _Ch);char *__cdecl strstr(char const *_Str, char const *_SubStr);wchar_t *__cdecl wcschr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsrchr(wchar_t const *_Str, wchar_t _Ch);wchar_t *__cdecl wcsstr(wchar_t const *_Str, wchar_t const *_SubStr);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) static __inline errno_t __cdecl memcpy_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;if(_Source==((void *) 0)||_DestinationSize< _SourceSize) { memset(_Destination, 0, _DestinationSize);{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;return 22 ;} memcpy(_Destination, _Source, _SourceSize);return 0;} static __inline errno_t __cdecl memmove_s(void *const _Destination, rsize_t const _DestinationSize, void const *const _Source, rsize_t const _SourceSize) { if(_SourceSize==0) { return 0;} { int _Expr_val=!!(_Destination !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_Source !=((void *) 0));if(!(_Expr_val)) {(*_errno())=22;_invalid_parameter_noinfo();return 22;} } ;{ int _Expr_val=!!(_DestinationSize >=_SourceSize);if(!(_Expr_val)) {(*_errno())=34;_invalid_parameter_noinfo();return 34;} } ;memmove(_Destination, _Source, _SourceSize);return 0;}#pragma warning(pop) __pragma(pack(pop))#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) int __cdecl _memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);int __cdecl _memicmp_l(void const *_Buf1, void const *_Buf2, size_t _Size, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memccpy" ". See online help for details.")) void *__cdecl memccpy(void *_Dst, void const *_Src, int _Val, size_t _Size);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_memicmp" ". See online help for details.")) int __cdecl memicmp(void const *_Buf1, void const *_Buf2, size_t _Size);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl wcscat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcscpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source);errno_t __cdecl wcsncat_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);errno_t __cdecl wcsncpy_s(wchar_t *_Destination, rsize_t _SizeInWords, wchar_t const *_Source, rsize_t _MaxCount);wchar_t *__cdecl wcstok_s(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);__declspec(allocator) wchar_t *__cdecl _wcsdup(wchar_t const *_String);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscat(wchar_t *_Destination, wchar_t const *_Source);int __cdecl wcscmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcscpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcscpy(wchar_t *_Destination, wchar_t const *_Source);size_t __cdecl wcscspn(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcslen(wchar_t const *_String);size_t __cdecl wcsnlen(wchar_t const *_Source, size_t _MaxCount);static __inline size_t __cdecl wcsnlen_s(wchar_t const *_Source, size_t _MaxCount) { return(_Source==0) ? 0 :wcsnlen(_Source, _MaxCount);}__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncat(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);int __cdecl wcsncmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcsncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcsncpy(wchar_t *_Destination, wchar_t const *_Source, size_t _Count);wchar_t *__cdecl wcspbrk(wchar_t const *_String, wchar_t const *_Control);size_t __cdecl wcsspn(wchar_t const *_String, wchar_t const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl wcstok(wchar_t *_String, wchar_t const *_Delimiter, wchar_t **_Context);#line 237 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\corecrt_wstring.h" __declspec(deprecated("This function or variable may be unsafe. Consider using " "wcstok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) static __inline wchar_t *__cdecl _wcstok(wchar_t *const _String, wchar_t const *const _Delimiter) { return wcstok(_String, _Delimiter, 0);} __declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcserror(int _ErrorNumber);errno_t __cdecl _wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, int _ErrorNumber);__declspec(deprecated("This function or variable may be unsafe. Consider using " "__wcserror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl __wcserror(wchar_t const *_String);errno_t __cdecl __wcserror_s(wchar_t *_Buffer, size_t _SizeInWords, wchar_t const *_ErrorMessage);int __cdecl _wcsicmp(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicmp_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicmp_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);errno_t __cdecl _wcsnset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);wchar_t *__cdecl _wcsrev(wchar_t *_String);errno_t __cdecl _wcsset_s(wchar_t *_Destination, size_t _SizeInWords, wchar_t _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsset(wchar_t *_String, wchar_t _Value);errno_t __cdecl _wcslwr_s(wchar_t *_String, size_t _SizeInWords);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr(wchar_t *_String);errno_t __cdecl _wcslwr_s_l(wchar_t *_String, size_t _SizeInWords, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcslwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcslwr_l(wchar_t *_String, _locale_t _Locale);errno_t __cdecl _wcsupr_s(wchar_t *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr(wchar_t *_String);errno_t __cdecl _wcsupr_s_l(wchar_t *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_wcsupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) wchar_t *__cdecl _wcsupr_l(wchar_t *_String, _locale_t _Locale);size_t __cdecl wcsxfrm(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount);size_t __cdecl _wcsxfrm_l(wchar_t *_Destination, wchar_t const *_Source, size_t _MaxCount, _locale_t _Locale);int __cdecl wcscoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcscoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsicoll(wchar_t const *_String1, wchar_t const *_String2);int __cdecl _wcsicoll_l(wchar_t const *_String1, wchar_t const *_String2, _locale_t _Locale);int __cdecl _wcsncoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsncoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _wcsnicoll(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);int __cdecl _wcsnicoll_l(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsdup" ". See online help for details.")) wchar_t *__cdecl wcsdup(wchar_t const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicmp" ". See online help for details.")) int __cdecl wcsicmp(wchar_t const *_String1, wchar_t const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnicmp" ". See online help for details.")) int __cdecl wcsnicmp(wchar_t const *_String1, wchar_t const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsnset" ". See online help for details.")) wchar_t *__cdecl wcsnset(wchar_t *_String, wchar_t _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsrev" ". See online help for details.")) wchar_t *__cdecl wcsrev(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsset" ". See online help for details.")) wchar_t *__cdecl wcsset(wchar_t *_String, wchar_t _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcslwr" ". See online help for details.")) wchar_t *__cdecl wcslwr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsupr" ". See online help for details.")) wchar_t *__cdecl wcsupr(wchar_t *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_wcsicoll" ". See online help for details.")) int __cdecl wcsicoll(wchar_t const *_String1, wchar_t const *_String2);__pragma(pack(pop))#pragma warning(pop) #pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) __pragma(pack(push, 8)) errno_t __cdecl strcpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strcat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source);errno_t __cdecl strerror_s(char *_Buffer, size_t _SizeInBytes, int _ErrorNumber);errno_t __cdecl strncat_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);errno_t __cdecl strncpy_s(char *_Destination, rsize_t _SizeInBytes, char const *_Source, rsize_t _MaxCount);char *__cdecl strtok_s(char *_String, char const *_Delimiter, char **_Context);void *__cdecl _memccpy(void *_Dst, void const *_Src, int _Val, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcat(char *_Destination, char const *_Source);int __cdecl strcmp(char const *_Str1, char const *_Str2);int __cdecl _strcmpi(char const *_String1, char const *_String2);int __cdecl strcoll(char const *_String1, char const *_String2);int __cdecl _strcoll_l(char const *_String1, char const *_String2, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strcpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strcpy(char *_Destination, char const *_Source);size_t __cdecl strcspn(char const *_Str, char const *_Control);__declspec(allocator) char *__cdecl _strdup(char const *_Source);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strerror(char const *_ErrorMessage);errno_t __cdecl _strerror_s(char *_Buffer, size_t _SizeInBytes, char const *_ErrorMessage);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strerror_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strerror(int _ErrorMessage);int __cdecl _stricmp(char const *_String1, char const *_String2);int __cdecl _stricoll(char const *_String1, char const *_String2);int __cdecl _stricoll_l(char const *_String1, char const *_String2, _locale_t _Locale);int __cdecl _stricmp_l(char const *_String1, char const *_String2, _locale_t _Locale);size_t __cdecl strlen(char const *_Str);errno_t __cdecl _strlwr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr(char *_String);errno_t __cdecl _strlwr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strlwr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strlwr_l(char *_String, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncat_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncat(char *_Destination, char const *_Source, size_t _Count);int __cdecl strncmp(char const *_Str1, char const *_Str2, size_t _MaxCount);int __cdecl _strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicmp_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strnicoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strnicoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);int __cdecl _strncoll(char const *_String1, char const *_String2, size_t _MaxCount);int __cdecl _strncoll_l(char const *_String1, char const *_String2, size_t _MaxCount, _locale_t _Locale);size_t __cdecl __strncnt(char const *_String, size_t _Count);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strncpy_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strncpy(char *_Destination, char const *_Source, size_t _Count);size_t __cdecl strnlen(char const *_String, size_t _MaxCount);static __inline size_t __cdecl strnlen_s(char const *_String, size_t _MaxCount) { return _String==0 ? 0 :strnlen(_String, _MaxCount);} errno_t __cdecl _strnset_s(char *_String, size_t _SizeInBytes, int _Value, size_t _MaxCount);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strnset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strnset(char *_Destination, int _Value, size_t _Count);char *__cdecl strpbrk(char const *_Str, char const *_Control);char *__cdecl _strrev(char *_Str);errno_t __cdecl _strset_s(char *_Destination, size_t _DestinationSize, int _Value);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strset_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strset(char *_Destination, int _Value);size_t __cdecl strspn(char const *_Str, char const *_Control);__declspec(deprecated("This function or variable may be unsafe. Consider using " "strtok_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl strtok(char *_String, char const *_Delimiter);errno_t __cdecl _strupr_s(char *_String, size_t _Size);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr(char *_String);errno_t __cdecl _strupr_s_l(char *_String, size_t _Size, _locale_t _Locale);__declspec(deprecated("This function or variable may be unsafe. Consider using " "_strupr_s_l" " instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. " "See online help for details.")) char *__cdecl _strupr_l(char *_String, _locale_t _Locale);size_t __cdecl strxfrm(char *_Destination, char const *_Source, size_t _MaxCount);size_t __cdecl _strxfrm_l(char *_Destination, char const *_Source, size_t _MaxCount, _locale_t _Locale);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strdup" ". See online help for details.")) char *__cdecl strdup(char const *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strcmpi" ". See online help for details.")) int __cdecl strcmpi(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_stricmp" ". See online help for details.")) int __cdecl stricmp(char const *_String1, char const *_String2);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strlwr" ". See online help for details.")) char *__cdecl strlwr(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnicmp" ". See online help for details.")) int __cdecl strnicmp(char const *_String1, char const *_String2, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strnset" ". See online help for details.")) char *__cdecl strnset(char *_String, int _Value, size_t _MaxCount);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strrev" ". See online help for details.")) char *__cdecl strrev(char *_String);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strset" ". See online help for details.")) char *__cdecl strset(char *_String, int _Value);__declspec(deprecated("The POSIX name for this item is deprecated. Instead, use the ISO C " "and C++ conformant name: " "_strupr" ". See online help for details.")) char *__cdecl strupr(char *_String);__pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4514 4820) __pragma(pack(push, 8)) __pragma(pack(pop))#pragma warning(pop) #pragma once#pragma warning(push)#pragma warning(disable:4324 4514 4574 4710 4793 4820 4995 4996 28719 28726 28727) typedef unsigned short _ino_t;typedef _ino_t ino_t;#line 24 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef unsigned int _dev_t;typedef _dev_t dev_t;#line 36 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h" typedef long _off_t;typedef _off_t off_t;#line 48 "C:/Program Files (x86)/Windows Kits/10/include/10.0.19041.0/ucrt\\sys/types.h"#pragma warning(pop) typedef char *sds;#pragma pack(push, 1) struct sdshdr5 { unsigned char flags;char buf[];};struct sdshdr8 { uint8_t len;uint8_t alloc;unsigned char flags;char buf[];};struct sdshdr16 { uint16_t len;uint16_t alloc;unsigned char flags;char buf[];};struct sdshdr32 { uint32_t len;uint32_t alloc;unsigned char flags;char buf[];};struct sdshdr64 { uint64_t len;uint64_t alloc;unsigned char flags;char buf[];};#pragma pack(pop) static inline size_t sdslen(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :return((flags) >> 3) ;case 1 :return((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len;case 2 :return((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len;case 3 :return((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) ->len;case 4 :return((struct sdshdr64 *)((s) -(sizeof(struct sdshdr64)))) ->len;} return 0;}static inline size_t sdsavail(const sds s) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ return 0;} case 1 :{ struct sdshdr8 *sh=(void *)((s) -(sizeof(struct sdshdr8)));;return sh->alloc - sh->len;} case 2 :{ struct sdshdr16 *sh=(void *)((s) -(sizeof(struct sdshdr16)));;return sh->alloc - sh->len;} case 3 :{ struct sdshdr32 *sh=(void *)((s) -(sizeof(struct sdshdr32)));;return sh->alloc - sh->len;} case 4 :{ struct sdshdr64 *sh=(void *)((s) -(sizeof(struct sdshdr64)));;return sh->alloc - sh->len;} } return 0;}static inline void sdssetlen(sds s, size_t newlen) { unsigned char flags=s[-1];switch(flags &7) { case 0 :{ unsigned char *fp=((unsigned char *) s) - 1;*fp=0|(newlen<< 3);} break;case 1 :((struct sdshdr8 *)((s) -(sizeof(struct sdshdr8)))) ->len=(uint8_t) newlen;break;case 2 :((struct sdshdr16 *)((s) -(sizeof(struct sdshdr16)))) ->len=(uint16_t) newlen;break;case 3 :((struct sdshdr32 *)((s) -(sizeof(struct sdshdr32)))) -> len
Definition: CPAL.d:15583
struct @88 table[500]
#define next(a)
Definition: aptex-macros.h:924
#define hash
Definition: aptex.h:388
char * p2
Definition: bmpfont.h:62
#define mrb_ptr(o)
Definition: boxing_nan.h:79
#define mrb_array_p(o)
Definition: boxing_word.h:152
#define mrb_immediate_p(o)
Definition: boxing_word.h:117
#define mrb_nil_p(o)
Definition: boxing_word.h:146
void mrb_mc_clear_by_class(mrb_state *mrb, struct RClass *c)
Definition: class.c:1714
void mrb_gc_free_mt(mrb_state *, struct RClass *)
Definition: class.c:288
size_t mrb_gc_mark_mt_size(mrb_state *, struct RClass *)
Definition: class.c:279
#define MRB_FL_CLASS_IS_ORIGIN
Definition: class.h:62
#define MRB_INSTANCE_TT(c)
Definition: class.h:74
void mrb_gc_mark_mt(mrb_state *, struct RClass *)
Definition: class.c:258
#define n
Definition: t4ht.c:1290
@ FALSE
Definition: dd.h:101
@ TRUE
Definition: dd.h:102
#define free(a)
Definition: decNumber.cpp:310
int v
Definition: dviconv.c:10
#define nil
Definition: dvi2tty.h:53
struct rect data
Definition: dvipdfm.c:64
mrb_gc_state
Definition: gc.h:31
@ MRB_GC_STATE_ROOT
Definition: gc.h:32
@ MRB_GC_STATE_SWEEP
Definition: gc.h:34
@ MRB_GC_STATE_MARK
Definition: gc.h:33
#define MRB_GC_ARENA_SIZE
Definition: gc.h:28
#define MRB_EACH_OBJ_BREAK
Definition: gc.h:21
int() mrb_each_object_callback(struct mrb_state *mrb, struct RBasic *obj, void *data)
Definition: gc.h:22
void mrb_free_context(struct mrb_state *mrb, struct mrb_context *c)
Definition: state.c:171
#define s
Definition: afcover.h:80
static FIELD_PTR prev
Definition: genind.c:36
#define c(n)
Definition: gpos-common.c:150
#define a(n)
Definition: gpos-common.c:148
#define d(n)
Definition: gpos-common.c:151
#define memmove(d, s, n)
Definition: gsftopk.c:65
int threshold
Definition: hbf2gf.c:391
void mrb_irep_decref(mrb_state *, struct mrb_irep *)
Definition: state.c:117
void mrb_irep_cutref(mrb_state *, struct mrb_irep *)
Definition: state.c:127
struct child * children
Definition: job.c:229
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p
Definition: afcover.h:72
small capitals from c petite p scientific i
Definition: afcover.h:80
#define SIZE_MAX
Definition: stdint.h:206
unsigned int uint32_t
Definition: stdint.h:80
char * string
Definition: simpletypes.h:55
#define fprintf
Definition: mendex.h:64
#define root
Definition: ctangleboot.c:69
char * as
Definition: fixwrites.c:8
void abort()
#define E_TYPE_ERROR
Definition: mruby.h:1308
void mrb_raisef(mrb_state *mrb, struct RClass *c, const char *fmt,...)
Definition: error.c:400
void mrb_exc_raise(mrb_state *mrb, mrb_value exc)
Definition: error.c:199
#define mrb_gc_mark_value(mrb, val)
Definition: mruby.h:1248
@ MRB_FIBER_TERMINATED
Definition: mruby.h:170
#define mrb_assert(p)
Definition: mruby.h:65
mrb_int mrb_get_args(mrb_state *mrb, mrb_args_format format,...)
Definition: class.c:891
void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg)
Definition: error.c:214
#define MRB_ARGS_NONE()
Definition: mruby.h:879
#define MRB_ARGS_REQ(n)
Definition: mruby.h:837
#define E_RUNTIME_ERROR
Definition: mruby.h:1307
dictionary ce
#define MRB_OBJECT_HEADER
Definition: object.h:10
#define MRB_FLAG_TEST(obj, flag)
Definition: object.h:17
#define mrb_basic_ptr(v)
Definition: object.h:22
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld init[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld_src SRC pixld MASK if DST_R else pixld DST_R endif if src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head if pixblock_size cache_preload_simple endif process_pixblock_tail pixinterleave dst_w_basereg irp if pixblock_size chunk_size tst beq if DST_W else pixst DST_W else mov ORIG_W endif add lsl if lsl endif if lsl endif lsl endif lsl endif lsl endif subs mov DST_W if regs_shortage str endif bge start_of_loop_label endm macro generate_composite_function
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld if[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1(dst_w_bpp<=(lowbit *8)) &&((lowbit *8)<(pixblock_size *dst_w_bpp)) .if lowbit< 16 tst DST_R
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF ptr
static int size
Definition: ppmlabel.c:24
bstring c int memset(void *s, int c, int length)
#define is_dead(s, o)
Definition: gc.c:217
static void free_heap(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:424
void mrb_gc_unregister(mrb_state *mrb, mrb_value obj)
Definition: gc.c:505
static void incremental_gc_until(mrb_state *mrb, mrb_gc *gc, mrb_gc_state to_state)
Definition: gc.c:1206
static void clear_all_old(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:1228
static void gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, void *data)
Definition: gc.c:1569
void mrb_incremental_gc(mrb_state *mrb)
Definition: gc.c:1250
#define GC_ROOT_SYM
Definition: gc.c:477
void mrb_gc_init(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:398
#define DEFAULT_GC_INTERVAL_RATIO
Definition: gc.c:389
#define objects(p)
Definition: gc.c:219
static mrb_bool heap_p(mrb_gc *gc, struct RBasic *object)
Definition: gc.c:302
void mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, void *data)
Definition: gc.c:1588
#define is_white(o)
Definition: gc.c:212
static mrb_value gc_interval_ratio_set(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1471
void mrb_gc_protect(mrb_state *mrb, mrb_value obj)
Definition: gc.c:471
static void mark_context_stack(mrb_state *mrb, struct mrb_context *c)
Definition: gc.c:624
#define is_gray(o)
Definition: gc.c:211
static size_t incremental_marking_phase(mrb_state *mrb, mrb_gc *gc, size_t limit)
Definition: gc.c:1061
void * mrb_malloc(mrb_state *mrb, size_t len)
Definition: gc.c:256
void mrb_gc_destroy(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:442
static size_t gc_gray_counts(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
Definition: gc.c:968
static mrb_int ci_nregs(mrb_callinfo *ci)
Definition: gc.c:602
#define is_major_gc(gc)
Definition: gc.c:394
#define paint_partial_white(s, o)
Definition: gc.c:210
#define DEBUG(x)
Definition: gc.c:189
static void incremental_gc_step(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:1214
static mrb_value gc_generational_mode_get(mrb_state *mrb, mrb_value self)
Definition: gc.c:1542
struct RBasic * mrb_obj_alloc(mrb_state *mrb, enum mrb_vtype ttype, struct RClass *cls)
Definition: gc.c:535
static mrb_value gc_start(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1396
static mrb_value gc_disable(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1438
static void mark_context(mrb_state *mrb, struct mrb_context *c)
Definition: gc.c:654
void mrb_full_gc(mrb_state *mrb)
Definition: gc.c:1299
static size_t incremental_sweep_phase(mrb_state *mrb, mrb_gc *gc, size_t limit)
Definition: gc.c:1107
static void link_free_heap_page(mrb_gc *gc, mrb_heap_page *page)
Definition: gc.c:349
static void change_gen_gc_mode(mrb_state *mrb, mrb_gc *gc, mrb_bool enable)
Definition: gc.c:1514
#define paint_black(o)
Definition: gc.c:208
void * mrb_realloc(mrb_state *mrb, void *p, size_t len)
Definition: gc.c:238
void mrb_free(mrb_state *mrb, void *p)
Definition: gc.c:288
static void gc_mark_children(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
Definition: gc.c:680
#define GC_TIME_START
Definition: gc.c:182
static mrb_value gc_interval_ratio_get(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1456
static void add_heap(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:372
void mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
Definition: gc.c:786
void * mrb_alloca(mrb_state *mrb, size_t size)
Definition: gc.c:294
#define GC_INVOKE_TIME_REPORT(s)
Definition: gc.c:181
#define DEFAULT_GC_STEP_RATIO
Definition: gc.c:390
static void unlink_free_heap_page(mrb_gc *gc, mrb_heap_page *page)
Definition: gc.c:359
void * mrb_realloc_simple(mrb_state *mrb, void *p, size_t len)
Definition: gc.c:224
#define GC_WHITE_A
Definition: gc.c:200
static mrb_value gc_step_ratio_get(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1489
void mrb_write_barrier(mrb_state *mrb, struct RBasic *obj)
Definition: gc.c:1374
void mrb_gc_register(mrb_state *mrb, mrb_value obj)
Definition: gc.c:488
#define MAJOR_GC_INC_RATIO
Definition: gc.c:391
static void gc_protect(mrb_state *mrb, mrb_gc *gc, struct RBasic *p)
Definition: gc.c:451
static mrb_value gc_generational_mode_set(mrb_state *mrb, mrb_value self)
Definition: gc.c:1556
static void unlink_heap_page(mrb_gc *gc, mrb_heap_page *page)
Definition: gc.c:336
#define is_minor_gc(gc)
Definition: gc.c:395
static void link_heap_page(mrb_gc *gc, mrb_heap_page *page)
Definition: gc.c:327
void * mrb_malloc_simple(mrb_state *mrb, size_t len)
Definition: gc.c:262
static void add_gray_list(mrb_state *mrb, mrb_gc *gc, struct RBasic *obj)
Definition: gc.c:589
#define flip_white_part(s)
Definition: gc.c:215
static void final_marking_phase(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:1076
static size_t incremental_gc(mrb_state *mrb, mrb_gc *gc, size_t limit)
Definition: gc.c:1174
void mrb_garbage_collect(mrb_state *mrb)
Definition: gc.c:1334
static void root_scan_phase(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:910
#define MAJOR_GC_TOOMANY
Definition: gc.c:392
#define GC_STEP_SIZE
Definition: gc.c:196
#define paint_gray(o)
Definition: gc.c:207
void * mrb_calloc(mrb_state *mrb, size_t nelem, size_t len)
Definition: gc.c:268
static mrb_value gc_step_ratio_set(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1504
static void gc_mark_gray_list(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:1051
static void obj_free(mrb_state *mrb, struct RBasic *obj, int end)
Definition: gc.c:796
#define GC_TIME_STOP_AND_REPORT
Definition: gc.c:183
#define is_generational(gc)
Definition: gc.c:393
#define MRB_HEAP_PAGE_SIZE
Definition: gc.c:193
#define is_black(o)
Definition: gc.c:213
static mrb_value gc_enable(mrb_state *mrb, mrb_value obj)
Definition: gc.c:1416
void mrb_raise_nomemory(mrb_state *mrb)
Definition: error.c:617
void mrb_init_gc(mrb_state *mrb)
Definition: gc.c:1622
size_t mrb_objspace_page_slot_size(void)
Definition: gc.c:1615
#define is_red(o)
Definition: gc.c:214
void mrb_field_write_barrier(mrb_state *mrb, struct RBasic *obj, struct RBasic *value)
Definition: gc.c:1345
static void prepare_incremental_sweep(mrb_state *mrb, mrb_gc *gc)
Definition: gc.c:1099
mrb_bool mrb_object_dead_p(mrb_state *mrb, struct RBasic *object)
Definition: gc.c:320
#define ARY_LEN(a)
Definition: array.h:68
void mrb_ary_modify(mrb_state *, struct RArray *)
Definition: array.c:160
mrb_value mrb_ary_new(mrb_state *mrb)
Definition: array.c:53
#define ARY_SET_LEN(a, n)
Definition: array.h:72
#define mrb_ary_ptr(v)
Definition: array.h:49
void mrb_ary_decref(mrb_state *, mrb_shared_array *)
Definition: array.c:788
#define ARY_EMBED_P(a)
Definition: array.h:61
#define ARY_PTR(a)
Definition: array.h:69
void mrb_ary_push(mrb_state *mrb, mrb_value array, mrb_value value)
Definition: array.c:495
#define ARY_SHARED_P(a)
Definition: array.h:82
mrb_static_assert(((mrb_int)(sizeof(void *) *3/sizeof(mrb_value))) > 0, "MRB_ARY_EMBED_LEN_MAX > 0")
#define MRB_API
Definition: common.h:73
#define mrb_noreturn
Definition: common.h:44
#define mrb_break_proc_get(brk)
Definition: error.h:67
static mrb_value mrb_break_value_get(struct RBreak *brk)
Definition: error.h:52
void mrb_gc_mark_hash(mrb_state *, struct RHash *)
Definition: hash.c:1030
void mrb_gc_free_hash(mrb_state *, struct RHash *)
Definition: hash.c:1045
size_t mrb_gc_mark_hash_size(mrb_state *, struct RHash *)
Definition: hash.c:1039
#define mrb_define_class_method(mrb, c, name, f, a)
Definition: scanning.h:16
#define mrb_define_module(mrb, name)
Definition: scanning.h:20
void mrb_env_unshare(mrb_state *, struct REnv *)
Definition: vm.c:278
#define MRB_ENV_LEN(e)
Definition: proc.h:27
#define MRB_PROC_CFUNC_P(p)
Definition: proc.h:64
#define MRB_ENV_ONSTACK_P(e)
Definition: proc.h:35
void mrb_gc_free_iv(mrb_state *, struct RObject *)
Definition: variable.c:274
void mrb_gv_set(mrb_state *mrb, mrb_sym sym, mrb_value val)
Definition: variable.c:940
void mrb_gc_mark_gv(mrb_state *)
Definition: variable.c:249
void mrb_gc_mark_iv(mrb_state *, struct RObject *)
Definition: variable.c:262
mrb_value mrb_gv_get(mrb_state *mrb, mrb_sym sym)
Definition: variable.c:930
size_t mrb_gc_mark_iv_size(mrb_state *, struct RObject *)
Definition: variable.c:268
#define ttype(o)
Definition: lobject.h:133
#define mrb_gc_free_range(mrb, p)
Definition: range.h:41
void mrb_gc_mark_range(mrb_state *mrb, struct RRange *r)
Definition: range.c:375
ShellFileEnvironment e
Definition: sh6.c:388
#define RSTR_FSHARED_P(s)
Definition: string.h:73
void mrb_gc_free_str(mrb_state *, struct RString *)
Definition: string.c:269
Definition: array.h:32
Definition: object.h:19
struct RBasic * gcnext
Definition: object.h:20
enum mrb_vtype tt
Definition: object.h:20
struct RClass * c
Definition: object.h:20
Definition: error.h:45
Definition: class.h:17
struct RClass * super
Definition: class.h:21
Definition: data.h:30
Definition: proc.h:18
Definition: object.h:38
Definition: hash.h:18
Definition: object.h:30
Definition: proc.h:41
const mrb_irep * irep
Definition: proc.h:44
Definition: range.h:36
Definition: string.h:22
char padding[sizeof(void *) *4 - sizeof(uint32_t)]
Definition: gc.c:113
Definition: gc.c:116
Definition: obx.h:103
struct cell * prev
struct cell * next
Definition: sh.h:1689
Definition: gc.c:106
struct RBasic * next
Definition: gc.c:108
union mrb_callinfo::@1650 u
struct REnv * env
Definition: mruby.h:159
int16_t argc
Definition: mruby.h:153
const struct RProc * proc
Definition: mruby.h:155
struct RClass * target_class
Definition: mruby.h:160
Definition: gc.h:58
mrb_bool disabled
Definition: gc.h:80
mrb_heap_page * heaps
Definition: gc.h:59
mrb_bool generational
Definition: gc.h:82
int interval_ratio
Definition: gc.h:77
int step_ratio
Definition: gc.h:78
mrb_bool iterating
Definition: gc.h:79
mrb_bool out_of_memory
Definition: gc.h:83
Definition: irep.h:56
struct RClass * class_class
Definition: mruby.h:243
struct RClass * eStandardError_class
Definition: mruby.h:285
mrb_gc gc
Definition: mruby.h:261
struct RClass * module_class
Definition: mruby.h:244
struct RClass * true_class
Definition: mruby.h:255
struct RObject * stack_err
Definition: mruby.h:287
struct RClass * symbol_class
Definition: mruby.h:258
struct mrb_context * c
Definition: mruby.h:235
struct RClass * object_class
Definition: mruby.h:242
struct RObject * exc
Definition: mruby.h:239
void * allocf_ud
Definition: mruby.h:233
struct RClass * string_class
Definition: mruby.h:246
struct RClass * false_class
Definition: mruby.h:256
struct RClass * eException_class
Definition: mruby.h:284
struct RClass * array_class
Definition: mruby.h:247
struct RObject * top_self
Definition: mruby.h:241
struct RClass * kernel_module
Definition: mruby.h:259
struct RClass * hash_class
Definition: mruby.h:248
mrb_allocf allocf
Definition: mruby.h:232
struct RClass * proc_class
Definition: mruby.h:245
struct RClass * float_class
Definition: mruby.h:252
struct mrb_jmpbuf * jmp
Definition: mruby.h:230
struct mrb_context * root_c
Definition: mruby.h:236
struct RClass * nil_class
Definition: mruby.h:257
struct RObject * nomem_err
Definition: mruby.h:286
struct RClass * range_class
Definition: mruby.h:249
struct RClass * integer_class
Definition: mruby.h:254
Definition: mendex.h:14
Definition: table.h:30
while(temp)
Definition: t4ht.c:858
page
Definition: tex4ht.c:3916
return() int(((double) *(font_tbl[cur_fnt].wtbl+(int)(*(font_tbl[cur_fnt].char_wi+(int)(ch - font_tbl[cur_fnt].char_f)% 256)))/(double)(1L<< 20)) *(double) font_tbl[cur_fnt].scale)
#define MRB_THROW(buf)
Definition: throw.h:50
#define MRB_CATCH(buf)
Definition: throw.h:47
#define MRB_TRY(buf)
Definition: throw.h:46
#define MRB_END_EXC(buf)
Definition: throw.h:48
Definition: obx.h:51
@ start
Definition: preamble.c:52
@ enable
Definition: preamble.c:51
@ range
Definition: preamble.c:52
int32_t mrb_int
Definition: value.h:35
static mrb_value mrb_nil_value(void)
Definition: value.h:332
static mrb_value mrb_bool_value(mrb_bool boolean)
Definition: value.h:360
mrb_vtype
Definition: value.h:107
@ MRB_TT_EXCEPTION
Definition: value.h:126
@ MRB_TT_DATA
Definition: value.h:128
@ MRB_TT_BREAK
Definition: value.h:131
@ MRB_TT_SCLASS
Definition: value.h:120
@ MRB_TT_CLASS
Definition: value.h:117
@ MRB_TT_FREE
Definition: value.h:115
@ MRB_TT_OBJECT
Definition: value.h:116
@ MRB_TT_STRING
Definition: value.h:124
@ MRB_TT_RANGE
Definition: value.h:125
@ MRB_TT_FALSE
Definition: value.h:108
@ MRB_TT_MODULE
Definition: value.h:118
@ MRB_TT_HASH
Definition: value.h:123
@ MRB_TT_ICLASS
Definition: value.h:119
@ MRB_TT_ARRAY
Definition: value.h:122
@ MRB_TT_PROC
Definition: value.h:121
@ MRB_TT_MAXDEFINE
Definition: value.h:132
@ MRB_TT_FIBER
Definition: value.h:129
@ MRB_TT_ENV
Definition: value.h:127
static mrb_value mrb_fixnum_value(mrb_int i)
Definition: value.h:301
static mrb_value mrb_obj_value(void *p)
Definition: value.h:317
#define limit(x)
Definition: yuvsplittoppm.c:26
#define end(cp)
Definition: zic.c:71