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)  

cmscgats.c
Go to the documentation of this file.
1 //---------------------------------------------------------------------------------
2 //
3 // Little Color Management System
4 // Copyright (c) 1998-2020 Marti Maria Saguer
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining
7 // a copy of this software and associated documentation files (the "Software"),
8 // to deal in the Software without restriction, including without limitation
9 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 // and/or sell copies of the Software, and to permit persons to whom the Software
11 // is furnished to do so, subject to the following conditions:
12 //
13 // The above copyright notice and this permission notice shall be included in
14 // all copies or substantial portions of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
18 // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 //
24 //---------------------------------------------------------------------------------
25 //
26 
27 #include "lcms2_internal.h"
28 
29 
30 // IT8.7 / CGATS.17-200x handling -----------------------------------------------------------------------------
31 
32 
33 #define MAXID 128 // Max length of identifier
34 #define MAXSTR 1024 // Max length of string
35 #define MAXTABLES 255 // Max Number of tables in a single stream
36 #define MAXINCLUDE 20 // Max number of nested includes
37 
38 #define DEFAULT_DBL_FORMAT "%.10g" // Double formatting
39 
40 #ifdef CMS_IS_WINDOWS_
41 # include <io.h>
42 # define DIR_CHAR '\\'
43 #else
44 # define DIR_CHAR '/'
45 #endif
46 
47 
48 // Symbols
49 typedef enum {
50 
52  SINUM, // Integer
53  SDNUM, // Real
54  SIDENT, // Identifier
55  SSTRING, // string
56  SCOMMENT, // comment
57  SEOLN, // End of line
58  SEOF, // End of stream
59  SSYNERROR, // Syntax error found on stream
60 
61  // Keywords
62 
69  SINCLUDE
70 
71  } SYMBOL;
72 
73 
74 // How to write the value
75 typedef enum {
76 
82 
84 
85 // Linked list of variable names
86 typedef struct _KeyVal {
87 
88  struct _KeyVal* Next;
89  char* Keyword; // Name of variable
90  struct _KeyVal* NextSubkey; // If key is a dictionary, points to the next item
91  char* Subkey; // If key is a dictionary, points to the subkey name
92  char* Value; // Points to value
93  WRITEMODE WriteAs; // How to write the value
94 
96 
97 
98 // Linked list of memory chunks (Memory sink)
99 typedef struct _OwnedMem {
100 
101  struct _OwnedMem* Next;
102  void * Ptr; // Point to value
103 
105 
106 // Suballocator
107 typedef struct _SubAllocator {
108 
112 
114 
115 // Table. Each individual table can hold properties and rows & cols
116 typedef struct _Table {
117 
118  char SheetType[MAXSTR]; // The first row of the IT8 (the type)
119 
120  int nSamples, nPatches; // Cols, Rows
121  int SampleID; // Pos of ID
122 
123  KEYVALUE* HeaderList; // The properties
124 
125  char** DataFormat; // The binary stream descriptor
126  char** Data; // The binary stream
127 
128  } TABLE;
129 
130 // File stream being parsed
131 typedef struct _FileContext {
132  char FileName[cmsMAX_PATH]; // File name if being read from file
133  FILE* Stream; // File stream or NULL if holded in memory
135 
136 // This struct hold all information about an open IT8 handler.
137 typedef struct {
138 
139 
140  cmsUInt32Number TablesCount; // How many tables in this stream
141  cmsUInt32Number nTable; // The actual table
142 
144 
145  // Memory management
146  OWNEDMEM* MemorySink; // The storage backend
147  SUBALLOCATOR Allocator; // String suballocator -- just to keep it fast
148 
149  // Parser state machine
150  SYMBOL sy; // Current symbol
151  int ch; // Current character
152 
153  cmsInt32Number inum; // integer value
154  cmsFloat64Number dnum; // real value
155 
156  char id[MAXID]; // identifier
157  char str[MAXSTR]; // string
158 
159  // Allowed keywords & datasets. They have visibility on whole stream
162 
163  char* Source; // Points to loc. being parsed
164  cmsInt32Number lineno; // line counter for error reporting
165 
166  FILECTX* FileStack[MAXINCLUDE]; // Stack of files being parsed
167  cmsInt32Number IncludeSP; // Include Stack Pointer
168 
169  char* MemoryBlock; // The stream if holded in memory
170 
171  char DoubleFormatter[MAXID];// Printf-like 'cmsFloat64Number' formatter
172 
173  cmsContext ContextID; // The threading context
174 
175  } cmsIT8;
176 
177 
178 // The stream for save operations
179 typedef struct {
180 
181  FILE* stream; // For save-to-file behaviour
182 
184  cmsUInt8Number* Ptr; // For save-to-mem behaviour
187 
188  } SAVESTREAM;
189 
190 
191 // ------------------------------------------------------ cmsIT8 parsing routines
192 
193 
194 // A keyword
195 typedef struct {
196 
197  const char *id;
199 
200  } KEYWORD;
201 
202 // The keyword->symbol translation table. Sorting is required.
203 static const KEYWORD TabKeys[] = {
204 
205  {"$INCLUDE", SINCLUDE}, // This is an extension!
206  {".INCLUDE", SINCLUDE}, // This is an extension!
207 
208  {"BEGIN_DATA", SBEGIN_DATA },
209  {"BEGIN_DATA_FORMAT", SBEGIN_DATA_FORMAT },
210  {"DATA_FORMAT_IDENTIFIER", SDATA_FORMAT_ID},
211  {"END_DATA", SEND_DATA},
212  {"END_DATA_FORMAT", SEND_DATA_FORMAT},
213  {"KEYWORD", SKEYWORD}
214  };
215 
216 #define NUMKEYS (sizeof(TabKeys)/sizeof(KEYWORD))
217 
218 // Predefined properties
219 
220 // A property
221 typedef struct {
222  const char *id; // The identifier
223  WRITEMODE as; // How is supposed to be written
224  } PROPERTY;
225 
227 
228  {"NUMBER_OF_FIELDS", WRITE_UNCOOKED}, // Required - NUMBER OF FIELDS
229  {"NUMBER_OF_SETS", WRITE_UNCOOKED}, // Required - NUMBER OF SETS
230  {"ORIGINATOR", WRITE_STRINGIFY}, // Required - Identifies the specific system, organization or individual that created the data file.
231  {"FILE_DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file.
232  {"CREATED", WRITE_STRINGIFY}, // Required - Indicates date of creation of the data file.
233  {"DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file.
234  {"DIFFUSE_GEOMETRY", WRITE_STRINGIFY}, // The diffuse geometry used. Allowed values are "sphere" or "opal".
235  {"MANUFACTURER", WRITE_STRINGIFY},
236  {"MANUFACTURE", WRITE_STRINGIFY}, // Some broken Fuji targets does store this value
237  {"PROD_DATE", WRITE_STRINGIFY}, // Identifies year and month of production of the target in the form yyyy:mm.
238  {"SERIAL", WRITE_STRINGIFY}, // Uniquely identifies individual physical target.
239 
240  {"MATERIAL", WRITE_STRINGIFY}, // Identifies the material on which the target was produced using a code
241  // uniquely identifying th e material. This is intend ed to be used for IT8.7
242  // physical targets only (i.e . IT8.7/1 a nd IT8.7/2).
243 
244  {"INSTRUMENTATION", WRITE_STRINGIFY}, // Used to report the specific instrumentation used (manufacturer and
245  // model number) to generate the data reported. This data will often
246  // provide more information about the particular data collected than an
247  // extensive list of specific details. This is particularly important for
248  // spectral data or data derived from spectrophotometry.
249 
250  {"MEASUREMENT_SOURCE", WRITE_STRINGIFY}, // Illumination used for spectral measurements. This data helps provide
251  // a guide to the potential for issues of paper fluorescence, etc.
252 
253  {"PRINT_CONDITIONS", WRITE_STRINGIFY}, // Used to define the characteristics of the printed sheet being reported.
254  // Where standard conditions have been defined (e.g., SWOP at nominal)
255  // named conditions may suffice. Otherwise, detailed information is
256  // needed.
257 
258  {"SAMPLE_BACKING", WRITE_STRINGIFY}, // Identifies the backing material used behind the sample during
259  // measurement. Allowed values are "black", "white", or {"na".
260 
261  {"CHISQ_DOF", WRITE_STRINGIFY}, // Degrees of freedom associated with the Chi squared statistic
262  // below properties are new in recent specs:
263 
264  {"MEASUREMENT_GEOMETRY", WRITE_STRINGIFY}, // The type of measurement, either reflection or transmission, should be indicated
265  // along with details of the geometry and the aperture size and shape. For example,
266  // for transmission measurements it is important to identify 0/diffuse, diffuse/0,
267  // opal or integrating sphere, etc. For reflection it is important to identify 0/45,
268  // 45/0, sphere (specular included or excluded), etc.
269 
270  {"FILTER", WRITE_STRINGIFY}, // Identifies the use of physical filter(s) during measurement. Typically used to
271  // denote the use of filters such as none, D65, Red, Green or Blue.
272 
273  {"POLARIZATION", WRITE_STRINGIFY}, // Identifies the use of a physical polarization filter during measurement. Allowed
274  // values are {"yes", "white", "none" or "na".
275 
276  {"WEIGHTING_FUNCTION", WRITE_PAIR}, // Indicates such functions as: the CIE standard observer functions used in the
277  // calculation of various data parameters (2 degree and 10 degree), CIE standard
278  // illuminant functions used in the calculation of various data parameters (e.g., D50,
279  // D65, etc.), density status response, etc. If used there shall be at least one
280  // name-value pair following the WEIGHTING_FUNCTION tag/keyword. The first attribute
281  // in the set shall be {"name" and shall identify the particular parameter used.
282  // The second shall be {"value" and shall provide the value associated with that name.
283  // For ASCII data, a string containing the Name and Value attribute pairs shall follow
284  // the weighting function keyword. A semi-colon separates attribute pairs from each
285  // other and within the attribute the name and value are separated by a comma.
286 
287  {"COMPUTATIONAL_PARAMETER", WRITE_PAIR}, // Parameter that is used in computing a value from measured data. Name is the name
288  // of the calculation, parameter is the name of the parameter used in the calculation
289  // and value is the value of the parameter.
290 
291  {"TARGET_TYPE", WRITE_STRINGIFY}, // The type of target being measured, e.g. IT8.7/1, IT8.7/3, user defined, etc.
292 
293  {"COLORANT", WRITE_STRINGIFY}, // Identifies the colorant(s) used in creating the target.
294 
295  {"TABLE_DESCRIPTOR", WRITE_STRINGIFY}, // Describes the purpose or contents of a data table.
296 
297  {"TABLE_NAME", WRITE_STRINGIFY} // Provides a short name for a data table.
298 };
299 
300 #define NUMPREDEFINEDPROPS (sizeof(PredefinedProperties)/sizeof(PROPERTY))
301 
302 
303 // Predefined sample types on dataset
304 static const char* PredefinedSampleID[] = {
305  "SAMPLE_ID", // Identifies sample that data represents
306  "STRING", // Identifies label, or other non-machine readable value.
307  // Value must begin and end with a " symbol
308 
309  "CMYK_C", // Cyan component of CMYK data expressed as a percentage
310  "CMYK_M", // Magenta component of CMYK data expressed as a percentage
311  "CMYK_Y", // Yellow component of CMYK data expressed as a percentage
312  "CMYK_K", // Black component of CMYK data expressed as a percentage
313  "D_RED", // Red filter density
314  "D_GREEN", // Green filter density
315  "D_BLUE", // Blue filter density
316  "D_VIS", // Visual filter density
317  "D_MAJOR_FILTER", // Major filter d ensity
318  "RGB_R", // Red component of RGB data
319  "RGB_G", // Green component of RGB data
320  "RGB_B", // Blue com ponent of RGB data
321  "SPECTRAL_NM", // Wavelength of measurement expressed in nanometers
322  "SPECTRAL_PCT", // Percentage reflectance/transmittance
323  "SPECTRAL_DEC", // Reflectance/transmittance
324  "XYZ_X", // X component of tristimulus data
325  "XYZ_Y", // Y component of tristimulus data
326  "XYZ_Z", // Z component of tristimulus data
327  "XYY_X", // x component of chromaticity data
328  "XYY_Y", // y component of chromaticity data
329  "XYY_CAPY", // Y component of tristimulus data
330  "LAB_L", // L* component of Lab data
331  "LAB_A", // a* component of Lab data
332  "LAB_B", // b* component of Lab data
333  "LAB_C", // C*ab component of Lab data
334  "LAB_H", // hab component of Lab data
335  "LAB_DE", // CIE dE
336  "LAB_DE_94", // CIE dE using CIE 94
337  "LAB_DE_CMC", // dE using CMC
338  "LAB_DE_2000", // CIE dE using CIE DE 2000
339  "MEAN_DE", // Mean Delta E (LAB_DE) of samples compared to batch average
340  // (Used for data files for ANSI IT8.7/1 and IT8.7/2 targets)
341  "STDEV_X", // Standard deviation of X (tristimulus data)
342  "STDEV_Y", // Standard deviation of Y (tristimulus data)
343  "STDEV_Z", // Standard deviation of Z (tristimulus data)
344  "STDEV_L", // Standard deviation of L*
345  "STDEV_A", // Standard deviation of a*
346  "STDEV_B", // Standard deviation of b*
347  "STDEV_DE", // Standard deviation of CIE dE
348  "CHI_SQD_PAR"}; // The average of the standard deviations of L*, a* and b*. It is
349  // used to derive an estimate of the chi-squared parameter which is
350  // recommended as the predictor of the variability of dE
351 
352 #define NUMPREDEFINEDSAMPLEID (sizeof(PredefinedSampleID)/sizeof(char *))
353 
354 //Forward declaration of some internal functions
355 static void* AllocChunk(cmsIT8* it8, cmsUInt32Number size);
356 
357 // Checks whatever c is a separator
358 static
360 {
361  return (c == ' ') || (c == '\t') ;
362 }
363 
364 // Checks whatever c is a valid identifier char
365 static
367 {
368  return (!isseparator(c) && (c != '#') && (c !='\"') && (c != '\'') && (c > 32) && (c < 127));
369 }
370 
371 // Checks whatsever c is a valid identifier middle char.
372 static
374 {
375  return isalnum(c) || ismiddle(c);
376 }
377 
378 // Checks whatsever c is a valid identifier first char.
379 static
381 {
382  return !isdigit(c) && ismiddle(c);
383 }
384 
385 // Guess whether the supplied path looks like an absolute path
386 static
388 {
389  char ThreeChars[4];
390 
391  if(path == NULL)
392  return FALSE;
393  if (path[0] == 0)
394  return FALSE;
395 
396  strncpy(ThreeChars, path, 3);
397  ThreeChars[3] = 0;
398 
399  if(ThreeChars[0] == DIR_CHAR)
400  return TRUE;
401 
402 #ifdef CMS_IS_WINDOWS_
403  if (isalpha((int) ThreeChars[0]) && ThreeChars[1] == ':')
404  return TRUE;
405 #endif
406  return FALSE;
407 }
408 
409 
410 // Makes a file path based on a given reference path
411 // NOTE: this function doesn't check if the path exists or even if it's legal
412 static
413 cmsBool BuildAbsolutePath(const char *relPath, const char *basePath, char *buffer, cmsUInt32Number MaxLen)
414 {
415  char *tail;
417 
418  // Already absolute?
419  if (isabsolutepath(relPath)) {
420 
421  strncpy(buffer, relPath, MaxLen);
422  buffer[MaxLen-1] = 0;
423  return TRUE;
424  }
425 
426  // No, search for last
427  strncpy(buffer, basePath, MaxLen);
428  buffer[MaxLen-1] = 0;
429 
431  if (tail == NULL) return FALSE; // Is not absolute and has no separators??
432 
433  len = (cmsUInt32Number) (tail - buffer);
434  if (len >= MaxLen) return FALSE;
435 
436  // No need to assure zero terminator over here
437  strncpy(tail + 1, relPath, MaxLen - len);
438 
439  return TRUE;
440 }
441 
442 
443 // Make sure no exploit is being even tried
444 static
445 const char* NoMeta(const char* str)
446 {
447  if (strchr(str, '%') != NULL)
448  return "**** CORRUPTED FORMAT STRING ***";
449 
450  return str;
451 }
452 
453 // Syntax error
454 static
455 cmsBool SynError(cmsIT8* it8, const char *Txt, ...)
456 {
457  char Buffer[256], ErrMsg[1024];
458  va_list args;
459 
460  va_start(args, Txt);
461  vsnprintf(Buffer, 255, Txt, args);
462  Buffer[255] = 0;
463  va_end(args);
464 
465  snprintf(ErrMsg, 1023, "%s: Line %d, %s", it8->FileStack[it8 ->IncludeSP]->FileName, it8->lineno, Buffer);
466  ErrMsg[1023] = 0;
467  it8->sy = SSYNERROR;
468  cmsSignalError(it8 ->ContextID, cmsERROR_CORRUPTION_DETECTED, "%s", ErrMsg);
469  return FALSE;
470 }
471 
472 // Check if current symbol is same as specified. issue an error else.
473 static
474 cmsBool Check(cmsIT8* it8, SYMBOL sy, const char* Err)
475 {
476  if (it8 -> sy != sy)
477  return SynError(it8, NoMeta(Err));
478  return TRUE;
479 }
480 
481 // Read Next character from stream
482 static
483 void NextCh(cmsIT8* it8)
484 {
485  if (it8 -> FileStack[it8 ->IncludeSP]->Stream) {
486 
487  it8 ->ch = fgetc(it8 ->FileStack[it8 ->IncludeSP]->Stream);
488 
489  if (feof(it8 -> FileStack[it8 ->IncludeSP]->Stream)) {
490 
491  if (it8 ->IncludeSP > 0) {
492 
493  fclose(it8 ->FileStack[it8->IncludeSP--]->Stream);
494  it8 -> ch = ' '; // Whitespace to be ignored
495 
496  } else
497  it8 ->ch = 0; // EOF
498  }
499  }
500  else {
501  it8->ch = *it8->Source;
502  if (it8->ch) it8->Source++;
503  }
504 }
505 
506 
507 // Try to see if current identifier is a keyword, if so return the referred symbol
508 static
509 SYMBOL BinSrchKey(const char *id)
510 {
511  int l = 1;
512  int r = NUMKEYS;
513  int x, res;
514 
515  while (r >= l)
516  {
517  x = (l+r)/2;
518  res = cmsstrcasecmp(id, TabKeys[x-1].id);
519  if (res == 0) return TabKeys[x-1].sy;
520  if (res < 0) r = x - 1;
521  else l = x + 1;
522  }
523 
524  return SUNDEFINED;
525 }
526 
527 
528 // 10 ^n
529 static
531 {
532  return pow(10, (cmsFloat64Number) n);
533 }
534 
535 
536 // Reads a Real number, tries to follow from integer number
537 static
538 void ReadReal(cmsIT8* it8, cmsInt32Number inum)
539 {
540  it8->dnum = (cmsFloat64Number)inum;
541 
542  while (isdigit(it8->ch)) {
543 
544  it8->dnum = (cmsFloat64Number)it8->dnum * 10.0 + (cmsFloat64Number)(it8->ch - '0');
545  NextCh(it8);
546  }
547 
548  if (it8->ch == '.') { // Decimal point
549 
550  cmsFloat64Number frac = 0.0; // fraction
551  int prec = 0; // precision
552 
553  NextCh(it8); // Eats dec. point
554 
555  while (isdigit(it8->ch)) {
556 
557  frac = frac * 10.0 + (cmsFloat64Number)(it8->ch - '0');
558  prec++;
559  NextCh(it8);
560  }
561 
562  it8->dnum = it8->dnum + (frac / xpow10(prec));
563  }
564 
565  // Exponent, example 34.00E+20
566  if (toupper(it8->ch) == 'E') {
567 
568  cmsInt32Number e;
569  cmsInt32Number sgn;
570 
571  NextCh(it8); sgn = 1;
572 
573  if (it8->ch == '-') {
574 
575  sgn = -1; NextCh(it8);
576  }
577  else
578  if (it8->ch == '+') {
579 
580  sgn = +1;
581  NextCh(it8);
582  }
583 
584  e = 0;
585  while (isdigit(it8->ch)) {
586 
587  cmsInt32Number digit = (it8->ch - '0');
588 
589  if ((cmsFloat64Number)e * 10.0 + (cmsFloat64Number)digit < (cmsFloat64Number)+2147483647.0)
590  e = e * 10 + digit;
591 
592  NextCh(it8);
593  }
594 
595  e = sgn*e;
596  it8->dnum = it8->dnum * xpow10(e);
597  }
598 }
599 
600 // Parses a float number
601 // This can not call directly atof because it uses locale dependent
602 // parsing, while CCMX files always use . as decimal separator
603 static
605 {
606  cmsFloat64Number dnum = 0.0;
607  int sign = 1;
608 
609  // keep safe
610  if (Buffer == NULL) return 0.0;
611 
612  if (*Buffer == '-' || *Buffer == '+') {
613 
614  sign = (*Buffer == '-') ? -1 : 1;
615  Buffer++;
616  }
617 
618 
619  while (*Buffer && isdigit((int)*Buffer)) {
620 
621  dnum = dnum * 10.0 + (*Buffer - '0');
622  if (*Buffer) Buffer++;
623  }
624 
625  if (*Buffer == '.') {
626 
627  cmsFloat64Number frac = 0.0; // fraction
628  int prec = 0; // precision
629 
630  if (*Buffer) Buffer++;
631 
632  while (*Buffer && isdigit((int)*Buffer)) {
633 
634  frac = frac * 10.0 + (*Buffer - '0');
635  prec++;
636  if (*Buffer) Buffer++;
637  }
638 
639  dnum = dnum + (frac / xpow10(prec));
640  }
641 
642  // Exponent, example 34.00E+20
643  if (*Buffer && toupper(*Buffer) == 'E') {
644 
645  int e;
646  int sgn;
647 
648  if (*Buffer) Buffer++;
649  sgn = 1;
650 
651  if (*Buffer == '-') {
652 
653  sgn = -1;
654  if (*Buffer) Buffer++;
655  }
656  else
657  if (*Buffer == '+') {
658 
659  sgn = +1;
660  if (*Buffer) Buffer++;
661  }
662 
663  e = 0;
664  while (*Buffer && isdigit((int)*Buffer)) {
665 
666  cmsInt32Number digit = (*Buffer - '0');
667 
668  if ((cmsFloat64Number)e * 10.0 + digit < (cmsFloat64Number)+2147483647.0)
669  e = e * 10 + digit;
670 
671  if (*Buffer) Buffer++;
672  }
673 
674  e = sgn*e;
675  dnum = dnum * xpow10(e);
676  }
677 
678  return sign * dnum;
679 }
680 
681 
682 // Reads next symbol
683 static
684 void InSymbol(cmsIT8* it8)
685 {
686  CMSREGISTER char *idptr;
687  CMSREGISTER int k;
688  SYMBOL key;
689  int sng;
690 
691  do {
692 
693  while (isseparator(it8->ch))
694  NextCh(it8);
695 
696  if (isfirstidchar(it8->ch)) { // Identifier
697 
698  k = 0;
699  idptr = it8->id;
700 
701  do {
702 
703  if (++k < MAXID) *idptr++ = (char) it8->ch;
704 
705  NextCh(it8);
706 
707  } while (isidchar(it8->ch));
708 
709  *idptr = '\0';
710 
711 
712  key = BinSrchKey(it8->id);
713  if (key == SUNDEFINED) it8->sy = SIDENT;
714  else it8->sy = key;
715 
716  }
717  else // Is a number?
718  if (isdigit(it8->ch) || it8->ch == '.' || it8->ch == '-' || it8->ch == '+')
719  {
720  int sign = 1;
721 
722  if (it8->ch == '-') {
723  sign = -1;
724  NextCh(it8);
725  }
726 
727  it8->inum = 0;
728  it8->sy = SINUM;
729 
730  if (it8->ch == '0') { // 0xnnnn (Hexa) or 0bnnnn (Binary)
731 
732  NextCh(it8);
733  if (toupper(it8->ch) == 'X') {
734 
735  int j;
736 
737  NextCh(it8);
738  while (isxdigit(it8->ch))
739  {
740  it8->ch = toupper(it8->ch);
741  if (it8->ch >= 'A' && it8->ch <= 'F') j = it8->ch -'A'+10;
742  else j = it8->ch - '0';
743 
744  if ((cmsFloat64Number) it8->inum * 16.0 + (cmsFloat64Number) j > (cmsFloat64Number)+2147483647.0)
745  {
746  SynError(it8, "Invalid hexadecimal number");
747  return;
748  }
749 
750  it8->inum = it8->inum * 16 + j;
751  NextCh(it8);
752  }
753  return;
754  }
755 
756  if (toupper(it8->ch) == 'B') { // Binary
757 
758  int j;
759 
760  NextCh(it8);
761  while (it8->ch == '0' || it8->ch == '1')
762  {
763  j = it8->ch - '0';
764 
765  if ((cmsFloat64Number) it8->inum * 2.0 + j > (cmsFloat64Number)+2147483647.0)
766  {
767  SynError(it8, "Invalid binary number");
768  return;
769  }
770 
771  it8->inum = it8->inum * 2 + j;
772  NextCh(it8);
773  }
774  return;
775  }
776  }
777 
778 
779  while (isdigit(it8->ch)) {
780 
781  cmsInt32Number digit = (it8->ch - '0');
782 
783  if ((cmsFloat64Number) it8->inum * 10.0 + (cmsFloat64Number) digit > (cmsFloat64Number) +2147483647.0) {
784  ReadReal(it8, it8->inum);
785  it8->sy = SDNUM;
786  it8->dnum *= sign;
787  return;
788  }
789 
790  it8->inum = it8->inum * 10 + digit;
791  NextCh(it8);
792  }
793 
794  if (it8->ch == '.') {
795 
796  ReadReal(it8, it8->inum);
797  it8->sy = SDNUM;
798  it8->dnum *= sign;
799  return;
800  }
801 
802  it8 -> inum *= sign;
803 
804  // Special case. Numbers followed by letters are taken as identifiers
805 
806  if (isidchar(it8 ->ch)) {
807 
808  if (it8 ->sy == SINUM) {
809 
810  snprintf(it8->id, 127, "%d", it8->inum);
811  }
812  else {
813 
814  snprintf(it8->id, 127, it8 ->DoubleFormatter, it8->dnum);
815  }
816 
817  k = (int) strlen(it8 ->id);
818  idptr = it8 ->id + k;
819  do {
820 
821  if (++k < MAXID) *idptr++ = (char) it8->ch;
822 
823  NextCh(it8);
824 
825  } while (isidchar(it8->ch));
826 
827  *idptr = '\0';
828  it8->sy = SIDENT;
829  }
830  return;
831 
832  }
833  else
834  switch ((int) it8->ch) {
835 
836  // EOF marker -- ignore it
837  case '\x1a':
838  NextCh(it8);
839  break;
840 
841  // Eof stream markers
842  case 0:
843  case -1:
844  it8->sy = SEOF;
845  break;
846 
847 
848  // Next line
849  case '\r':
850  NextCh(it8);
851  if (it8 ->ch == '\n')
852  NextCh(it8);
853  it8->sy = SEOLN;
854  it8->lineno++;
855  break;
856 
857  case '\n':
858  NextCh(it8);
859  it8->sy = SEOLN;
860  it8->lineno++;
861  break;
862 
863  // Comment
864  case '#':
865  NextCh(it8);
866  while (it8->ch && it8->ch != '\n' && it8->ch != '\r')
867  NextCh(it8);
868 
869  it8->sy = SCOMMENT;
870  break;
871 
872  // String.
873  case '\'':
874  case '\"':
875  idptr = it8->str;
876  sng = it8->ch;
877  k = 0;
878  NextCh(it8);
879 
880  while (k < (MAXSTR-1) && it8->ch != sng) {
881 
882  if (it8->ch == '\n'|| it8->ch == '\r') k = MAXSTR+1;
883  else {
884  *idptr++ = (char) it8->ch;
885  NextCh(it8);
886  k++;
887  }
888  }
889 
890  it8->sy = SSTRING;
891  *idptr = '\0';
892  NextCh(it8);
893  break;
894 
895 
896  default:
897  SynError(it8, "Unrecognized character: 0x%x", it8 ->ch);
898  return;
899  }
900 
901  } while (it8->sy == SCOMMENT);
902 
903  // Handle the include special token
904 
905  if (it8 -> sy == SINCLUDE) {
906 
907  FILECTX* FileNest;
908 
909  if(it8 -> IncludeSP >= (MAXINCLUDE-1)) {
910 
911  SynError(it8, "Too many recursion levels");
912  return;
913  }
914 
915  InSymbol(it8);
916  if (!Check(it8, SSTRING, "Filename expected")) return;
917 
918  FileNest = it8 -> FileStack[it8 -> IncludeSP + 1];
919  if(FileNest == NULL) {
920 
921  FileNest = it8 ->FileStack[it8 -> IncludeSP + 1] = (FILECTX*)AllocChunk(it8, sizeof(FILECTX));
922  //if(FileNest == NULL)
923  // TODO: how to manage out-of-memory conditions?
924  }
925 
926  if (BuildAbsolutePath(it8->str,
927  it8->FileStack[it8->IncludeSP]->FileName,
928  FileNest->FileName, cmsMAX_PATH-1) == FALSE) {
929  SynError(it8, "File path too long");
930  return;
931  }
932 
933  FileNest->Stream = fopen(FileNest->FileName, "rt");
934  if (FileNest->Stream == NULL) {
935 
936  SynError(it8, "File %s not found", FileNest->FileName);
937  return;
938  }
939  it8->IncludeSP++;
940 
941  it8 ->ch = ' ';
942  InSymbol(it8);
943  }
944 
945 }
946 
947 // Checks end of line separator
948 static
950 {
951  if (!Check(it8, SEOLN, "Expected separator")) return FALSE;
952  while (it8 -> sy == SEOLN)
953  InSymbol(it8);
954  return TRUE;
955 
956 }
957 
958 // Skip a symbol
959 
960 static
961 void Skip(cmsIT8* it8, SYMBOL sy)
962 {
963  if (it8->sy == sy && it8->sy != SEOF)
964  InSymbol(it8);
965 }
966 
967 
968 // Skip multiple EOLN
969 static
970 void SkipEOLN(cmsIT8* it8)
971 {
972  while (it8->sy == SEOLN) {
973  InSymbol(it8);
974  }
975 }
976 
977 
978 // Returns a string holding current value
979 static
980 cmsBool GetVal(cmsIT8* it8, char* Buffer, cmsUInt32Number max, const char* ErrorTitle)
981 {
982  switch (it8->sy) {
983 
984  case SEOLN: // Empty value
985  Buffer[0]=0;
986  break;
987  case SIDENT: strncpy(Buffer, it8->id, max);
988  Buffer[max-1]=0;
989  break;
990  case SINUM: snprintf(Buffer, max, "%d", it8 -> inum); break;
991  case SDNUM: snprintf(Buffer, max, it8->DoubleFormatter, it8 -> dnum); break;
992  case SSTRING: strncpy(Buffer, it8->str, max);
993  Buffer[max-1] = 0;
994  break;
995 
996 
997  default:
998  return SynError(it8, "%s", ErrorTitle);
999  }
1000 
1001  Buffer[max] = 0;
1002  return TRUE;
1003 }
1004 
1005 // ---------------------------------------------------------- Table
1006 
1007 static
1009 {
1010  if ((it8 -> nTable >= it8 ->TablesCount)) {
1011 
1012  SynError(it8, "Table %d out of sequence", it8 -> nTable);
1013  return it8 -> Tab;
1014  }
1015 
1016  return it8 ->Tab + it8 ->nTable;
1017 }
1018 
1019 // ---------------------------------------------------------- Memory management
1020 
1021 
1022 // Frees an allocator and owned memory
1024 {
1025  cmsIT8* it8 = (cmsIT8*) hIT8;
1026 
1027  if (it8 == NULL)
1028  return;
1029 
1030  if (it8->MemorySink) {
1031 
1032  OWNEDMEM* p;
1033  OWNEDMEM* n;
1034 
1035  for (p = it8->MemorySink; p != NULL; p = n) {
1036 
1037  n = p->Next;
1038  if (p->Ptr) _cmsFree(it8 ->ContextID, p->Ptr);
1039  _cmsFree(it8 ->ContextID, p);
1040  }
1041  }
1042 
1043  if (it8->MemoryBlock)
1044  _cmsFree(it8 ->ContextID, it8->MemoryBlock);
1045 
1046  _cmsFree(it8 ->ContextID, it8);
1047 }
1048 
1049 
1050 // Allocates a chunk of data, keep linked list
1051 static
1053 {
1054  OWNEDMEM* ptr1;
1055  void* ptr = _cmsMallocZero(it8->ContextID, size);
1056 
1057  if (ptr != NULL) {
1058 
1059  ptr1 = (OWNEDMEM*) _cmsMallocZero(it8 ->ContextID, sizeof(OWNEDMEM));
1060 
1061  if (ptr1 == NULL) {
1062 
1063  _cmsFree(it8 ->ContextID, ptr);
1064  return NULL;
1065  }
1066 
1067  ptr1-> Ptr = ptr;
1068  ptr1-> Next = it8 -> MemorySink;
1069  it8 -> MemorySink = ptr1;
1070  }
1071 
1072  return ptr;
1073 }
1074 
1075 
1076 // Suballocator.
1077 static
1079 {
1082 
1083  size = _cmsALIGNMEM(size);
1084 
1085  if (size > Free) {
1086 
1087  if (it8 -> Allocator.BlockSize == 0)
1088 
1089  it8 -> Allocator.BlockSize = 20*1024;
1090  else
1091  it8 ->Allocator.BlockSize *= 2;
1092 
1093  if (it8 ->Allocator.BlockSize < size)
1094  it8 ->Allocator.BlockSize = size;
1095 
1096  it8 ->Allocator.Used = 0;
1097  it8 ->Allocator.Block = (cmsUInt8Number*) AllocBigBlock(it8, it8 ->Allocator.BlockSize);
1098  }
1099 
1100  ptr = it8 ->Allocator.Block + it8 ->Allocator.Used;
1101  it8 ->Allocator.Used += size;
1102 
1103  return (void*) ptr;
1104 
1105 }
1106 
1107 
1108 // Allocates a string
1109 static
1110 char *AllocString(cmsIT8* it8, const char* str)
1111 {
1113  char *ptr;
1114 
1115 
1116  ptr = (char *) AllocChunk(it8, Size);
1117  if (ptr) strncpy (ptr, str, Size-1);
1118 
1119  return ptr;
1120 }
1121 
1122 // Searches through linked list
1123 
1124 static
1125 cmsBool IsAvailableOnList(KEYVALUE* p, const char* Key, const char* Subkey, KEYVALUE** LastPtr)
1126 {
1127  if (LastPtr) *LastPtr = p;
1128 
1129  for (; p != NULL; p = p->Next) {
1130 
1131  if (LastPtr) *LastPtr = p;
1132 
1133  if (*Key != '#') { // Comments are ignored
1134 
1135  if (cmsstrcasecmp(Key, p->Keyword) == 0)
1136  break;
1137  }
1138  }
1139 
1140  if (p == NULL)
1141  return FALSE;
1142 
1143  if (Subkey == 0)
1144  return TRUE;
1145 
1146  for (; p != NULL; p = p->NextSubkey) {
1147 
1148  if (p ->Subkey == NULL) continue;
1149 
1150  if (LastPtr) *LastPtr = p;
1151 
1152  if (cmsstrcasecmp(Subkey, p->Subkey) == 0)
1153  return TRUE;
1154  }
1155 
1156  return FALSE;
1157 }
1158 
1159 
1160 
1161 // Add a property into a linked list
1162 static
1163 KEYVALUE* AddToList(cmsIT8* it8, KEYVALUE** Head, const char *Key, const char *Subkey, const char* xValue, WRITEMODE WriteAs)
1164 {
1165  KEYVALUE* p;
1166  KEYVALUE* last;
1167 
1168 
1169  // Check if property is already in list
1170 
1171  if (IsAvailableOnList(*Head, Key, Subkey, &p)) {
1172 
1173  // This may work for editing properties
1174 
1175  // return SynError(it8, "duplicate key <%s>", Key);
1176  }
1177  else {
1178 
1179  last = p;
1180 
1181  // Allocate the container
1182  p = (KEYVALUE*) AllocChunk(it8, sizeof(KEYVALUE));
1183  if (p == NULL)
1184  {
1185  SynError(it8, "AddToList: out of memory");
1186  return NULL;
1187  }
1188 
1189  // Store name and value
1190  p->Keyword = AllocString(it8, Key);
1191  p->Subkey = (Subkey == NULL) ? NULL : AllocString(it8, Subkey);
1192 
1193  // Keep the container in our list
1194  if (*Head == NULL) {
1195  *Head = p;
1196  }
1197  else
1198  {
1199  if (Subkey != NULL && last != NULL) {
1200 
1201  last->NextSubkey = p;
1202 
1203  // If Subkey is not null, then last is the last property with the same key,
1204  // but not necessarily is the last property in the list, so we need to move
1205  // to the actual list end
1206  while (last->Next != NULL)
1207  last = last->Next;
1208  }
1209 
1210  if (last != NULL) last->Next = p;
1211  }
1212 
1213  p->Next = NULL;
1214  p->NextSubkey = NULL;
1215  }
1216 
1217  p->WriteAs = WriteAs;
1218 
1219  if (xValue != NULL) {
1220 
1221  p->Value = AllocString(it8, xValue);
1222  }
1223  else {
1224  p->Value = NULL;
1225  }
1226 
1227  return p;
1228 }
1229 
1230 static
1232 {
1233  return AddToList(it8, &it8->ValidKeywords, Key, NULL, NULL, as);
1234 }
1235 
1236 
1237 static
1239 {
1240  return AddToList(it8, &it8->ValidSampleID, Key, NULL, NULL, WRITE_UNCOOKED);
1241 }
1242 
1243 
1244 static
1245 void AllocTable(cmsIT8* it8)
1246 {
1247  TABLE* t;
1248 
1249  t = it8 ->Tab + it8 ->TablesCount;
1250 
1251  t->HeaderList = NULL;
1252  t->DataFormat = NULL;
1253  t->Data = NULL;
1254 
1255  it8 ->TablesCount++;
1256 }
1257 
1258 
1260 {
1261  cmsIT8* it8 = (cmsIT8*) IT8;
1262 
1263  if (nTable >= it8 ->TablesCount) {
1264 
1265  if (nTable == it8 ->TablesCount) {
1266 
1267  AllocTable(it8);
1268  }
1269  else {
1270  SynError(it8, "Table %d is out of sequence", nTable);
1271  return -1;
1272  }
1273  }
1274 
1275  it8 ->nTable = nTable;
1276 
1277  return (cmsInt32Number) nTable;
1278 }
1279 
1280 
1281 
1282 // Init an empty container
1284 {
1285  cmsIT8* it8;
1287 
1288  it8 = (cmsIT8*) _cmsMallocZero(ContextID, sizeof(cmsIT8));
1289  if (it8 == NULL) return NULL;
1290 
1291  AllocTable(it8);
1292 
1293  it8->MemoryBlock = NULL;
1294  it8->MemorySink = NULL;
1295 
1296  it8 ->nTable = 0;
1297 
1298  it8->ContextID = ContextID;
1299  it8->Allocator.Used = 0;
1300  it8->Allocator.Block = NULL;
1301  it8->Allocator.BlockSize = 0;
1302 
1303  it8->ValidKeywords = NULL;
1304  it8->ValidSampleID = NULL;
1305 
1306  it8 -> sy = SUNDEFINED;
1307  it8 -> ch = ' ';
1308  it8 -> Source = NULL;
1309  it8 -> inum = 0;
1310  it8 -> dnum = 0.0;
1311 
1312  it8->FileStack[0] = (FILECTX*)AllocChunk(it8, sizeof(FILECTX));
1313  it8->IncludeSP = 0;
1314  it8 -> lineno = 1;
1315 
1317  cmsIT8SetSheetType((cmsHANDLE) it8, "CGATS.17");
1318 
1319  // Initialize predefined properties & data
1320 
1321  for (i=0; i < NUMPREDEFINEDPROPS; i++)
1323 
1324  for (i=0; i < NUMPREDEFINEDSAMPLEID; i++)
1326 
1327 
1328  return (cmsHANDLE) it8;
1329 }
1330 
1331 
1333 {
1334  return GetTable((cmsIT8*) hIT8)->SheetType;
1335 }
1336 
1338 {
1339  TABLE* t = GetTable((cmsIT8*) hIT8);
1340 
1341  strncpy(t ->SheetType, Type, MAXSTR-1);
1342  t ->SheetType[MAXSTR-1] = 0;
1343  return TRUE;
1344 }
1345 
1347 {
1348  cmsIT8* it8 = (cmsIT8*) hIT8;
1349 
1350  if (!Val) return FALSE;
1351  if (!*Val) return FALSE;
1352 
1353  return AddToList(it8, &GetTable(it8)->HeaderList, "# ", NULL, Val, WRITE_UNCOOKED) != NULL;
1354 }
1355 
1356 // Sets a property
1357 cmsBool CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* Key, const char *Val)
1358 {
1359  cmsIT8* it8 = (cmsIT8*) hIT8;
1360 
1361  if (!Val) return FALSE;
1362  if (!*Val) return FALSE;
1363 
1364  return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Val, WRITE_STRINGIFY) != NULL;
1365 }
1366 
1368 {
1369  cmsIT8* it8 = (cmsIT8*) hIT8;
1370  char Buffer[1024];
1371 
1372  snprintf(Buffer, 1023, it8->DoubleFormatter, Val);
1373 
1374  return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_UNCOOKED) != NULL;
1375 }
1376 
1378 {
1379  cmsIT8* it8 = (cmsIT8*) hIT8;
1380  char Buffer[1024];
1381 
1382  snprintf(Buffer, 1023, "%u", Val);
1383 
1384  return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_HEXADECIMAL) != NULL;
1385 }
1386 
1388 {
1389  cmsIT8* it8 = (cmsIT8*) hIT8;
1390 
1391  return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Buffer, WRITE_UNCOOKED) != NULL;
1392 }
1393 
1394 cmsBool CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer)
1395 {
1396  cmsIT8* it8 = (cmsIT8*) hIT8;
1397 
1398  return AddToList(it8, &GetTable(it8)->HeaderList, Key, SubKey, Buffer, WRITE_PAIR) != NULL;
1399 }
1400 
1401 // Gets a property
1402 const char* CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* Key)
1403 {
1404  cmsIT8* it8 = (cmsIT8*) hIT8;
1405  KEYVALUE* p;
1406 
1407  if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, NULL, &p))
1408  {
1409  return p -> Value;
1410  }
1411  return NULL;
1412 }
1413 
1414 
1416 {
1417  const char *v = cmsIT8GetProperty(hIT8, cProp);
1418 
1419  if (v == NULL) return 0.0;
1420 
1421  return ParseFloatNumber(v);
1422 }
1423 
1424 const char* CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey)
1425 {
1426  cmsIT8* it8 = (cmsIT8*) hIT8;
1427  KEYVALUE* p;
1428 
1429  if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, SubKey, &p)) {
1430  return p -> Value;
1431  }
1432  return NULL;
1433 }
1434 
1435 // ----------------------------------------------------------------- Datasets
1436 
1437 
1438 static
1440 {
1441  TABLE* t = GetTable(it8);
1442 
1443  if (t -> DataFormat) return; // Already allocated
1444 
1445  t -> nSamples = (int) cmsIT8GetPropertyDbl(it8, "NUMBER_OF_FIELDS");
1446 
1447  if (t -> nSamples <= 0) {
1448 
1449  SynError(it8, "AllocateDataFormat: Unknown NUMBER_OF_FIELDS");
1450  t -> nSamples = 10;
1451  }
1452 
1453  t -> DataFormat = (char**) AllocChunk (it8, ((cmsUInt32Number) t->nSamples + 1) * sizeof(char *));
1454  if (t->DataFormat == NULL) {
1455 
1456  SynError(it8, "AllocateDataFormat: Unable to allocate dataFormat array");
1457  }
1458 
1459 }
1460 
1461 static
1462 const char *GetDataFormat(cmsIT8* it8, int n)
1463 {
1464  TABLE* t = GetTable(it8);
1465 
1466  if (t->DataFormat)
1467  return t->DataFormat[n];
1468 
1469  return NULL;
1470 }
1471 
1472 static
1473 cmsBool SetDataFormat(cmsIT8* it8, int n, const char *label)
1474 {
1475  TABLE* t = GetTable(it8);
1476 
1477  if (!t->DataFormat)
1478  AllocateDataFormat(it8);
1479 
1480  if (n > t -> nSamples) {
1481  SynError(it8, "More than NUMBER_OF_FIELDS fields.");
1482  return FALSE;
1483  }
1484 
1485  if (t->DataFormat) {
1486  t->DataFormat[n] = AllocString(it8, label);
1487  }
1488 
1489  return TRUE;
1490 }
1491 
1492 
1494 {
1495  cmsIT8* it8 = (cmsIT8*)h;
1496  return SetDataFormat(it8, n, Sample);
1497 }
1498 
1499 static
1501 {
1502  TABLE* t = GetTable(it8);
1503 
1504  if (t -> Data) return; // Already allocated
1505 
1506  t-> nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS"));
1507  t-> nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS"));
1508 
1509  if (t -> nSamples < 0 || t->nSamples > 0x7ffe || t->nPatches < 0 || t->nPatches > 0x7ffe)
1510  {
1511  SynError(it8, "AllocateDataSet: too much data");
1512  }
1513  else {
1514  t->Data = (char**)AllocChunk(it8, ((cmsUInt32Number)t->nSamples + 1) * ((cmsUInt32Number)t->nPatches + 1) * sizeof(char*));
1515  if (t->Data == NULL) {
1516 
1517  SynError(it8, "AllocateDataSet: Unable to allocate data array");
1518  }
1519  }
1520 
1521 }
1522 
1523 static
1524 char* GetData(cmsIT8* it8, int nSet, int nField)
1525 {
1526  TABLE* t = GetTable(it8);
1527  int nSamples = t -> nSamples;
1528  int nPatches = t -> nPatches;
1529 
1530  if (nSet >= nPatches || nField >= nSamples)
1531  return NULL;
1532 
1533  if (!t->Data) return NULL;
1534  return t->Data [nSet * nSamples + nField];
1535 }
1536 
1537 static
1538 cmsBool SetData(cmsIT8* it8, int nSet, int nField, const char *Val)
1539 {
1540  TABLE* t = GetTable(it8);
1541 
1542  if (!t->Data)
1543  AllocateDataSet(it8);
1544 
1545  if (!t->Data) return FALSE;
1546 
1547  if (nSet > t -> nPatches || nSet < 0) {
1548 
1549  return SynError(it8, "Patch %d out of range, there are %d patches", nSet, t -> nPatches);
1550  }
1551 
1552  if (nField > t ->nSamples || nField < 0) {
1553  return SynError(it8, "Sample %d out of range, there are %d samples", nField, t ->nSamples);
1554 
1555  }
1556 
1557  t->Data [nSet * t -> nSamples + nField] = AllocString(it8, Val);
1558  return TRUE;
1559 }
1560 
1561 
1562 // --------------------------------------------------------------- File I/O
1563 
1564 
1565 // Writes a string to file
1566 static
1567 void WriteStr(SAVESTREAM* f, const char *str)
1568 {
1570 
1571  if (str == NULL)
1572  str = " ";
1573 
1574  // Length to write
1576  f ->Used += len;
1577 
1578 
1579  if (f ->stream) { // Should I write it to a file?
1580 
1581  if (fwrite(str, 1, len, f->stream) != len) {
1582  cmsSignalError(0, cmsERROR_WRITE, "Write to file error in CGATS parser");
1583  return;
1584  }
1585 
1586  }
1587  else { // Or to a memory block?
1588 
1589  if (f ->Base) { // Am I just counting the bytes?
1590 
1591  if (f ->Used > f ->Max) {
1592 
1593  cmsSignalError(0, cmsERROR_WRITE, "Write to memory overflows in CGATS parser");
1594  return;
1595  }
1596 
1597  memmove(f ->Ptr, str, len);
1598  f->Ptr += len;
1599  }
1600 
1601  }
1602 }
1603 
1604 
1605 // Write formatted
1606 
1607 static
1608 void Writef(SAVESTREAM* f, const char* frm, ...)
1609 {
1610  char Buffer[4096];
1611  va_list args;
1612 
1613  va_start(args, frm);
1614  vsnprintf(Buffer, 4095, frm, args);
1615  Buffer[4095] = 0;
1616  WriteStr(f, Buffer);
1617  va_end(args);
1618 
1619 }
1620 
1621 // Writes full header
1622 static
1624 {
1625  KEYVALUE* p;
1626  TABLE* t = GetTable(it8);
1627 
1628  // Writes the type
1629  WriteStr(fp, t->SheetType);
1630  WriteStr(fp, "\n");
1631 
1632  for (p = t->HeaderList; (p != NULL); p = p->Next)
1633  {
1634  if (*p ->Keyword == '#') {
1635 
1636  char* Pt;
1637 
1638  WriteStr(fp, "#\n# ");
1639  for (Pt = p ->Value; *Pt; Pt++) {
1640 
1641 
1642  Writef(fp, "%c", *Pt);
1643 
1644  if (*Pt == '\n') {
1645  WriteStr(fp, "# ");
1646  }
1647  }
1648 
1649  WriteStr(fp, "\n#\n");
1650  continue;
1651  }
1652 
1653 
1654  if (!IsAvailableOnList(it8-> ValidKeywords, p->Keyword, NULL, NULL)) {
1655 
1656 #ifdef CMS_STRICT_CGATS
1657  WriteStr(fp, "KEYWORD\t\"");
1658  WriteStr(fp, p->Keyword);
1659  WriteStr(fp, "\"\n");
1660 #endif
1661 
1662  AddAvailableProperty(it8, p->Keyword, WRITE_UNCOOKED);
1663  }
1664 
1665  WriteStr(fp, p->Keyword);
1666  if (p->Value) {
1667 
1668  switch (p ->WriteAs) {
1669 
1670  case WRITE_UNCOOKED:
1671  Writef(fp, "\t%s", p ->Value);
1672  break;
1673 
1674  case WRITE_STRINGIFY:
1675  Writef(fp, "\t\"%s\"", p->Value );
1676  break;
1677 
1678  case WRITE_HEXADECIMAL:
1679  Writef(fp, "\t0x%X", atoi(p ->Value));
1680  break;
1681 
1682  case WRITE_BINARY:
1683  Writef(fp, "\t0x%B", atoi(p ->Value));
1684  break;
1685 
1686  case WRITE_PAIR:
1687  Writef(fp, "\t\"%s,%s\"", p->Subkey, p->Value);
1688  break;
1689 
1690  default: SynError(it8, "Unknown write mode %d", p ->WriteAs);
1691  return;
1692  }
1693  }
1694 
1695  WriteStr (fp, "\n");
1696  }
1697 
1698 }
1699 
1700 
1701 // Writes the data format
1702 static
1704 {
1705  int i, nSamples;
1706  TABLE* t = GetTable(it8);
1707 
1708  if (!t -> DataFormat) return;
1709 
1710  WriteStr(fp, "BEGIN_DATA_FORMAT\n");
1711  WriteStr(fp, " ");
1712  nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS"));
1713 
1714  for (i = 0; i < nSamples; i++) {
1715 
1716  WriteStr(fp, t->DataFormat[i]);
1717  WriteStr(fp, ((i == (nSamples-1)) ? "\n" : "\t"));
1718  }
1719 
1720  WriteStr (fp, "END_DATA_FORMAT\n");
1721 }
1722 
1723 
1724 // Writes data array
1725 static
1727 {
1728  int i, j;
1729  TABLE* t = GetTable(it8);
1730 
1731  if (!t->Data) return;
1732 
1733  WriteStr (fp, "BEGIN_DATA\n");
1734 
1735  t->nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS"));
1736 
1737  for (i = 0; i < t-> nPatches; i++) {
1738 
1739  WriteStr(fp, " ");
1740 
1741  for (j = 0; j < t->nSamples; j++) {
1742 
1743  char *ptr = t->Data[i*t->nSamples+j];
1744 
1745  if (ptr == NULL) WriteStr(fp, "\"\"");
1746  else {
1747  // If value contains whitespace, enclose within quote
1748 
1749  if (strchr(ptr, ' ') != NULL) {
1750 
1751  WriteStr(fp, "\"");
1752  WriteStr(fp, ptr);
1753  WriteStr(fp, "\"");
1754  }
1755  else
1756  WriteStr(fp, ptr);
1757  }
1758 
1759  WriteStr(fp, ((j == (t->nSamples-1)) ? "\n" : "\t"));
1760  }
1761  }
1762  WriteStr (fp, "END_DATA\n");
1763 }
1764 
1765 
1766 
1767 // Saves whole file
1768 cmsBool CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName)
1769 {
1770  SAVESTREAM sd;
1772  cmsIT8* it8 = (cmsIT8*) hIT8;
1773 
1774  memset(&sd, 0, sizeof(sd));
1775 
1776  sd.stream = fopen(cFileName, "wt");
1777  if (!sd.stream) return FALSE;
1778 
1779  for (i=0; i < it8 ->TablesCount; i++) {
1780 
1781  cmsIT8SetTable(hIT8, i);
1782  WriteHeader(it8, &sd);
1783  WriteDataFormat(&sd, it8);
1784  WriteData(&sd, it8);
1785  }
1786 
1787  if (fclose(sd.stream) != 0) return FALSE;
1788 
1789  return TRUE;
1790 }
1791 
1792 
1793 // Saves to memory
1794 cmsBool CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded)
1795 {
1796  SAVESTREAM sd;
1798  cmsIT8* it8 = (cmsIT8*) hIT8;
1799 
1800  memset(&sd, 0, sizeof(sd));
1801 
1802  sd.stream = NULL;
1803  sd.Base = (cmsUInt8Number*) MemPtr;
1804  sd.Ptr = sd.Base;
1805 
1806  sd.Used = 0;
1807 
1808  if (sd.Base)
1809  sd.Max = *BytesNeeded; // Write to memory?
1810  else
1811  sd.Max = 0; // Just counting the needed bytes
1812 
1813  for (i=0; i < it8 ->TablesCount; i++) {
1814 
1815  cmsIT8SetTable(hIT8, i);
1816  WriteHeader(it8, &sd);
1817  WriteDataFormat(&sd, it8);
1818  WriteData(&sd, it8);
1819  }
1820 
1821  sd.Used++; // The \0 at the very end
1822 
1823  if (sd.Base)
1824  *sd.Ptr = 0;
1825 
1826  *BytesNeeded = sd.Used;
1827 
1828  return TRUE;
1829 }
1830 
1831 
1832 // -------------------------------------------------------------- Higher level parsing
1833 
1834 static
1836 {
1837  int iField = 0;
1838  TABLE* t = GetTable(it8);
1839 
1840  InSymbol(it8); // Eats "BEGIN_DATA_FORMAT"
1841  CheckEOLN(it8);
1842 
1843  while (it8->sy != SEND_DATA_FORMAT &&
1844  it8->sy != SEOLN &&
1845  it8->sy != SEOF &&
1846  it8->sy != SSYNERROR) {
1847 
1848  if (it8->sy != SIDENT) {
1849 
1850  return SynError(it8, "Sample type expected");
1851  }
1852 
1853  if (!SetDataFormat(it8, iField, it8->id)) return FALSE;
1854  iField++;
1855 
1856  InSymbol(it8);
1857  SkipEOLN(it8);
1858  }
1859 
1860  SkipEOLN(it8);
1861  Skip(it8, SEND_DATA_FORMAT);
1862  SkipEOLN(it8);
1863 
1864  if (iField != t ->nSamples) {
1865  SynError(it8, "Count mismatch. NUMBER_OF_FIELDS was %d, found %d\n", t ->nSamples, iField);
1866 
1867 
1868  }
1869 
1870  return TRUE;
1871 }
1872 
1873 
1874 
1875 static
1877 {
1878  int iField = 0;
1879  int iSet = 0;
1880  char Buffer[256];
1881  TABLE* t = GetTable(it8);
1882 
1883  InSymbol(it8); // Eats "BEGIN_DATA"
1884  CheckEOLN(it8);
1885 
1886  if (!t->Data)
1887  AllocateDataSet(it8);
1888 
1889  while (it8->sy != SEND_DATA && it8->sy != SEOF)
1890  {
1891  if (iField >= t -> nSamples) {
1892  iField = 0;
1893  iSet++;
1894 
1895  }
1896 
1897  if (it8->sy != SEND_DATA && it8->sy != SEOF) {
1898 
1899  if (!GetVal(it8, Buffer, 255, "Sample data expected"))
1900  return FALSE;
1901 
1902  if (!SetData(it8, iSet, iField, Buffer))
1903  return FALSE;
1904 
1905  iField++;
1906 
1907  InSymbol(it8);
1908  SkipEOLN(it8);
1909  }
1910  }
1911 
1912  SkipEOLN(it8);
1913  Skip(it8, SEND_DATA);
1914  SkipEOLN(it8);
1915 
1916  // Check for data completion.
1917 
1918  if ((iSet+1) != t -> nPatches)
1919  return SynError(it8, "Count mismatch. NUMBER_OF_SETS was %d, found %d\n", t ->nPatches, iSet+1);
1920 
1921  return TRUE;
1922 }
1923 
1924 
1925 
1926 
1927 static
1929 {
1930  char VarName[MAXID];
1931  char Buffer[MAXSTR];
1932  KEYVALUE* Key;
1933 
1934  while (it8->sy != SEOF &&
1935  it8->sy != SSYNERROR &&
1936  it8->sy != SBEGIN_DATA_FORMAT &&
1937  it8->sy != SBEGIN_DATA) {
1938 
1939 
1940  switch (it8 -> sy) {
1941 
1942  case SKEYWORD:
1943  InSymbol(it8);
1944  if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE;
1945  if (!AddAvailableProperty(it8, Buffer, WRITE_UNCOOKED)) return FALSE;
1946  InSymbol(it8);
1947  break;
1948 
1949 
1950  case SDATA_FORMAT_ID:
1951  InSymbol(it8);
1952  if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE;
1953  if (!AddAvailableSampleID(it8, Buffer)) return FALSE;
1954  InSymbol(it8);
1955  break;
1956 
1957 
1958  case SIDENT:
1959  strncpy(VarName, it8->id, MAXID - 1);
1960  VarName[MAXID - 1] = 0;
1961 
1962  if (!IsAvailableOnList(it8->ValidKeywords, VarName, NULL, &Key)) {
1963 
1964 #ifdef CMS_STRICT_CGATS
1965  return SynError(it8, "Undefined keyword '%s'", VarName);
1966 #else
1967  Key = AddAvailableProperty(it8, VarName, WRITE_UNCOOKED);
1968  if (Key == NULL) return FALSE;
1969 #endif
1970  }
1971 
1972  InSymbol(it8);
1973  if (!GetVal(it8, Buffer, MAXSTR - 1, "Property data expected")) return FALSE;
1974 
1975  if (Key->WriteAs != WRITE_PAIR) {
1976  AddToList(it8, &GetTable(it8)->HeaderList, VarName, NULL, Buffer,
1977  (it8->sy == SSTRING) ? WRITE_STRINGIFY : WRITE_UNCOOKED);
1978  }
1979  else {
1980  const char *Subkey;
1981  char *Nextkey;
1982  if (it8->sy != SSTRING)
1983  return SynError(it8, "Invalid value '%s' for property '%s'.", Buffer, VarName);
1984 
1985  // chop the string as a list of "subkey, value" pairs, using ';' as a separator
1986  for (Subkey = Buffer; Subkey != NULL; Subkey = Nextkey)
1987  {
1988  char *Value, *temp;
1989 
1990  // identify token pair boundary
1991  Nextkey = (char*)strchr(Subkey, ';');
1992  if (Nextkey)
1993  *Nextkey++ = '\0';
1994 
1995  // for each pair, split the subkey and the value
1996  Value = (char*)strrchr(Subkey, ',');
1997  if (Value == NULL)
1998  return SynError(it8, "Invalid value for property '%s'.", VarName);
1999 
2000  // gobble the spaces before the coma, and the coma itself
2001  temp = Value++;
2002  do *temp-- = '\0'; while (temp >= Subkey && *temp == ' ');
2003 
2004  // gobble any space at the right
2005  temp = Value + strlen(Value) - 1;
2006  while (*temp == ' ') *temp-- = '\0';
2007 
2008  // trim the strings from the left
2009  Subkey += strspn(Subkey, " ");
2010  Value += strspn(Value, " ");
2011 
2012  if (Subkey[0] == 0 || Value[0] == 0)
2013  return SynError(it8, "Invalid value for property '%s'.", VarName);
2014  AddToList(it8, &GetTable(it8)->HeaderList, VarName, Subkey, Value, WRITE_PAIR);
2015  }
2016  }
2017 
2018  InSymbol(it8);
2019  break;
2020 
2021 
2022  case SEOLN: break;
2023 
2024  default:
2025  return SynError(it8, "expected keyword or identifier");
2026  }
2027 
2028  SkipEOLN(it8);
2029  }
2030 
2031  return TRUE;
2032 
2033 }
2034 
2035 
2036 static
2037 void ReadType(cmsIT8* it8, char* SheetTypePtr)
2038 {
2039  cmsInt32Number cnt = 0;
2040 
2041  // First line is a very special case.
2042 
2043  while (isseparator(it8->ch))
2044  NextCh(it8);
2045 
2046  while (it8->ch != '\r' && it8 ->ch != '\n' && it8->ch != '\t' && it8 -> ch != 0) {
2047 
2048  if (cnt++ < MAXSTR)
2049  *SheetTypePtr++= (char) it8 ->ch;
2050  NextCh(it8);
2051  }
2052 
2053  *SheetTypePtr = 0;
2054 }
2055 
2056 
2057 static
2059 {
2060  char* SheetTypePtr = it8 ->Tab[0].SheetType;
2061 
2062  if (nosheet == 0) {
2063  ReadType(it8, SheetTypePtr);
2064  }
2065 
2066  InSymbol(it8);
2067 
2068  SkipEOLN(it8);
2069 
2070  while (it8-> sy != SEOF &&
2071  it8-> sy != SSYNERROR) {
2072 
2073  switch (it8 -> sy) {
2074 
2075  case SBEGIN_DATA_FORMAT:
2076  if (!DataFormatSection(it8)) return FALSE;
2077  break;
2078 
2079  case SBEGIN_DATA:
2080 
2081  if (!DataSection(it8)) return FALSE;
2082 
2083  if (it8 -> sy != SEOF) {
2084 
2085  AllocTable(it8);
2086  it8 ->nTable = it8 ->TablesCount - 1;
2087 
2088  // Read sheet type if present. We only support identifier and string.
2089  // <ident> <eoln> is a type string
2090  // anything else, is not a type string
2091  if (nosheet == 0) {
2092 
2093  if (it8 ->sy == SIDENT) {
2094 
2095  // May be a type sheet or may be a prop value statement. We cannot use insymbol in
2096  // this special case...
2097  while (isseparator(it8->ch))
2098  NextCh(it8);
2099 
2100  // If a newline is found, then this is a type string
2101  if (it8 ->ch == '\n' || it8->ch == '\r') {
2102 
2103  cmsIT8SetSheetType(it8, it8 ->id);
2104  InSymbol(it8);
2105  }
2106  else
2107  {
2108  // It is not. Just continue
2109  cmsIT8SetSheetType(it8, "");
2110  }
2111  }
2112  else
2113  // Validate quoted strings
2114  if (it8 ->sy == SSTRING) {
2115  cmsIT8SetSheetType(it8, it8 ->str);
2116  InSymbol(it8);
2117  }
2118  }
2119 
2120  }
2121  break;
2122 
2123  case SEOLN:
2124  SkipEOLN(it8);
2125  break;
2126 
2127  default:
2128  if (!HeaderSection(it8)) return FALSE;
2129  }
2130 
2131  }
2132 
2133  return (it8 -> sy != SSYNERROR);
2134 }
2135 
2136 
2137 
2138 // Init useful pointers
2139 
2140 static
2142 {
2143  int idField, i;
2144  char* Fld;
2146  cmsUInt32Number nOldTable = it8 ->nTable;
2147 
2148  for (j=0; j < it8 ->TablesCount; j++) {
2149 
2150  TABLE* t = it8 ->Tab + j;
2151 
2152  t -> SampleID = 0;
2153  it8 ->nTable = j;
2154 
2155  for (idField = 0; idField < t -> nSamples; idField++)
2156  {
2157  if (t ->DataFormat == NULL){
2158  SynError(it8, "Undefined DATA_FORMAT");
2159  return;
2160  }
2161 
2162  Fld = t->DataFormat[idField];
2163  if (!Fld) continue;
2164 
2165 
2166  if (cmsstrcasecmp(Fld, "SAMPLE_ID") == 0) {
2167 
2168  t -> SampleID = idField;
2169  }
2170 
2171  // "LABEL" is an extension. It keeps references to forward tables
2172 
2173  if ((cmsstrcasecmp(Fld, "LABEL") == 0) || Fld[0] == '$') {
2174 
2175  // Search for table references...
2176  for (i = 0; i < t->nPatches; i++) {
2177 
2178  char* Label = GetData(it8, i, idField);
2179 
2180  if (Label) {
2181 
2183 
2184  // This is the label, search for a table containing
2185  // this property
2186 
2187  for (k = 0; k < it8->TablesCount; k++) {
2188 
2189  TABLE* Table = it8->Tab + k;
2190  KEYVALUE* p;
2191 
2192  if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) {
2193 
2194  // Available, keep type and table
2195  char Buffer[256];
2196 
2197  char* Type = p->Value;
2198  int nTable = (int)k;
2199 
2200  snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type);
2201 
2202  SetData(it8, i, idField, Buffer);
2203  }
2204  }
2205 
2206 
2207  }
2208 
2209  }
2210 
2211 
2212  }
2213 
2214  }
2215  }
2216 
2217  it8 ->nTable = nOldTable;
2218 }
2219 
2220 // Try to infere if the file is a CGATS/IT8 file at all. Read first line
2221 // that should be something like some printable characters plus a \n
2222 // returns 0 if this is not like a CGATS, or an integer otherwise. This integer is the number of words in first line?
2223 static
2225 {
2226  int words = 1, space = 0, quot = 0;
2228 
2229  if (n < 10) return 0; // Too small
2230 
2231  if (n > 132)
2232  n = 132;
2233 
2234  for (i = 1; i < n; i++) {
2235 
2236  switch(Buffer[i])
2237  {
2238  case '\n':
2239  case '\r':
2240  return ((quot == 1) || (words > 2)) ? 0 : words;
2241  case '\t':
2242  case ' ':
2243  if(!quot && !space)
2244  space = 1;
2245  break;
2246  case '\"':
2247  quot = !quot;
2248  break;
2249  default:
2250  if (Buffer[i] < 32) return 0;
2251  if (Buffer[i] > 127) return 0;
2252  words += space;
2253  space = 0;
2254  break;
2255  }
2256  }
2257 
2258  return 0;
2259 }
2260 
2261 
2262 static
2264 {
2265  FILE *fp;
2266  cmsUInt32Number Size;
2267  cmsUInt8Number Ptr[133];
2268 
2269  fp = fopen(FileName, "rt");
2270  if (!fp) {
2271  cmsSignalError(0, cmsERROR_FILE, "File '%s' not found", FileName);
2272  return FALSE;
2273  }
2274 
2275  Size = (cmsUInt32Number) fread(Ptr, 1, 132, fp);
2276 
2277  if (fclose(fp) != 0)
2278  return FALSE;
2279 
2280  Ptr[Size] = '\0';
2281 
2282  return IsMyBlock(Ptr, Size);
2283 }
2284 
2285 // ---------------------------------------------------------- Exported routines
2286 
2287 
2289 {
2290  cmsHANDLE hIT8;
2291  cmsIT8* it8;
2292  int type;
2293 
2294  _cmsAssert(Ptr != NULL);
2295  _cmsAssert(len != 0);
2296 
2297  type = IsMyBlock((const cmsUInt8Number*)Ptr, len);
2298  if (type == 0) return NULL;
2299 
2300  hIT8 = cmsIT8Alloc(ContextID);
2301  if (!hIT8) return NULL;
2302 
2303  it8 = (cmsIT8*) hIT8;
2304  it8 ->MemoryBlock = (char*) _cmsMalloc(ContextID, len + 1);
2305  if (it8->MemoryBlock == NULL)
2306  {
2307  cmsIT8Free(hIT8);
2308  return FALSE;
2309  }
2310 
2311  strncpy(it8 ->MemoryBlock, (const char*) Ptr, len);
2312  it8 ->MemoryBlock[len] = 0;
2313 
2314  strncpy(it8->FileStack[0]->FileName, "", cmsMAX_PATH-1);
2315  it8-> Source = it8 -> MemoryBlock;
2316 
2317  if (!ParseIT8(it8, type-1)) {
2318 
2319  cmsIT8Free(hIT8);
2320  return FALSE;
2321  }
2322 
2323  CookPointers(it8);
2324  it8 ->nTable = 0;
2325 
2326  _cmsFree(ContextID, it8->MemoryBlock);
2327  it8 -> MemoryBlock = NULL;
2328 
2329  return hIT8;
2330 
2331 
2332 }
2333 
2334 
2335 cmsHANDLE CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName)
2336 {
2337 
2338  cmsHANDLE hIT8;
2339  cmsIT8* it8;
2340  int type;
2341 
2342  _cmsAssert(cFileName != NULL);
2343 
2344  type = IsMyFile(cFileName);
2345  if (type == 0) return NULL;
2346 
2347  hIT8 = cmsIT8Alloc(ContextID);
2348  it8 = (cmsIT8*) hIT8;
2349  if (!hIT8) return NULL;
2350 
2351 
2352  it8 ->FileStack[0]->Stream = fopen(cFileName, "rt");
2353 
2354  if (!it8 ->FileStack[0]->Stream) {
2355  cmsIT8Free(hIT8);
2356  return NULL;
2357  }
2358 
2359 
2360  strncpy(it8->FileStack[0]->FileName, cFileName, cmsMAX_PATH-1);
2361  it8->FileStack[0]->FileName[cmsMAX_PATH-1] = 0;
2362 
2363  if (!ParseIT8(it8, type-1)) {
2364 
2365  fclose(it8 ->FileStack[0]->Stream);
2366  cmsIT8Free(hIT8);
2367  return NULL;
2368  }
2369 
2370  CookPointers(it8);
2371  it8 ->nTable = 0;
2372 
2373  if (fclose(it8 ->FileStack[0]->Stream)!= 0) {
2374  cmsIT8Free(hIT8);
2375  return NULL;
2376  }
2377 
2378  return hIT8;
2379 
2380 }
2381 
2382 int CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames)
2383 {
2384  cmsIT8* it8 = (cmsIT8*) hIT8;
2385  TABLE* t;
2386 
2387  _cmsAssert(hIT8 != NULL);
2388 
2389  t = GetTable(it8);
2390 
2391  if (SampleNames)
2392  *SampleNames = t -> DataFormat;
2393  return t -> nSamples;
2394 }
2395 
2396 
2398 {
2399  cmsIT8* it8 = (cmsIT8*) hIT8;
2400  KEYVALUE* p;
2402  char **Props;
2403  TABLE* t;
2404 
2405  _cmsAssert(hIT8 != NULL);
2406 
2407  t = GetTable(it8);
2408 
2409  // Pass#1 - count properties
2410 
2411  n = 0;
2412  for (p = t -> HeaderList; p != NULL; p = p->Next) {
2413  n++;
2414  }
2415 
2416 
2417  Props = (char **) AllocChunk(it8, sizeof(char *) * n);
2418 
2419  // Pass#2 - Fill pointers
2420  n = 0;
2421  for (p = t -> HeaderList; p != NULL; p = p->Next) {
2422  Props[n++] = p -> Keyword;
2423  }
2424 
2425  *PropertyNames = Props;
2426  return n;
2427 }
2428 
2429 cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames)
2430 {
2431  cmsIT8* it8 = (cmsIT8*) hIT8;
2432  KEYVALUE *p, *tmp;
2434  const char **Props;
2435  TABLE* t;
2436 
2437  _cmsAssert(hIT8 != NULL);
2438 
2439 
2440  t = GetTable(it8);
2441 
2442  if(!IsAvailableOnList(t->HeaderList, cProp, NULL, &p)) {
2443  *SubpropertyNames = 0;
2444  return 0;
2445  }
2446 
2447  // Pass#1 - count properties
2448 
2449  n = 0;
2450  for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) {
2451  if(tmp->Subkey != NULL)
2452  n++;
2453  }
2454 
2455 
2456  Props = (const char **) AllocChunk(it8, sizeof(char *) * n);
2457 
2458  // Pass#2 - Fill pointers
2459  n = 0;
2460  for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) {
2461  if(tmp->Subkey != NULL)
2462  Props[n++] = p ->Subkey;
2463  }
2464 
2465  *SubpropertyNames = Props;
2466  return n;
2467 }
2468 
2469 static
2470 int LocatePatch(cmsIT8* it8, const char* cPatch)
2471 {
2472  int i;
2473  const char *data;
2474  TABLE* t = GetTable(it8);
2475 
2476  for (i=0; i < t-> nPatches; i++) {
2477 
2478  data = GetData(it8, i, t->SampleID);
2479 
2480  if (data != NULL) {
2481 
2482  if (cmsstrcasecmp(data, cPatch) == 0)
2483  return i;
2484  }
2485  }
2486 
2487  // SynError(it8, "Couldn't find patch '%s'\n", cPatch);
2488  return -1;
2489 }
2490 
2491 
2492 static
2494 {
2495  int i;
2496  const char *data;
2497  TABLE* t = GetTable(it8);
2498 
2499  for (i=0; i < t-> nPatches; i++) {
2500 
2501  data = GetData(it8, i, t->SampleID);
2502 
2503  if (data == NULL)
2504  return i;
2505 
2506  }
2507 
2508  return -1;
2509 }
2510 
2511 static
2512 int LocateSample(cmsIT8* it8, const char* cSample)
2513 {
2514  int i;
2515  const char *fld;
2516  TABLE* t = GetTable(it8);
2517 
2518  for (i=0; i < t->nSamples; i++) {
2519 
2520  fld = GetDataFormat(it8, i);
2521  if (fld != NULL) {
2522  if (cmsstrcasecmp(fld, cSample) == 0)
2523  return i;
2524  }
2525  }
2526 
2527  return -1;
2528 
2529 }
2530 
2531 
2532 int CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample)
2533 {
2534  cmsIT8* it8 = (cmsIT8*) hIT8;
2535 
2536  _cmsAssert(hIT8 != NULL);
2537 
2538  return LocateSample(it8, cSample);
2539 }
2540 
2541 
2542 
2543 const char* CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col)
2544 {
2545  cmsIT8* it8 = (cmsIT8*) hIT8;
2546 
2547  _cmsAssert(hIT8 != NULL);
2548 
2549  return GetData(it8, row, col);
2550 }
2551 
2552 
2554 {
2555  const char* Buffer;
2556 
2557  Buffer = cmsIT8GetDataRowCol(hIT8, row, col);
2558 
2559  if (Buffer == NULL) return 0.0;
2560 
2561  return ParseFloatNumber(Buffer);
2562 }
2563 
2564 
2566 {
2567  cmsIT8* it8 = (cmsIT8*) hIT8;
2568 
2569  _cmsAssert(hIT8 != NULL);
2570 
2571  return SetData(it8, row, col, Val);
2572 }
2573 
2574 
2576 {
2577  cmsIT8* it8 = (cmsIT8*) hIT8;
2578  char Buff[256];
2579 
2580  _cmsAssert(hIT8 != NULL);
2581 
2582  snprintf(Buff, 255, it8->DoubleFormatter, Val);
2583 
2584  return SetData(it8, row, col, Buff);
2585 }
2586 
2587 
2588 
2589 const char* CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample)
2590 {
2591  cmsIT8* it8 = (cmsIT8*) hIT8;
2592  int iField, iSet;
2593 
2594  _cmsAssert(hIT8 != NULL);
2595 
2596  iField = LocateSample(it8, cSample);
2597  if (iField < 0) {
2598  return NULL;
2599  }
2600 
2601  iSet = LocatePatch(it8, cPatch);
2602  if (iSet < 0) {
2603  return NULL;
2604  }
2605 
2606  return GetData(it8, iSet, iField);
2607 }
2608 
2609 
2610 cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE it8, const char* cPatch, const char* cSample)
2611 {
2612  const char* Buffer;
2613 
2614  Buffer = cmsIT8GetData(it8, cPatch, cSample);
2615 
2616  return ParseFloatNumber(Buffer);
2617 }
2618 
2619 
2620 
2621 cmsBool CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample, const char *Val)
2622 {
2623  cmsIT8* it8 = (cmsIT8*) hIT8;
2624  int iField, iSet;
2625  TABLE* t;
2626 
2627  _cmsAssert(hIT8 != NULL);
2628 
2629  t = GetTable(it8);
2630 
2631  iField = LocateSample(it8, cSample);
2632 
2633  if (iField < 0)
2634  return FALSE;
2635 
2636  if (t-> nPatches == 0) {
2637 
2638  AllocateDataFormat(it8);
2639  AllocateDataSet(it8);
2640  CookPointers(it8);
2641  }
2642 
2643  if (cmsstrcasecmp(cSample, "SAMPLE_ID") == 0) {
2644 
2645  iSet = LocateEmptyPatch(it8);
2646  if (iSet < 0) {
2647  return SynError(it8, "Couldn't add more patches '%s'\n", cPatch);
2648  }
2649 
2650  iField = t -> SampleID;
2651  }
2652  else {
2653  iSet = LocatePatch(it8, cPatch);
2654  if (iSet < 0) {
2655  return FALSE;
2656  }
2657  }
2658 
2659  return SetData(it8, iSet, iField, Val);
2660 }
2661 
2662 
2663 cmsBool CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch,
2664  const char* cSample,
2666 {
2667  cmsIT8* it8 = (cmsIT8*) hIT8;
2668  char Buff[256];
2669 
2670  _cmsAssert(hIT8 != NULL);
2671 
2672  snprintf(Buff, 255, it8->DoubleFormatter, Val);
2673  return cmsIT8SetData(hIT8, cPatch, cSample, Buff);
2674 }
2675 
2676 // Buffer should get MAXSTR at least
2677 
2678 const char* CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer)
2679 {
2680  cmsIT8* it8 = (cmsIT8*) hIT8;
2681  TABLE* t;
2682  char* Data;
2683 
2684  _cmsAssert(hIT8 != NULL);
2685 
2686  t = GetTable(it8);
2687  Data = GetData(it8, nPatch, t->SampleID);
2688 
2689  if (!Data) return NULL;
2690  if (!buffer) return Data;
2691 
2692  strncpy(buffer, Data, MAXSTR-1);
2693  buffer[MAXSTR-1] = 0;
2694  return buffer;
2695 }
2696 
2697 int CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch)
2698 {
2699  _cmsAssert(hIT8 != NULL);
2700 
2701  return LocatePatch((cmsIT8*)hIT8, cPatch);
2702 }
2703 
2705 {
2706  cmsIT8* it8 = (cmsIT8*) hIT8;
2707 
2708  _cmsAssert(hIT8 != NULL);
2709 
2710  return it8 ->TablesCount;
2711 }
2712 
2713 // This handles the "LABEL" extension.
2714 // Label, nTable, Type
2715 
2716 int CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType)
2717 {
2718  const char* cLabelFld;
2719  char Type[256], Label[256];
2720  cmsUInt32Number nTable;
2721 
2722  _cmsAssert(hIT8 != NULL);
2723 
2724  if (cField != NULL && *cField == 0)
2725  cField = "LABEL";
2726 
2727  if (cField == NULL)
2728  cField = "LABEL";
2729 
2730  cLabelFld = cmsIT8GetData(hIT8, cSet, cField);
2731  if (!cLabelFld) return -1;
2732 
2733  if (sscanf(cLabelFld, "%255s %u %255s", Label, &nTable, Type) != 3)
2734  return -1;
2735 
2736  if (ExpectedType != NULL && *ExpectedType == 0)
2737  ExpectedType = NULL;
2738 
2739  if (ExpectedType) {
2740 
2741  if (cmsstrcasecmp(Type, ExpectedType) != 0) return -1;
2742  }
2743 
2744  return cmsIT8SetTable(hIT8, nTable);
2745 }
2746 
2747 
2749 {
2750  cmsIT8* it8 = (cmsIT8*) hIT8;
2751  int pos;
2752 
2753  _cmsAssert(hIT8 != NULL);
2754 
2755  pos = LocateSample(it8, cSample);
2756  if(pos == -1)
2757  return FALSE;
2758 
2759  it8->Tab[it8->nTable].SampleID = pos;
2760  return TRUE;
2761 }
2762 
2763 
2764 void CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter)
2765 {
2766  cmsIT8* it8 = (cmsIT8*) hIT8;
2767 
2768  _cmsAssert(hIT8 != NULL);
2769 
2770  if (Formatter == NULL)
2772  else
2773  strncpy(it8->DoubleFormatter, Formatter, sizeof(it8->DoubleFormatter));
2774 
2775  it8 ->DoubleFormatter[sizeof(it8 ->DoubleFormatter)-1] = 0;
2776 }
2777 
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
double __cdecl pow(double _X, double _Y)
static int lineno
Definition: aftopl.c:19
#define type(a)
Definition: aptex-macros.h:171
#define tail
Definition: aptex-macros.h:514
size_t __cdecl strspn(char const *_Str, char const *_Control)
Definition: Stream.h:67
static const char * NoMeta(const char *str)
Definition: cmscgats.c:445
int cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch)
Definition: cmscgats.c:2697
cmsHANDLE cmsIT8LoadFromMem(cmsContext ContextID, const void *Ptr, cmsUInt32Number len)
Definition: cmscgats.c:2288
cmsFloat64Number cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char *cProp)
Definition: cmscgats.c:1415
static void Skip(cmsIT8 *it8, SYMBOL sy)
Definition: cmscgats.c:961
#define MAXID
Definition: cmscgats.c:33
static cmsBool Check(cmsIT8 *it8, SYMBOL sy, const char *Err)
Definition: cmscgats.c:474
void cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char *Formatter)
Definition: cmscgats.c:2764
#define DEFAULT_DBL_FORMAT
Definition: cmscgats.c:38
static void * AllocBigBlock(cmsIT8 *it8, cmsUInt32Number size)
Definition: cmscgats.c:1052
static void InSymbol(cmsIT8 *it8)
Definition: cmscgats.c:684
static PROPERTY PredefinedProperties[]
Definition: cmscgats.c:226
const char * cmsIT8GetData(cmsHANDLE hIT8, const char *cPatch, const char *cSample)
Definition: cmscgats.c:2589
static void CookPointers(cmsIT8 *it8)
Definition: cmscgats.c:2141
static int LocateSample(cmsIT8 *it8, const char *cSample)
Definition: cmscgats.c:2512
static cmsBool DataSection(cmsIT8 *it8)
Definition: cmscgats.c:1876
static KEYVALUE * AddAvailableSampleID(cmsIT8 *it8, const char *Key)
Definition: cmscgats.c:1238
static SYMBOL BinSrchKey(const char *id)
Definition: cmscgats.c:509
cmsUInt32Number cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames)
Definition: cmscgats.c:2397
static char * AllocString(cmsIT8 *it8, const char *str)
Definition: cmscgats.c:1110
static void * AllocChunk(cmsIT8 *it8, cmsUInt32Number size)
Definition: cmscgats.c:1078
static char * GetData(cmsIT8 *it8, int nSet, int nField)
Definition: cmscgats.c:1524
static cmsBool ParseIT8(cmsIT8 *it8, cmsBool nosheet)
Definition: cmscgats.c:2058
static int LocatePatch(cmsIT8 *it8, const char *cPatch)
Definition: cmscgats.c:2470
SYMBOL
Definition: cmscgats.c:49
@ SDNUM
Definition: cmscgats.c:53
@ SIDENT
Definition: cmscgats.c:54
@ SEOF
Definition: cmscgats.c:58
@ SUNDEFINED
Definition: cmscgats.c:51
@ SKEYWORD
Definition: cmscgats.c:67
@ SEOLN
Definition: cmscgats.c:57
@ SBEGIN_DATA
Definition: cmscgats.c:63
@ SDATA_FORMAT_ID
Definition: cmscgats.c:68
@ SSYNERROR
Definition: cmscgats.c:59
@ SBEGIN_DATA_FORMAT
Definition: cmscgats.c:64
@ SEND_DATA_FORMAT
Definition: cmscgats.c:66
@ SSTRING
Definition: cmscgats.c:55
@ SEND_DATA
Definition: cmscgats.c:65
@ SINUM
Definition: cmscgats.c:52
@ SCOMMENT
Definition: cmscgats.c:56
@ SINCLUDE
Definition: cmscgats.c:69
cmsBool cmsIT8SetDataDbl(cmsHANDLE hIT8, const char *cPatch, const char *cSample, cmsFloat64Number Val)
Definition: cmscgats.c:2663
static cmsBool DataFormatSection(cmsIT8 *it8)
Definition: cmscgats.c:1835
static void WriteHeader(cmsIT8 *it8, SAVESTREAM *fp)
Definition: cmscgats.c:1623
#define MAXTABLES
Definition: cmscgats.c:35
int cmsIT8FindDataFormat(cmsHANDLE hIT8, const char *cSample)
Definition: cmscgats.c:2532
static cmsBool BuildAbsolutePath(const char *relPath, const char *basePath, char *buffer, cmsUInt32Number MaxLen)
Definition: cmscgats.c:413
#define DIR_CHAR
Definition: cmscgats.c:44
cmsBool cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col, cmsFloat64Number Val)
Definition: cmscgats.c:2575
cmsHANDLE cmsIT8Alloc(cmsContext ContextID)
Definition: cmscgats.c:1283
#define MAXINCLUDE
Definition: cmscgats.c:36
#define MAXSTR
Definition: cmscgats.c:34
static void WriteDataFormat(SAVESTREAM *fp, cmsIT8 *it8)
Definition: cmscgats.c:1703
static void Writef(SAVESTREAM *f, const char *frm,...)
Definition: cmscgats.c:1608
static void AllocTable(cmsIT8 *it8)
Definition: cmscgats.c:1245
#define NUMPREDEFINEDSAMPLEID
Definition: cmscgats.c:352
cmsUInt32Number cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char *cProp, const char ***SubpropertyNames)
Definition: cmscgats.c:2429
static void ReadType(cmsIT8 *it8, char *SheetTypePtr)
Definition: cmscgats.c:2037
const char * cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char *Key, const char *SubKey)
Definition: cmscgats.c:1424
static cmsBool SetDataFormat(cmsIT8 *it8, int n, const char *label)
Definition: cmscgats.c:1473
static cmsBool isidchar(int c)
Definition: cmscgats.c:373
void cmsIT8Free(cmsHANDLE hIT8)
Definition: cmscgats.c:1023
WRITEMODE
Definition: cmscgats.c:75
@ WRITE_UNCOOKED
Definition: cmscgats.c:77
@ WRITE_STRINGIFY
Definition: cmscgats.c:78
@ WRITE_PAIR
Definition: cmscgats.c:81
@ WRITE_BINARY
Definition: cmscgats.c:80
@ WRITE_HEXADECIMAL
Definition: cmscgats.c:79
static void NextCh(cmsIT8 *it8)
Definition: cmscgats.c:483
cmsBool cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char *Key, const char *Val)
Definition: cmscgats.c:1357
const char * cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col)
Definition: cmscgats.c:2543
struct _Table TABLE
int cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char *cSet, const char *cField, const char *ExpectedType)
Definition: cmscgats.c:2716
static void SkipEOLN(cmsIT8 *it8)
Definition: cmscgats.c:970
cmsFloat64Number cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col)
Definition: cmscgats.c:2553
static void AllocateDataFormat(cmsIT8 *it8)
Definition: cmscgats.c:1439
const char * cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char *buffer)
Definition: cmscgats.c:2678
cmsBool cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char *cSample)
Definition: cmscgats.c:2748
const char * cmsIT8GetProperty(cmsHANDLE hIT8, const char *Key)
Definition: cmscgats.c:1402
static cmsBool GetVal(cmsIT8 *it8, char *Buffer, cmsUInt32Number max, const char *ErrorTitle)
Definition: cmscgats.c:980
cmsBool cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char *Key, const char *SubKey, const char *Buffer)
Definition: cmscgats.c:1394
static cmsBool IsMyFile(const char *FileName)
Definition: cmscgats.c:2263
static KEYVALUE * AddAvailableProperty(cmsIT8 *it8, const char *Key, WRITEMODE as)
Definition: cmscgats.c:1231
static const KEYWORD TabKeys[]
Definition: cmscgats.c:203
#define NUMKEYS
Definition: cmscgats.c:216
static cmsBool isseparator(int c)
Definition: cmscgats.c:359
static void WriteStr(SAVESTREAM *f, const char *str)
Definition: cmscgats.c:1567
static void WriteData(SAVESTREAM *fp, cmsIT8 *it8)
Definition: cmscgats.c:1726
static const char * GetDataFormat(cmsIT8 *it8, int n)
Definition: cmscgats.c:1462
static KEYVALUE * AddToList(cmsIT8 *it8, KEYVALUE **Head, const char *Key, const char *Subkey, const char *xValue, WRITEMODE WriteAs)
Definition: cmscgats.c:1163
static int LocateEmptyPatch(cmsIT8 *it8)
Definition: cmscgats.c:2493
cmsHANDLE cmsIT8LoadFromFile(cmsContext ContextID, const char *cFileName)
Definition: cmscgats.c:2335
struct _KeyVal KEYVALUE
static cmsBool ismiddle(int c)
Definition: cmscgats.c:366
static cmsBool isfirstidchar(int c)
Definition: cmscgats.c:380
int cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames)
Definition: cmscgats.c:2382
struct _OwnedMem OWNEDMEM
cmsBool cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col, const char *Val)
Definition: cmscgats.c:2565
cmsBool cmsIT8SetSheetType(cmsHANDLE hIT8, const char *Type)
Definition: cmscgats.c:1337
cmsBool cmsIT8SaveToFile(cmsHANDLE hIT8, const char *cFileName)
Definition: cmscgats.c:1768
static cmsFloat64Number xpow10(int n)
Definition: cmscgats.c:530
const char * cmsIT8GetSheetType(cmsHANDLE hIT8)
Definition: cmscgats.c:1332
struct _FileContext FILECTX
static int IsMyBlock(const cmsUInt8Number *Buffer, cmsUInt32Number n)
Definition: cmscgats.c:2224
cmsBool cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number *BytesNeeded)
Definition: cmscgats.c:1794
cmsUInt32Number cmsIT8TableCount(cmsHANDLE hIT8)
Definition: cmscgats.c:2704
cmsInt32Number cmsIT8SetTable(cmsHANDLE IT8, cmsUInt32Number nTable)
Definition: cmscgats.c:1259
cmsBool cmsIT8SetData(cmsHANDLE hIT8, const char *cPatch, const char *cSample, const char *Val)
Definition: cmscgats.c:2621
static cmsBool SetData(cmsIT8 *it8, int nSet, int nField, const char *Val)
Definition: cmscgats.c:1538
static cmsBool IsAvailableOnList(KEYVALUE *p, const char *Key, const char *Subkey, KEYVALUE **LastPtr)
Definition: cmscgats.c:1125
cmsBool cmsIT8SetDataFormat(cmsHANDLE h, int n, const char *Sample)
Definition: cmscgats.c:1493
static cmsFloat64Number ParseFloatNumber(const char *Buffer)
Definition: cmscgats.c:604
static TABLE * GetTable(cmsIT8 *it8)
Definition: cmscgats.c:1008
struct _SubAllocator SUBALLOCATOR
static cmsBool HeaderSection(cmsIT8 *it8)
Definition: cmscgats.c:1928
cmsBool cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char *cProp, cmsUInt32Number Val)
Definition: cmscgats.c:1377
static const char * PredefinedSampleID[]
Definition: cmscgats.c:304
cmsBool cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char *cProp, cmsFloat64Number Val)
Definition: cmscgats.c:1367
cmsBool cmsIT8SetComment(cmsHANDLE hIT8, const char *Val)
Definition: cmscgats.c:1346
#define NUMPREDEFINEDPROPS
Definition: cmscgats.c:300
static cmsBool SynError(cmsIT8 *it8, const char *Txt,...)
Definition: cmscgats.c:455
static void ReadReal(cmsIT8 *it8, cmsInt32Number inum)
Definition: cmscgats.c:538
static cmsBool isabsolutepath(const char *path)
Definition: cmscgats.c:387
cmsBool cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char *Key, const char *Buffer)
Definition: cmscgats.c:1387
static void AllocateDataSet(cmsIT8 *it8)
Definition: cmscgats.c:1500
static cmsBool CheckEOLN(cmsIT8 *it8)
Definition: cmscgats.c:949
cmsFloat64Number cmsIT8GetDataDbl(cmsHANDLE it8, const char *cPatch, const char *cSample)
Definition: cmscgats.c:2610
void _cmsFree(cmsContext ContextID, void *Ptr)
Definition: cmserr.c:292
int cmsstrcasecmp(const char *s1, const char *s2)
Definition: cmserr.c:39
void cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText,...)
Definition: cmserr.c:509
void * _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size)
Definition: cmserr.c:271
void * _cmsMalloc(cmsContext ContextID, cmsUInt32Number size)
Definition: cmserr.c:264
#define n
Definition: t4ht.c:1290
@ FALSE
Definition: dd.h:101
@ TRUE
Definition: dd.h:102
#define Free(x)
Definition: dd.h:135
#define strrchr
Definition: detex.c:67
T Max(T a, T b)
Definition: drvpdf.cpp:96
int v
Definition: dviconv.c:10
int h
Definition: dviconv.c:9
#define fopen
Definition: xxstdio.h:21
#define fread
Definition: xxstdio.h:25
#define fgetc
Definition: xxstdio.h:26
char * strncpy()
int sscanf()
char * strcpy()
char * temp
Definition: dvidvi.c:137
struct rect data
Definition: dvipdfm.c:64
char * digit
Definition: io.c:63
char Buff[512]
Definition: fmtutil.c:74
mpz_t * f
Definition: gen-fib.c:34
#define t
Definition: afcover.h:96
SimBuffer::B Buffer
Definition: gensi.hpp:669
int sgn(const __gmp_expr< T, U > &expr)
Definition: gmpxx.h:3350
#define c(n)
Definition: gpos-common.c:150
#define strchr
Definition: gsftopk.c:59
#define memmove(d, s, n)
Definition: gsftopk.c:65
int col
Definition: gsftopk.c:443
static uint16_t *FN() Head(void *extra)
#define PROPERTY
Definition: hbf.c:141
#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
int atoi(const char *)
#define fclose
Definition: debug.h:100
Code related to b fwrite(a, sizeof(char), b, stdout) @d C_printf(c
char args[100]
Definition: fixwrites.c:7
char * as
Definition: fixwrites.c:8
#define vsnprintf
Definition: snprintf.c:40
#define isdigit(c)
Definition: snprintf.c:177
#define snprintf
Definition: snprintf.c:41
int cmsBool
Definition: lcms2.h:174
#define cmsERROR_WRITE
Definition: lcms2.h:1072
#define CMSEXPORT
Definition: lcms2.h:252
void * cmsHANDLE
Definition: lcms2.h:660
unsigned int cmsUInt32Number
Definition: lcms2.h:120
#define cmsMAX_PATH
Definition: lcms2.h:266
#define cmsERROR_FILE
Definition: lcms2.h:1066
#define CMSREGISTER
Definition: lcms2.h:158
#define cmsERROR_CORRUPTION_DETECTED
Definition: lcms2.h:1077
double cmsFloat64Number
Definition: lcms2.h:99
unsigned char cmsUInt8Number
Definition: lcms2.h:90
#define _cmsAssert(a)
#define _cmsALIGNMEM(x)
const int * pos
Definition: combiners.h:905
int FileName
Definition: mktexpk.c:60
HBUINT16 Value
float x
Definition: cordic.py:15
int k
Definition: otp-parser.c:70
#define max(a, b)
Definition: pbmto4425.c:11
#define res(length)
Definition: picttoppm.c:287
#define sign(x)
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
#define fp
static int cnt
Definition: pkout.c:166
int Err
Definition: pnmtotiffcmyk.c:84
static int32_t last
Definition: ppagelist.c:29
static int size
Definition: ppmlabel.c:24
int r
Definition: ppmqvga.c:68
type_C toupper(type_C)
bstring c int memset(void *s, int c, int length)
static int row
Definition: ps2pk.c:587
char const * words[127]
Definition: ps_tiny.c:68
struct stream_s stream
Definition: pts_fax.h:93
#define isalpha(ch)
Definition: utype.h:82
#define isalnum(ch)
Definition: utype.h:84
#define KEYWORD
Definition: scanst.h:33
#define str(s)
Definition: sh6.c:399
ShellFileEnvironment e
Definition: sh6.c:388
char * Ptr
Definition: TECkit_Common.h:41
SYMBOL sy
Definition: cmscgats.c:198
const char * id
Definition: cmscgats.c:197
const char * id
Definition: cmscgats.c:222
WRITEMODE as
Definition: cmscgats.c:223
cmsUInt32Number Max
Definition: cmscgats.c:186
FILE * stream
Definition: cmscgats.c:181
cmsUInt8Number * Base
Definition: cmscgats.c:183
cmsUInt32Number Used
Definition: cmscgats.c:185
cmsUInt8Number * Ptr
Definition: cmscgats.c:184
Definition: lobject.h:497
FILE * Stream
Definition: cmscgats.c:133
char FileName[256]
Definition: cmscgats.c:132
char * Subkey
Definition: cmscgats.c:91
struct _KeyVal * Next
Definition: cmscgats.c:88
char * Keyword
Definition: cmscgats.c:89
WRITEMODE WriteAs
Definition: cmscgats.c:93
struct _KeyVal * NextSubkey
Definition: cmscgats.c:90
char * Value
Definition: cmscgats.c:92
void * Ptr
Definition: cmscgats.c:102
struct _OwnedMem * Next
Definition: cmscgats.c:101
cmsUInt32Number Used
Definition: cmscgats.c:111
cmsUInt32Number BlockSize
Definition: cmscgats.c:110
cmsUInt8Number * Block
Definition: cmscgats.c:109
char ** DataFormat
Definition: cmscgats.c:125
int SampleID
Definition: cmscgats.c:121
KEYVALUE * HeaderList
Definition: cmscgats.c:123
int nSamples
Definition: cmscgats.c:120
int nPatches
Definition: cmscgats.c:120
char ** Data
Definition: cmscgats.c:126
char SheetType[1024]
Definition: cmscgats.c:118
Definition: usprintf.c:39
Definition: utils.c:300
SUBALLOCATOR Allocator
Definition: cmscgats.c:147
KEYVALUE * ValidKeywords
Definition: cmscgats.c:160
cmsInt32Number IncludeSP
Definition: cmscgats.c:167
SYMBOL sy
Definition: cmscgats.c:150
char id[128]
Definition: cmscgats.c:156
KEYVALUE * ValidSampleID
Definition: cmscgats.c:161
char DoubleFormatter[128]
Definition: cmscgats.c:171
cmsUInt32Number TablesCount
Definition: cmscgats.c:140
FILECTX * FileStack[20]
Definition: cmscgats.c:166
OWNEDMEM * MemorySink
Definition: cmscgats.c:146
cmsFloat64Number dnum
Definition: cmscgats.c:154
char str[1024]
Definition: cmscgats.c:157
TABLE Tab[255]
Definition: cmscgats.c:143
cmsInt32Number lineno
Definition: cmscgats.c:164
char * MemoryBlock
Definition: cmscgats.c:169
int ch
Definition: cmscgats.c:151
char * Source
Definition: cmscgats.c:163
cmsInt32Number inum
Definition: cmscgats.c:153
cmsUInt32Number nTable
Definition: cmscgats.c:141
cmsContext ContextID
Definition: cmscgats.c:173
Definition: tpic.c:45
Definition: sh2.c:920
Definition: sh.h:1345
Definition: dvips.h:235
Definition: strexpr.c:21
struct def_label label[1024]
Definition: t1part.c:286
type_key Key[]
Definition: t1part.c:271
#define FILE
Definition: t1stdio.h:34
#define feof(f)
Definition: t1stdio.h:109
ch
Definition: t4ht.c:1443
int j
Definition: t4ht.c:1589
*job_name strlen((char *) job_name) - 4)
#define key
Definition: tex2xindy.c:753
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 cField(t)
Definition: trans.h:71
Definition: lobject.h:100
#define va_start(pvar)
Definition: varargs.h:30
#define va_end(pvar)
Definition: varargs.h:38
char * va_list
Definition: varargs.h:22
#define buffer
Definition: xmlparse.c:611