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)  

drvbase.cpp
Go to the documentation of this file.
1 /*
2  drvbase.cpp : This file is part of pstoedit
3  Basic, driver independent output routines
4 
5  Copyright (C) 1993 - 2020 Wolfgang Glunz, wglunz35_AT_pstoedit.net
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
23 #include "drvbase.h"
24 #include "pstoedit_config.h"
25 
26 #include I_stdlib
27 #include I_iostream
28 #include I_iomanip
29 using std::setw;
30 using std::setfill;
31 using std::ends;
32 
33 #include I_string_h
34 
35 #include I_strstream
36 
37 #include <math.h>
38 #include <algorithm>
39 
40 #ifndef miscutil_h
41 #include "miscutil.h"
42 #endif
43 
44 static void splitFullFileName(const char *const fullName,
45  RSString& pathName,
46  RSString& baseName,
47  RSString& fileExt)
48 {
49  if (fullName == nullptr)
50  return;
51 
52  char *fullName_T = cppstrdup(fullName);
53  char *baseName_T = nullptr;
54 
55 #if defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD)
56  // coverity[uninit_use_in_call]
57  char *c = strrchr(fullName_T, '/');
58 #else
59  char *c = strrchr(fullName_T, '\\');
60 #endif
61  if (c != nullptr) {
62  baseName_T = cppstrdup(c + 1);
63  *(c + 1) = 0;
64  pathName = fullName_T;
65  } else {
66  baseName_T = cppstrdup(fullName_T);
67  pathName = "";
68  }
69 
70  // coverity[uninit_use_in_call]
71  c = strrchr(baseName_T, '.');
72  if (c != nullptr) {
73  fileExt = (c + 1);
74  *c = 0;
75  baseName = baseName_T;
76  } else {
77  fileExt = "";
78  baseName = baseName_T;
79  }
80  delete[]baseName_T;
81  delete[]fullName_T;
82 }
83 
84 
85 
86 
87 drvbase::drvbase(const char *driveroptions_p, ostream & theoutStream,
88  ostream & theerrStream,
89  const char *nameOfInputFile_p,
90  const char *nameOfOutputFile_p,
91  PsToEditOptions & globaloptions_p,
92  const DriverDescription & driverdesc_p)
93 : // constructor
94 driverdesc(driverdesc_p),
95 DOptions_ptr(driverdesc_p.createDriverOptions()),
96 // totalNumberOfPages(0),
97 // bboxes(0),
98  outf(theoutStream),
99 errf(theerrStream),
100 inFileName(nameOfInputFile_p ? nameOfInputFile_p : ""),
101 outFileName(nameOfOutputFile_p ? nameOfOutputFile_p : ""),
102 outDirName(""), outBaseName(""), d_argc(0), d_argv(nullptr), globaloptions(globaloptions_p),
103  // set some common defaults
104 currentDeviceHeight(792.0f ), // US Letter
105 currentDeviceWidth(612.0f ), // US Letter
106 x_offset(0.0f),
107 y_offset(0.0f),
108 currentPageNumber(0),
109 domerge(false),
110 defaultFontName(nullptr),
111 ctorOK(true),
112 saveRestoreInfo(nullptr), currentSaveLevel(&saveRestoreInfo), page_empty(true), driveroptions(nullptr),
113  // default for PI1 and PI2 and clippath
114  currentPath(nullptr), last_currentPath(nullptr), outputPath(nullptr), lastPath(nullptr)
115  // default for textInfo_ and lasttextInfo_
116 {
117 
118 
119 
120  // verbose = (getenv("PSTOEDITVERBOSE") != 0);
121 
122  if (verbose) {
123  errf << "verbose mode turned on\n" << endl;
124  }
125 
126  if (nameOfOutputFile_p) {
127  RSString extension; // not needed
128  splitFullFileName(nameOfOutputFile_p, outDirName, outBaseName, extension );
129  if (verbose) {
130  errf << "nameofOutputFile: '" << nameOfOutputFile_p;
131  errf << "' outDirName: '" << outDirName;
132  errf << "' outBaseName: '" << outBaseName;
133  errf << "'" << endl;
134  }
135  }
136  // preparse driveroptions and build d_argc and d_argv
137  if (driveroptions_p) {
138 #if 1
139  Argv driverargs;
140  (void) driverargs.parseFromString(driveroptions_p);
141  d_argc = driverargs.argc;
142  d_argv = new const char *[d_argc + 2]; // 1 more for the argv[0]
143  d_argv[0] = cppstrdup(driverdesc_p.symbolicname);
144  d_argc = 1;
145  for (unsigned int a = 0; a < driverargs.argc; a++) {
146  d_argv[d_argc] = cppstrdup(driverargs.argv[a]);
147  d_argc++;
148  }
149  d_argv[d_argc] = nullptr;
150 #else
151  driveroptions = cppstrdup(driveroptions_p);
152  //C_istrstream optstream(driveroptions, strlen(driveroptions));
153  C_istrstream optstream(driveroptions); //, strlen(driveroptions));
154  const long startOfStream = optstream.tellg();
155  char currentarg[100];
156  // first count number of arguments
157  while (!optstream.eof()) {
158  (void) optstream.width(sizeof(currentarg));
159  optstream >> currentarg;
160  d_argc++;
161  }
162  d_argv = new const char *[d_argc + 2]; // 1 more for the argv[0]
163  // now fill d_args array;
164  (void) optstream.seekg(startOfStream); // reposition to start
165  optstream.clear();
166  // fill argv[0] with driver name (to be similar with Unix)
167  d_argv[0] = cppstrdup(driverdesc_p.symbolicname);
168  d_argc = 1;
169  while (!optstream.eof()) {
170  optstream >> currentarg;
171  if (strlen(currentarg) > 0) {
172  d_argv[d_argc] = cppstrdup(currentarg);
173  d_argc++;
174  }
175  }
176  d_argv[d_argc] = 0;
177 #endif
178  if (verbose) {
179  errf << "got " << d_argc << " driver argument(s)" << endl;
180  for (unsigned int i = 0; i < d_argc; i++) {
181  errf << "Driver option " << i << ":" << d_argv[i] << endl;
182  }
183  }
184  }
185 
186 // now call the driver specific option parser.
187  if (d_argc>0) {
188  if (DOptions_ptr) {
189  //debug errf << "DOptions_ptr: " << (void*) DOptions_ptr << endl;
190  const unsigned int remaining = DOptions_ptr->parseoptions(errf,d_argc,d_argv);
191  if ((remaining > 0) && !DOptions_ptr->expectUnhandled) {
192  errf << "the following " << remaining << " options could not be handled by the driver: " << endl;
193  for (unsigned int i = 0; i < remaining; i++) {
194  errf << DOptions_ptr->unhandledOptions[i] << endl;
195  }
196  }
197  } else {
198  cerr << "DOptions_ptr is nullptr - program flow error - contact author." << endl;
199  }
200  }
201 
202 // bboxes = new BBox[maxPages];
203 
204  // init segment info for first segment
205  // all others will be updated with each newsegment
206 
207 
208  currentPath = &PI1;
209  lastPath = &PI2;
210  outputPath = currentPath;
211 
212 #if defined(HAVE_STL) && !defined(USE_FIXED_ARRAY)
213 #else
214  if ((PI1.path == 0) || (PI2.path == 0) || (clippath.path == 0)) {
215  errf << "new failed in drvbase::drvbase " << endl;
216  exit(1);
217  }
218 #endif
219 
220  textInfo_.thetext.assign("");
221  setCurrentFontName("Courier", true);
222  setCurrentFontFamilyName("Courier");
223  setCurrentFontWeight("Regular");
224  setCurrentFontFullName("Courier");
225  setCurrentFontSize(10.0f);
226  mergedTextInfo = textInfo_; // initial value - empty buffer
227  lastTextInfo_ = textInfo_;
228  lastTextInfo_.currentFontSize = -textInfo_.currentFontSize; // to force a new font the first time.
229  lastTextInfo_.currentR = textInfo_.currentR + 1; // to force new color
230 }
231 
233 {
234  currentPath = nullptr;
235  lastPath = nullptr;
236  outputPath = nullptr;
237  if (d_argv) {
238  for (unsigned int i = 0; i < d_argc; i++) {
239  delete[](d_argv[i]);
240  d_argv[i] = nullptr;
241  }
242  delete[]d_argv;
243  d_argv = nullptr;
244  }
245  if (driveroptions) {
246  delete[]driveroptions;
247  driveroptions = nullptr;
248  }
249 // delete[] bboxes; bboxes = nullptr;
250 // delete[]outDirName;
251 // outDirName = nullptr;
252 // delete[]outBaseName;
253 // outBaseName = nullptr;
254 // Pdriverdesc = nullptr;
255 
256  delete DOptions_ptr;
257  DOptions_ptr = nullptr;
258 
259  if (currentSaveLevel->previous != nullptr) {
260  while (currentSaveLevel->previous != nullptr) {
262  delete currentSaveLevel->next;
263  }
264  }
265  currentSaveLevel = nullptr;
266  defaultFontName = nullptr;
267  last_currentPath = nullptr;
268 }
269 
271 
273 
274 const char * drvbase::VersionString() {
276  return "9.99";
277  }
278  else {
279  return PACKAGE_VERSION;
280  }
281 }
282 
284 {
286  return RSString("20200103040405");
287  }
288 // Comments by Rohan
289 // This is a hack
290 // Since Windows CE does not support, I am just putting a dummy date(i.e "01/01/18 09:00:00")
291 #ifndef OS_WIN32_WCE
292  C_ostrstream datestring;
293  const time_t t = time(nullptr);
294  const struct tm* const localt = localtime(&t);
295  // (D:YYYYMMDDHHmmSSOHH'mm')
296  // All parts of the date after the year are optional.
297  if (localt) {
298  datestring
299  << setw(4) << localt->tm_year + 1900
300  << setw(2) << setfill('0') << localt->tm_mon + 1
301  << setw(2) << setfill('0') << localt->tm_mday
302  << setw(2) << setfill('0') << localt->tm_hour
303  << setw(2) << setfill('0') << localt->tm_min
304  << setw(2) << setfill('0') << localt->tm_sec << ends;
305  return RSString(datestring.str());
306  } else {
307  return RSString("");
308  }
309 #else
310  return RSString("20200101090000");
311 #endif
312 
313 }
314 
316 {
317  if ( verbose )
318  cout << " get getCurrentBBox for page: " << currentPageNumber <<
319  " of " << totalNumberOfPages() << endl;
320  if ((totalNumberOfPages() > 0)
322  // page numbers start from 1.
323  return bboxes()[currentPageNumber > 0 ? (currentPageNumber - 1) : 0];
324  } else {
325  static BBox dummy;
326  return dummy;
327  }
328 }
329 
330 void drvbase::startup(bool mergelines)
331 {
332  domerge = false; // default
333  if (mergelines) {
335  domerge = true;
336  } else {
337  errf << "the selected backend does not support merging, -mergelines ignored" << endl;
338  }
339  }
340 }
341 
343 {
344 // needed because base destructor is called after derived destructor
345  outputPath->clear(); // define past the end path as empty
346  // close page (if no explicit showpage was done)
347  showpage();
348 }
349 
351 {
352  flushOutStanding(); // dump last path
353  if (!page_empty) {
354  close_page();
355  }
356  page_empty = true;
357 }
358 
359 bool drvbase::pathsCanBeMerged(const PathInfo & path1, const PathInfo & path2) const
360 {
361  //
362  // two paths can be merged if one of them is a stroke and the
363  // other a fill or eofill AND
364  // all pathelements are the same
365  //
366  // This is a default implementation which allows only solid edges since
367  // most backends support only such edges.
368  // If a backend allows more, it can overwrite this function
369  //
370  if (((path1.currentShowType == stroke && path1.currentLineType == solid
371  && ((path2.currentShowType == fill)
372  || (path2.currentShowType == eofill)))
373  || (path2.currentShowType == stroke
374  && path2.currentLineType == solid && ((path1.currentShowType == fill)
375  || (path1.currentShowType == eofill))))
376  && (path1.numberOfElementsInPath == path2.numberOfElementsInPath)) {
377  //errf << "Paths seem to be mergeable" << endl;
378  for (unsigned int i = 0; i < path1.numberOfElementsInPath; i++) {
379  const basedrawingelement *bd1 = path1.path[i];
380  const basedrawingelement *bd2 = path2.path[i];
381 // if (! *(path1.path[i]) == *(path2.path[i]) ) return 0;
382  //errf << "comparing " << *bd1 << " with " << *bd2 << endl;
383  const bool result = (*bd1 == *bd2);
384  if (verbose)
385  errf << "comparing " << *bd1 << " with " << *bd2 << " results in " << (int) result << endl;
386  if (!result)
387  return false;
388  }
389  if (verbose)
390  errf << "Paths are mergeable" << endl;
391  return true;
392  } else {
393  if (verbose)
394  errf << "Paths are not mergable:" <<
395  " PI1 st " << (int) path1.currentShowType <<
396  " PI1 lt " << (int) path1.currentLineType <<
397  " PI1 el " << path1.numberOfElementsInPath <<
398  " PI2 st " << (int) path2.currentShowType <<
399  " PI2 lt " << (int) path2.currentLineType <<
400  " PI2 el " << path2.numberOfElementsInPath << endl;
401  return false;
402  }
403 }
404 
405 
406 
407 const basedrawingelement & drvbase::pathElement(unsigned int index) const
408 {
410 }
411 
413 {
414  if (this->getType() != bd2.getType()) {
415  return false;
416  } else {
417  for (unsigned int i = 0; i < this->getNrOfPoints(); i++) {
418  if (!(this->getPoint(i) == bd2.getPoint(i)))
419  return false;
420  }
421  }
422  return true;
423 }
424 
425 bool drvbase::textIsWorthToPrint(const RSString& thetext) const
426 {
427  // check whether it contains just blanks. This makes
428  // problems, e.g. with the xfig backend.
429  const char *cp = thetext.c_str();
430  for (size_t i = thetext.length(); i>0; i--)
431  if (*cp++ != ' ')
432  return true;
433  return false;
434 }
435 
436 bool drvbase::textCanBeMerged(const TextInfo & text1, const TextInfo & text2) const
437 {
438  return (
439  (text1.currentFontName == text2.currentFontName)
440  && (text1.currentFontFamilyName == text2.currentFontFamilyName)
441  && (text1.currentFontFullName == text2.currentFontFullName)
442  && (text1.currentFontWeight == text2.currentFontWeight)
443  && (text1.currentFontSize == text2.currentFontSize)
444  && (text1.currentFontAngle == text2.currentFontAngle)
445  && (text1.currentR == text2.currentR)
446  && (text1.currentG == text2.currentG)
447  && (text1.currentB == text2.currentB)
448 
449  && (fabs(text1.x() - text2.x_end()) < text1.currentFontSize / 10)
450  && (fabs(text1.y() - text2.y_end()) < text1.currentFontSize / 10)
451 
452  );
453 
454  // text matrix is ignored for the moment
455 }
456 
457 void drvbase::show_text(const TextInfo & textinfo)
458 {
459  unused(&textinfo);
461  errf << " Backends that support text need to define a show_text method " <<endl;
462  }
463  // in case backendSupportsText is false, the frontend already flattens text (usually)
464  // Must use the -dt flag for this, since RenderMan doesn't support text
465 }
466 
468  const float llx,
469  const float lly,
470  const float urx,
471  const float ury)
472  // writes a rectangle at points (llx,lly) (urx,ury)
473 {
474  // outf << "Rectangle ( " << llx << "," << lly << ") (" << urx << "," << ury << ")" << endl;
475  // just do show_path for a first guess
476 
478 // if possible and wished - convert a filled rectangle to a single stroked line
479 
480  const float dx = urx - llx;
481  const float dy = ury - lly;
482  const float lw = currentLineWidth();
483  const float lwhalf = lw/2.0f;
484 
485  PathInfo * savepath = currentPath;
486  currentPath = outputPath; // in order to be able to use the add.. functions
487  // we have to use outputPath-> instead of currentpath
488 
490  setCurrentLineCap(0); // 0 means "butt", i.e. no overlap
492 
493  if (dx > dy) {
494  // horizontal line
495  const float mid = (ury+lly)/2.0f;
496  currentPath->clear();
497  addtopath(new Moveto(llx-lwhalf,mid));
498  addtopath(new Lineto(urx+lwhalf,mid));
499  setCurrentLineWidth( dy+lw );
500  // debug cout << "rect -> horizontal line " << endl;
501  } else {
502  // vertical line
503  const float mid = (urx+llx)/2.0f;
504  currentPath->clear();
505  addtopath(new Moveto(mid,lly+lwhalf));
506  addtopath(new Lineto(mid,ury+lwhalf));
507  setCurrentLineWidth( dx+lw );
508  // debug cout << "rect -> vertical line " << endl;
509  }
510  currentPath = savepath;
511  } else {
512  // default - just write the rect as an ordinary polygon
513 
514  // debug cout << "rect as path " << endl;
515  }
516 
518 }
519 
520 
523  !(currentShowType() == stroke)) {
524  // handle fill and eofill
525  simulate_fill();
526  } else {
527  show_path();
528  }
529 }
530 
531 
532 void drvbase::flushTextBuffer(bool useMergeBuffer)
533 {
534  if (useMergeBuffer) textInfo_ = mergedTextInfo; // this is ugly, I know, but to be consistent
535  // with other functions that use textInfo_ directly
536  // this is needed.
537  const TextInfo* textToBeFlushed = useMergeBuffer ? &mergedTextInfo : &textInfo_;
538  add_to_page();
539  show_text(*textToBeFlushed);
540  lastTextInfo_ = *textToBeFlushed; // save for font and color comparison
541 }
542 
544 {
545  flushOutStanding(flushpath); // dump last path to avoid wrong sequence of text and graphics
546  // this flushing needs to be done in any case, even if the text is not written immediately
547  // but instead buffered first. But otherwise, the order gets corrupted
548 
549  if (globaloptions.mergetext) {
550  if (mergedTextInfo.thetext == "") {
552  // there was nothing in the buffer so far, so just place it there.
553  // for this we need a final flush somewhere
555  // text can be merged.
556  if (verbose) {
557  errf << "Info: merging text '" << mergedTextInfo.thetext
558  << "' and '"
559  << textInfo_.thetext << "'" << endl;
560  }
562  static const RSString space(" ");
565  } else {
566  // cannot be merged, so dump text collected so far and place the new
567  // one in the buffer for later
569  TextInfo temp = textInfo_; // save "new" text in temp
570  flushTextBuffer(true); // true -> use merge buffer
571  mergedTextInfo = temp; // set the merge buffer to the "new" text
572  } else {
573  // the merge buffer was not worth to be printed so forget it and
574  // start over with new text
576  }
577  }
578  } else {
579  // always just "pass through" if it is worth to be printed
581  flushTextBuffer(false); // false -> use textinfo_
582  }
583  }
584 }
585 
586 void drvbase::pushText(const size_t len, const char *const thetext, const float x, const float y, const char * const glyphnames)
587 {
588  textInfo_.p = Point(x,y);
589  textInfo_.thetext.assign(thetext, len);
590  textInfo_.glyphnames.assign(glyphnames ? glyphnames:"");
592  textInfo_.remappedfont= false;
593  const char *remappedFontName = drvbase::theFontMapper().mapFont(textInfo_.currentFontName);
594  // errf << " Mapping of " << textInfo_.currentFontName << " returned " << (remappedFontName ? remappedFontName:" ") << endl;
595  if (remappedFontName) {
596  if (verbose) {
597  errf << "Font remapped from '" << textInfo_.
598  currentFontName << "' to '" << remappedFontName << "'" << endl;
599  }
600  textInfo_.currentFontName.assign(remappedFontName);
601  textInfo_.remappedfont= true;
602  }
603 
604  showOrMergeText();
605 
606 #if 0
607  if ((lasttextInfo_.y == textInfo_.y)
608  && (lasttextInfo_.x_end >= textInfo_.x)
609  && (lasttextInfo_.x < textInfo_.x)
610  && lasttextInfo_.samefont(textInfo_)) {
611  if (verbose) {
612  errf << "Text overlap ! '" << lasttextInfo_.thetext.
613  c_str() << "' and '" << textInfo_.thetext.c_str() << endl;
614  }
615  }
616 #endif
617 
618 }
619 
620 
621 static unsigned short hexdecode( char high, char low) {
622  return 16*hextoint(high) + hextoint(low);
623 }
624 
625 void drvbase::pushHEXText(const char *const thetext, const float x, const float y, const char * const glyphnames)
626 {
627  const size_t textlen = strlen(thetext);
628  if (textlen) {
629  char * decodedText = new char[ (textlen / 2 ) + 1 ];
630  for (unsigned int i = 0, j = 0; i < (textlen/2); i++) {
631  decodedText[i] = (char) hexdecode(thetext[j], thetext[j+1]);
632  j++;j++;
633  }
634  decodedText[textlen/2] = '\0';
635  pushText(textlen/2,decodedText,x,y,glyphnames);
636  delete [] decodedText;
637  }
638 }
639 
640 void drvbase::setCurrentWidthParams(const float ax,
641  const float ay,
642  const int Char,
643  const float cx,
644  const float cy, const float x_end, const float y_end)
645 {
646  textInfo_.ax = ax;
647  textInfo_.ay = ay;
648  textInfo_.Char = Char;
649  textInfo_.cx = cx;
650  textInfo_.p_end = Point(x_end, y_end);
651  textInfo_.cy = cy;
652 }
653 
654 void drvbase::setCurrentFontName(const char *const Name, bool is_non_standard_font)
655 {
657  textInfo_.is_non_standard_font = is_non_standard_font;
658 }
659 
661 {
663 }
664 
665 void drvbase::setCurrentFontFullName(const char *const Name)
666 {
668 }
669 
670 void drvbase::setCurrentFontWeight(const char *const Name)
671 {
673 }
674 
675 void drvbase::setCurrentFontSize(const float Size)
676 { /* errf << "setting Size to " << Size << endl; */
677  textInfo_.currentFontSize = Size;
678 }
679 
681 {
683 }
684 
686 {
687 /* Detects the following sequences
688  moveto
689  lineto
690  lineto
691  lineto
692  closepath
693 or
694  moveto
695  lineto
696  lineto
697  lineto
698  lineto
699  (if last lineto goes to same coord as first moveto
700 */
701  // cout << "Testing path " << currentNr() <<endl;
702 // there have to be 5 elements
703  if (numberOfElementsInPath() != 5) return false;
704  if (pathElement(0).getType() != moveto ) return false;
705  if (pathElement(1).getType() != lineto ) return false;
706  if (pathElement(2).getType() != lineto ) return false;
707  if (pathElement(3).getType() != lineto ) return false;
708 
709  Point points[5];
710  {
711  // cout << "before normalization " << "Path # " << currentNr() <<endl;
712  for (int i = 0; i< 4; i++) {
713  points[i] = pathElement(i).getPoint(0) ;
714  // cout << "p " << i << " " << points[i].x_ << " " << points[i].y_ << endl;
715  }
716  // cout << "####" << endl;
717  }
718  // the 5th depend on the last element
719 
720  if (pathElement(4).getType() == lineto ) {
721  // check for first == last
722  if (pathElement(0).getPoint(0) != pathElement(4).getPoint(0)) return false;
723  } else {
724  if (pathElement(4).getType() != closepath ) return false; // 4th element is neither lineto nor closepath
725  }
726 
727  // now we are sure we either have a closepath or a final line to the initial moveto so we can set the last point to the first one.
728  points[4] = pathElement(0).getPoint(0); // use the point of the first moveto.
729 
730 
731 // so far all OK - now check the points.
732 
733  unsigned int start_horic_test;
734  unsigned int start_vert_test;
735 
736  if (points[0].x_ == points[1].x_) {
737  start_horic_test = 0;
738  start_vert_test = 1;
739  } else {
740  start_horic_test = 1;
741  start_vert_test = 0;
742  }
743 
744  {
745  for (unsigned int i = start_horic_test; i < 4; i++, i++)
746  if (points[i].x_ != points[(i + 1) % 4].x_) {
747  // cout << "F1" << endl;
748  return false;
749  }
750  }
751 
752  {
753  for (unsigned int i = start_vert_test; i < 4; i++, i++)
754  if (points[i].y_ != points[(i + 1) % 4].y_) {
755  // cout << "F2" << endl;
756  return false;
757  }
758  }
759  // cout << "IS RECT" << endl;
760  return true;
761 }
762 
764 {
765  if (page_empty) {
766  page_empty = false;
768  open_page();
769  }
770 }
771 
772 
774  *patternAsSetDashString):dashString(patternAsSetDashString),
775 nrOfEntries(-1), numbers(nullptr), offset(0)
776 {
777  const char *pattern = patternAsSetDashString;
778  // first count number of ' ' in pattern to determine number of entries
779  // we normally have one less than number of blanks
780  // line looks like: " [ 2.25 6.75 ] 0.0 setdash"
781 
782  while ((*pattern) && (*pattern != ']')) {
783  if (*pattern == ' ')
784  nrOfEntries++;
785  pattern++;
786  }
787 
788  // errf << nr_of_entries << " entries found in " << pattern << endl;
789  if (nrOfEntries > 0) {
790  pattern = patternAsSetDashString;
791  // now get the numbers
792  // repeat the numbers, if number of entries is odd
793  const unsigned int rep = nrOfEntries % 2; // rep is 1 for odd numbers 0 for even
794  const size_t len = nrOfEntries * (rep + 1);
795  numbers = new float[len];
796  unsigned int cur = 0;
797 #if 1
798  for (unsigned int i = 0; i <= rep; i++) {
799  pattern = patternAsSetDashString;
800  while ((*pattern) && (*pattern != ']')) {
801  if (*pattern == ' ' && (*(pattern + 1) != ']')) {
802  const float f = (float) atof(pattern);
803  assert(cur < len);
804  numbers[cur] = f;
805  // errf << d_numbers[cur] << endl;
806  cur++;
807  }
808  pattern++;
809  }
810  }
811 // if ( *(pattern+1) == ']' ) {
812 // offset = (float) atof(pattern +2);
813 // }
814  if (*(pattern) == ']') { // DMB // fixed by david butterfield
815  offset = (float) atof(pattern + 1); // DMB
816  }
817 #else
818  // this is the "C++" version. But this doesn't work with the GNU library under Linux
819  for (unsigned int i = 0; i <= rep; i++) {
820  // on some systems istrstreams expects a non const char *
821  // so we need to make a copy
822  char *localpattern = new char[strlen(pattern + 1) + 1];
823  strcpy(localpattern, pattern + 1); // skip leading [
824  istrstream instream(localpattern);
825  while (!instream.fail()) {
826  float f;
827  instream >> f;
828  if (!instream.fail()) {
829  d_numbers[cur] = f;
830  // errf << d_numbers[cur] << endl;
831  cur++;
832  }
833  }
834  delete[]localpattern;
835  }
836 #endif
837  }
838 }
839 
841 {
842  delete[]numbers;
843  numbers = nullptr;
844  nrOfEntries = 0;
845 }
846 
847 
849 {
851  const float *const d_numbers = dp.numbers;
852  const int nr_of_entries = dp.nrOfEntries;
853 
854  drvbase::linetype curtype = solid;
855  if (nr_of_entries > 0) {
856  const int rep = nr_of_entries % 2; // rep is 1 for odd numbers 0 for even
857  // now guess a pattern from
858  // solid, dashed, dotted, dashdot, dashdotdot ; // corresponding to the CGM patterns
859  switch (nr_of_entries * (rep + 1)) {
860  case 2:
861  if (d_numbers[1] == 0.0f) {
862  curtype = drvbase::solid; // if off is 0 -> solid
863  } else if ((d_numbers[0] / d_numbers[1]) > 100) {
864  curtype = drvbase::solid; // if on/off > 100 -> use solid
865  } else if (d_numbers[0] < 2.0f) {
866  // if on is < 2 then always dotted
867  // ok we miss '. . .'
868  curtype = drvbase::dotted;
869  } else {
870  curtype = drvbase::dashed;
871  }
872  break;
873  case 4:
874  if ((d_numbers[1] == 0.0f) && (d_numbers[3] == 0.0f)) {
875  curtype = drvbase::solid; // if off is 0 -> solid
876  } else if ((d_numbers[0] < 2.0f) || (d_numbers[2] < 2.0f)) {
877  curtype = drvbase::dashdot;
878  } else {
879  curtype = drvbase::dashed;
880  }
881  break;
882  case 6:
883  if ((d_numbers[1] == 0.0f) && (d_numbers[3] == 0.0f)
884  && (d_numbers[5] == 0.0f)) {
885  curtype = drvbase::solid; // if off is 0 -> solid
886  } else if ((d_numbers[0] < 2.0f) ||
887  (d_numbers[2] < 2.0f) ||
888  (d_numbers[4] < 2.0f)) {
889  curtype = drvbase::dashdotdot;
890  } else {
891  curtype = drvbase::dashed;
892  }
893  break;
894  default:
895  curtype = drvbase::dashed;
896  break;
897  }
898  } else {
899  // no entry
900  curtype = drvbase::solid;
901  }
902  setCurrentLineType(curtype);
903  if (verbose) {
904  errf << "linetype guessed from '" << dashPattern() << "' is " << getLineTypeName() << "(" << curtype << ")" << endl;
905  }
906 }
907 
909 {
910  flushOutStanding(); // dump last path to avoid wrong sequence of text and graphics
911  add_to_page();
914  delete[]imageInfo.data;
916  imageInfo.data = nullptr;
917 }
918 
919 unsigned int drvbase::nrOfSubpaths() const
920 {
921  unsigned int nr = 0;
922  for (unsigned int n = 0; n + 1 < numberOfElementsInPath(); n++) {
923  const basedrawingelement & elem = pathElement(n);
924  if (elem.getType() == moveto)
925  nr++;
926  }
927  return nr;
928 }
929 
930 
932 {
933  // Count the subpaths
934  unsigned int numpaths = nrOfSubpaths();
935  if (verbose)
936  errf << "numpaths: " << numpaths << endl;
937  // Rearrange the path if necessary
938  if ((numpaths > 1) && (currentLineWidth() == 0.0) && (currentShowType() != drvbase::stroke)) {
939  if (verbose)
940  errf << "Starting rearrangment of subpaths" << endl;
942  numpaths = nrOfSubpaths();
943  }
944  if (!numpaths)
945  numpaths = 1;
946 
947  const unsigned int origCount = numberOfElementsInPath();
948  unsigned int starti = 0;
949  for (unsigned int i = 0; i < numpaths; i++) {
950  unsigned int endi = starti;
952  for ( ; ; ) { // while true but without compiler warning
953  // Find the next end index
954  endi++;
955  if (endi >= origCount)
956  break;
957  else if (pathElement(endi).getType() == moveto)
958  break;
959  }
960  if (endi <= origCount) {
961  if (verbose)
962  errf << "dumping subpath from " << starti << " to " << endi << endl;
963  outputPath->subpathoffset = starti;
964  outputPath->numberOfElementsInPath = endi - starti;
965  show_or_convert_path(); // from start to end
966  }
967  starti = endi;
968  }
969  outputPath->numberOfElementsInPath = origCount;
971 }
972 
974 {
975  if (Verbose()) cerr << "begin close_output_file_and_reopen_in_binary_mode" << endl;
976 
977  if (outFileName.length() || (&outf != &cout) )
978  // output is to a file, and outf is not cout
979  {
980  ofstream *outputFilePtr = (ofstream *) (& outf);
981 // ofstream *outputFilePtr = dynamic_cast<ofstream *> (& outf);
982 
983  //dbg cerr << "outputfileptr = " << (void*) outputFilePtr << " outf " << (void*) (&outf)<< endl;
984 
985  outputFilePtr->close();
986  if (Verbose()) cerr << "after close " << endl;
987 #if (defined(unix) || defined(__unix__) || defined(_unix) || defined(__unix) || defined(__EMX__) || defined (NetBSD) ) && !defined(DJGPP)
988  // binary is not available on UNIX, only on PC
989  outputFilePtr->open(outFileName.c_str(), ios::out);
990 #else
991  // use redundant ios::out because of bug in djgpp
992  outputFilePtr->open(outFileName.c_str(), ios::out | ios::binary);
993 
994 #endif
995  if (Verbose()) cerr << "after open " << endl;
996  return true;
997  } else {
998  cerr << "Error: This driver cannot write to stdout since it writes binary data " << endl;
999  return false;
1000  }
1001 // return 0; // not reached - but to make some compilers happy
1002 }
1003 
1004 
1005 
1007 {
1008  // now we start a clippath, so we need to dump
1009  // all previous paths
1010  flushOutStanding();
1012  currentPath = &clippath;
1015 }
1016 
1018 {
1019  add_to_page();
1020  ClipPath(clipmode);
1021  clippath.clear();
1024 }
1025 
1026 // default versions
1027 // virtual
1028 void drvbase::ClipPath(cliptype /* clipmode */ )
1029 {
1030 }
1031 
1032 // virtual
1034 {
1035 }
1036 
1037 // virtual
1039 {
1040 }
1041 
1043 {
1044  switch ( flushmode ) {
1045  case flushall:
1046  // this needs to be fixed concerning the ordering (which was first - the text or the path)
1049  break;
1050  case flushtext:
1052  flushTextBuffer(true);
1053  mergedTextInfo.thetext=""; // clear the merge buffer
1054  }
1055  break;
1056  case flushpath:
1057  dumpPath(false); // false -> no flush text
1058  break;
1059  default:
1060  break;
1061  }
1062 }
1063 
1064 void drvbase::dumpPath(bool doFlushText)
1065 {
1066  if (doFlushText) flushOutStanding(flushtext); // flush text, so merge is not supported in case of
1067  // text path text sequence
1068 
1069  guess_linetype(); // needs to be done here, because we must write to currentpath
1070 
1071 #ifdef fixlater
1072  // this does not work as it is at the moment since
1073  // * it changes the showtype also for subsequent segments which might have
1074  // more than 2 points AND
1075  // * it is not valid, if the only element (besides moveto) is a curveto.
1076 
1077  if (currentPath->numberOfElementsInPath == 2) {
1078  // a polygon with two points is drawn as a line
1079 
1080  // PROBLEM ! This resetting has an impact on the subsequent segments
1081  // if subpaths are not supported by the backend !!!!
1082  currentPath->isPolygon = false;
1084  }
1085 #endif
1086 
1088  /* don't show border with fill */
1089  setCurrentLineWidth(0.0f);
1090  }
1091 
1092  if (domerge && pathsCanBeMerged(PI1, PI2)) {
1093  // make PI1 the outputPath and clear PI2
1094  if (verbose) {
1095  errf << "Path " << PI1.nr << " type " << (int) PI1.currentShowType << endl;
1096  errf << PI1.fillR << " " << PI1.fillG << " " << PI1.fillB << endl;
1097  errf << PI1.edgeR << " " << PI1.edgeG << " " << PI1.edgeB << endl;
1098  errf << PI1.currentLineWidth << endl;
1099 
1100  errf << "Path " << PI2.nr << " type " << (int) PI2.currentShowType << endl;
1101  errf << PI2.fillR << " " << PI2.fillG << " " << PI2.fillB << endl;
1102  errf << PI2.edgeR << " " << PI2.edgeG << " " << PI2.edgeB << endl;
1103  errf << PI2.currentLineWidth << endl;
1104  errf << " have been merged\n";
1105  }
1106  // merge PI2 into PI1
1107  if (PI1.currentShowType == stroke) {
1108  // PI2 is the fill
1110  PI1.fillR = PI2.fillR;
1111  PI1.fillG = PI2.fillG;
1112  PI1.fillB = PI2.fillB;
1113  } else {
1114  // PI1 is the fill, so copy the line parameters from PI2
1116  PI1.edgeR = PI2.edgeR;
1117  PI1.edgeG = PI2.edgeG;
1118  PI1.edgeB = PI2.edgeB;
1119  }
1120  if (verbose) {
1121  errf << " result is \n";
1122  errf << "Path " << PI1.nr << " type " << (int) PI1.currentShowType << endl;
1123  errf << PI1.fillR << " " << PI1.fillG << " " << PI1.fillB << endl;
1124  errf << PI1.edgeR << " " << PI1.edgeG << " " << PI1.edgeB << endl;
1125  errf << PI1.currentLineWidth << endl;
1126  }
1127  outputPath = &PI1;
1128  PI1.pathWasMerged = true;
1129  PI2.clear();
1130  } else {
1131  outputPath = lastPath;
1132  }
1133  if (numberOfElementsInPath() > 0) {
1134 
1135  // nothing to do for empty paths
1136  // paths may be empty due to a merge operation
1137 
1138  if (verbose) {
1139  errf << "working on";
1140  switch (currentShowType()) {
1141  case drvbase::stroke:
1142  errf << " stroked ";
1143  break;
1144  case drvbase::fill:
1145  errf << " filled ";
1146  break;
1147  case drvbase::eofill:
1148  errf << " eofilled ";
1149  break;
1150  default:
1151  break;
1152  }
1153  errf << "path " << currentNr() << " with " <<
1154  numberOfElementsInPath() << " elements" << endl;
1155  }
1156 
1157  if (numberOfElementsInPath() > 1) {
1158  // cannot draw single points
1159  add_to_page();
1160  if (isPolygon()) { /* PolyGon */
1161  if (is_a_rectangle()) {
1162  const float llx =
1164  (pathElement(0).getPoint(0).x_,
1165  pathElement(1).getPoint(0).x_),
1166  std::min(pathElement(2).getPoint(0).x_, pathElement(3).getPoint(0).x_));
1167  const float urx =
1169  (pathElement(0).getPoint(0).x_,
1170  pathElement(1).getPoint(0).x_),
1171  std::max(pathElement(2).getPoint(0).x_, pathElement(3).getPoint(0).x_));
1172  const float lly =
1174  (pathElement(0).getPoint(0).y_,
1175  pathElement(1).getPoint(0).y_),
1176  std::min(pathElement(2).getPoint(0).y_, pathElement(3).getPoint(0).y_));
1177  const float ury =
1179  (pathElement(0).getPoint(0).y_,
1180  pathElement(1).getPoint(0).y_),
1181  std::max(pathElement(2).getPoint(0).y_, pathElement(3).getPoint(0).y_));
1182 
1184  } else {
1187  else
1189  }
1190  } else { /* PolyLine */
1193  else
1195  }
1196  }
1197  // cleanup
1198  outputPath->clear();
1199  }
1200  // swap current and last pointers
1202  currentPath = lastPath; // currentPath will be filled next be Lexer
1203  lastPath = help;
1204 
1205  currentPath->copyInfo(*help); // initialize next path with state of last path
1206  // currentPath is the path filled next by lexer
1207 
1209 }
1210 
1212 {
1214 }
1215 
1217  if (newelement) {
1218  currentPath->addtopath(newelement, errf);
1219  } else {
1220  errf << "Fatal: newelement is nullptr in addtopath " << endl;
1221  exit(1);
1222  }
1223 }
1225  ostream & errf)
1226 {
1227 #if defined(HAVE_STL) && !defined(USE_FIXED_ARRAY)
1228  if (numberOfElementsInPath < path.size()) {
1229  path[numberOfElementsInPath] = newelement;
1230  } else {
1231  path.push_back(newelement);
1232  }
1234  unused(&errf);
1235 #else
1237  path[numberOfElementsInPath] = newelement;
1238 #ifdef DEBUG
1239  cout << "pathelement " <<
1240  numberOfElementsInPath << " added " << *newelement << endl;
1241 #endif
1243  } else {
1244  errf <<
1245  "Fatal: number of path elements exceeded. Increase maxElements in drvbase.h"
1246  << endl;
1247  exit(1);
1248  }
1249 #endif
1250 
1251 }
1252 
1254 {
1255  for (unsigned int i = 0; i < numberOfElementsInPath; i++) {
1256  // delete path[i];
1257  path[i]->deleteyourself(); // see note in drvbase.h
1258  path[i] = nullptr;
1259  }
1261  pathWasMerged = false;
1262 }
1263 
1265 {
1266  // copies the whole path state except the path array
1267  currentShowType = p.currentShowType;
1268  currentLineType = p.currentLineType;
1269  currentLineCap = p.currentLineCap;
1270  currentLineJoin = p.currentLineJoin;
1271  currentMiterLimit = p.currentMiterLimit;
1272  nr = p.nr;
1273  // Path is not copied path(0),
1274  isPolygon = p.isPolygon;
1275  // numberOfElementsInPath = p.numberOfElementsInPath;
1276  currentLineWidth = p.currentLineWidth;
1277  edgeR = p.edgeR;
1278  edgeG = p.edgeG;
1279  edgeB = p.edgeB;
1280  fillR = p.fillR;
1281  fillG = p.fillG;
1282  fillB = p.fillB;
1283  colorName = p.colorName;
1284  dashPattern = p.dashPattern;
1285 }
1286 
1287 ostream & operator << (ostream & out, const basedrawingelement & elem)
1288 {
1289  out << "type: " << (int) elem.getType() << " params: ";
1290  for (unsigned int i = 0; i < elem.getNrOfPoints(); i++) {
1291  out << elem.getPoint(i).x_ << " " << elem.getPoint(i).y_ << " ";
1292  }
1293  out << endl;
1294  return out;
1295 }
1296 
1297 ColorTable::ColorTable(const char *const *defaultColors, const unsigned int numberOfDefaultColors, makeColorNameType makeColorName):
1298 defaultColors_(defaultColors),
1299 numberOfDefaultColors_(numberOfDefaultColors), makeColorName_(makeColorName)
1300 {
1301 //dbg cerr << " Constructing a color table with " << numberOfDefaultColors << " default colors" << endl;
1302  for (unsigned int i = 0; i < maxcolors; i++)
1303  newColors[i] = nullptr;
1304 //dbg cerr << 1/(1/numberOfDefaultColors) << endl;
1305 }
1306 
1308 {
1309  unsigned int current = 0;
1310  while (newColors[current] != nullptr) {
1311  delete[] newColors[current];
1312  newColors[current] = nullptr;
1313  current++;
1314  }
1315  // cannot assign since it is const - defaultColors_ = nullptr;
1316  //lint -esym(1540,ColorTable::defaultColors_)
1317 }
1318 
1319 
1320 unsigned int ColorTable::getColorIndex(float r, float g, float b)
1321 {
1322 // registers a possibly new color and returns the index
1323 // under which the color was registered
1324  const char *cmp = makeColorName_(r, g, b);
1325  for (unsigned int i = 0; i < numberOfDefaultColors_; i++) {
1326  if (strcmp(cmp, defaultColors_[i]) == 0) {
1327  return i;
1328  }
1329  }
1330 // look in new colors
1331  unsigned int j ;
1332  for (j = 0; ((j < maxcolors) && (newColors[j] != nullptr)); j++) {
1333  if (strcmp(cmp, newColors[j]) == 0) {
1334  return j + numberOfDefaultColors_;
1335  }
1336  }
1337 // not found so far
1338 // j is either maxcolors or the index of the next free entry
1339 // add a copy to newColors
1340  if (j < maxcolors) {
1341  const size_t size = strlen(cmp) + 1;
1342  newColors[j] = new char[size];
1343  strcpy_s(newColors[j], size, cmp);
1344  return j + numberOfDefaultColors_;
1345  } else {
1346 // cerr << "running out of colors" << endl;
1347  return 0;
1348  }
1349 
1350 }
1351 
1352 const char * ColorTable::getColorString(float r, float g, float b) // non const
1353 {
1354  return getColorString(getColorIndex(r, g, b));
1355 }
1356 
1357 bool ColorTable::isKnownColor(float r, float g, float b) const
1358 {
1359 // Possible improvements:
1360 // could return the next free entry as negative number in case
1361 // the color is not found. This would make it possible to
1362 // use this function in getColorEntry as well, or (better)
1363 // make a pure registercolor(index,.....) instead of
1364 // getColorEntry.
1365  const char *cmp = makeColorName_(r, g, b);
1366  for (unsigned int i = 0; i < numberOfDefaultColors_; i++) {
1367  if (strcmp(cmp, defaultColors_[i]) == 0) {
1368  return true;
1369  }
1370  }
1371  // look in new colors
1372  for (unsigned int j = 0; ((j < maxcolors) && (newColors[j] != nullptr)); j++) {
1373  if (strcmp(cmp, newColors[j]) == 0) {
1374  return true; // j+numberOfDefaultColors_;
1375  }
1376  }
1377  // not found so far
1378  return false;
1379 }
1380 
1381 const char * ColorTable::getColorString(unsigned int index) const
1382 {
1385 }
1386 
1387 
1388 
1390 {
1391  unsigned int i = 0;
1392  while (rp[i] != nullptr) {
1393  if ((strcmp(drivername, rp[i]->symbolicname) == 0)) {
1394  return rp[i];
1395  }
1396  i++;
1397  }
1398  return nullptr;
1399 }
1400 
1402 {
1403  unsigned int i = 0;
1404  const DriverDescription * founditem = nullptr;
1405  while (rp[i] != nullptr) {
1406  if ((STRICMP(suffix, rp[i]->suffix) == 0)) {
1407  if (founditem) {
1408  // already found an entry for this suffix - so it is not unique -> return 0
1409  return nullptr;
1410  } else {
1411  founditem = rp[i]; // first match - but loop through all items
1412  }
1413  }
1414  i++;
1415  }
1416  return founditem;
1417 }
1418 
1420 {
1421  unsigned int i = 0;
1422  while (rp[i] != nullptr) {
1423  out << rp[i]->symbolicname << ",";
1424  out << rp[i]->suffix << ",";
1425  out << rp[i]->short_explanation << "," << rp[i]->additionalInfo();
1426  out << "\t(" << rp[i]->filename << ")" << endl;
1427  i++;
1428  }
1429 }
1430 void DescriptionRegister::explainformats(ostream & out, bool withdetails) const
1431 {
1432  if (withdetails) {
1433  // out << "\\subsection{Available formats and their specific options}" << endl;
1434  } else {
1435  out << "Available formats :\n";
1436  }
1437  for (unsigned int i = 0; rp[i]; i++) {
1438  if (rp[i]->variants() > 1) {
1439  if (rp[i] == rp[i]->variant(0)) {
1441  // first variant - dump all variants.
1442  RSString groupname("Format group: ");
1443  for (size_t v = 0; rp[i]->variant(v); v++) {
1444  groupname += rp[i]->variant(v)->symbolicname;
1445  groupname += " ";
1446  }
1447  if (withdetails) {
1448  out << "\\subsubsection{" << groupname << "}" << endl;
1449  out << "This group consists of the following variants:" << endl;
1450  out << "\\begin{description}" << endl;
1451  for (size_t v = 0; rp[i]->variant(v); v++) {
1452  const DriverDescription * d = rp[i]->variant(v);
1453  out << "\\item[" << d->symbolicname << ":] " << d->short_explanation << "." << endl;
1454  if (v > 0 && strlen(rp[i]->variant(v)->long_explanation) > 0) { out << "WOGL " << rp[i]->variant(v)->long_explanation << endl << endl; }
1455 
1456  }
1457  out << "\\end{description}" << endl;
1458  // long explanation is attached only to first instance
1459  if (strlen(rp[i]->long_explanation) > 0) { out << rp[i]->long_explanation << endl << endl; }
1460 
1461  options->showhelp(out, withdetails, withdetails);
1462  out << "%%// end of options" << endl;
1463  } else {
1464  out << groupname << "\t(" << rp[i]->filename << ")" << endl;
1465  for (size_t v = 0; rp[i]->variant(v); v++) {
1466  const DriverDescription * d = rp[i]->variant(v);
1467  out << '\t' << d->symbolicname << ":\t";
1468  if (strlen(d->symbolicname) < 7) {
1469  out << '\t';
1470  }
1471  out << "\t." << d->suffix << ":\t";
1472  out << d->short_explanation << " " << d->additionalInfo();
1473  if (d->checkfunc) {
1474  if (!(d->checkfunc())) {
1475  out << " (no valid key found)";
1476  }
1477  }
1478  out << endl;
1479  }
1480  if (options->numberOfOptions()) {
1481  out << "This group supports the following additional options: (specify using -f \"format:-option1 -option2\")" << endl;
1482  }
1483  options->showhelp(out, withdetails, withdetails);
1484  out << "-------------------------------------------" << endl;
1485  }
1486  delete options;
1487  }
1488  } else {
1490  if (withdetails) {
1491  out << "\\subsubsection{" << rp[i]->symbolicname << " - " << rp[i]->short_explanation << "}" << endl;
1492  if (strlen(rp[i]->long_explanation) > 0) { out << rp[i]->long_explanation << endl << endl; }
1493  options->showhelp(out, withdetails, withdetails);
1494  out << "%%// end of options" << endl;
1495  } else {
1496  out << '\t' << rp[i]->symbolicname << ":\t";
1497  if (strlen(rp[i]->symbolicname) < 7) {
1498  out << '\t';
1499  }
1500  out << "\t." << rp[i]->suffix << ":\t";
1501  out << rp[i]->short_explanation << " " << rp[i]->additionalInfo();
1502 
1503  if (rp[i]->checkfunc) {
1504  if (!(rp[i]->checkfunc())) {
1505  out << " (no valid key found)";
1506  }
1507  }
1508  out << "\t(" << rp[i]->filename << ")" << endl;
1509  if (options->numberOfOptions()) {
1510  out << "This format supports the following additional options: (specify using -f \"format:-option1 -option2\")" << endl;
1511  }
1512 
1513  options->showhelp(out, withdetails, withdetails);
1514  out << "-------------------------------------------" << endl;
1515  }
1516  delete options;
1517  }
1518  }
1519 }
1521  const DescriptionRegister & src, const char *filename)
1522 {
1523  int i = 0;
1524  while (src.rp[i]) {
1525  const unsigned int srcversion = src.rp[i]->getdrvbaseVersion();
1526  if (srcversion != 0) {
1527  if (srcversion == drvbaseVersion) {
1528  src.rp[i]->filename = filename;
1529  registerDriver(src.rp[i]);
1530  } else {
1531  out << src.rp[i]->short_explanation << "(" << filename << ")" <<
1532  " - backend has other version than expected by pstoedit core "
1533  << srcversion << " <> " << drvbaseVersion << endl;
1534  out <<
1535  "The pstoedit.dll (core) and the additional DLLs (plugins.dll or importps.dll) must have the same version number."
1536  << endl;
1537  out <<
1538  "Please get a consistent set of pstoedit.dll (plugins.dll and or importps.dll) from www.pstoedit.net/pstoedit/ "
1539  << endl;
1540 
1541  }
1542  }
1543  i++;
1544  }
1545 }
1547 {
1548  // cout << " registering " << (void *) xp << endl;
1549  // check for duplicate:
1550  for (int i = 0; i < ind; i++) {
1551  if (strcmp(rp[i]->symbolicname, xp->symbolicname) == 0) {
1552  // duplicate found
1553  if (xp->checkfunc && xp->checkfunc() && !(rp[i]->checkfunc())) {
1554  // the new one has a license, so use this instead
1555  rp[i] = xp;
1556  }
1557  return; // just use the first version - except for the above case.
1558  }
1559  }
1560  rp[ind] = xp;
1561  ind++;
1562 }
1563 
1564 // int Rinit::ref = 0;
1566 
1568 {
1570 }
1571 
1572 Point Point::transform(const float matrix[6]) const
1573 {
1574  const float tx = matrix[0] * x_ + matrix[2] * y_ + matrix[4];
1575  const float ty = matrix[1] * x_ + matrix[3] * y_ + matrix[5];
1576  return Point(tx, ty);
1577 }
1578 
1579 
1580 
1581 const char * DriverDescription::currentfilename = "built-in";
1582 DriverDescription::DriverDescription( const char *const s_name,
1583  const char *const short_expl,
1584  const char *const long_expl,
1585  const char *const suffix_p,
1586  const bool backendSupportsSubPaths_p,
1587  const bool backendSupportsCurveto_p,
1588  const bool backendSupportsMerging_p, // merge a separate outline and filling of a polygon -> 1. element
1589  const bool backendSupportsText_p,
1590  const imageformat backendDesiredImageFormat_p,
1591  const opentype backendFileOpenType_p,
1592  const bool backendSupportsMultiplePages_p,
1593  const bool backendSupportsClipping_p,
1594  const bool nativedriver_p,
1595  checkfuncptr checkfunc_p):
1596  symbolicname(s_name),
1597  short_explanation(short_expl),
1598  long_explanation(long_expl),
1599  suffix(suffix_p),
1600  backendSupportsSubPaths(backendSupportsSubPaths_p),
1601  backendSupportsCurveto(backendSupportsCurveto_p),
1602  backendSupportsMerging(backendSupportsMerging_p), // merge a separate outline and filling of a polygon -> 1. element
1603  backendSupportsText(backendSupportsText_p),
1604  backendDesiredImageFormat(backendDesiredImageFormat_p),
1605  backendFileOpenType(backendFileOpenType_p),
1606  backendSupportsMultiplePages(backendSupportsMultiplePages_p),
1607  backendSupportsClipping(backendSupportsClipping_p),
1608  nativedriver(nativedriver_p),
1609  filename(DriverDescription::currentfilename),
1610  checkfunc(checkfunc_p)
1611 {
1613  //dbg cout << "registering driver " << s_name << "\t at registry " << (void*) &registry << endl;
1614  registry.registerDriver(this);
1615 }
1616 
1618  return ((checkfunc != nullptr) ? (checkfunc()? "" : "(license key needed, see pstoedit manual)") : "");
1619 }
1620 
1621 #if 0
1622 // not needed - pure virtual
1624 CreateBackend(const char *const driveroptions_P, ostream & theoutStream,
1625  ostream & theerrStream, const char *const nameOfInputFile,
1626  const char *const nameOfOutputFile,
1627  const PsToEditOptions & globaloptions) const
1628 {
1629  unused(driveroptions_P);
1630  unused(&theoutStream);
1631  unused(&theerrStream);
1632  unused(nameOfInputFile);
1633  unused(nameOfOutputFile);
1634  unused(&globaloptions);
1635  return 0;
1636 }
1637 #endif
1638 
1639 #if 0
1640 // def BUGGYGPP
1641 //
1642 // GNU g++ causes a seg fault, when the singleton instance is destroyed triggered by a dlclose()
1643 // so we have to live with this small memory leak due to the allocation on the heap
1644 //
1645 // This problem is now solved by the removal of the dtor for this class.
1646 //
1648 {
1649  static DescriptionRegister * theSingleInstance = new DescriptionRegister;
1650  globalRp = theSingleInstance;
1651  return *theSingleInstance;
1652 }
1653 #else
1655 {
1656  static DescriptionRegister theSingleInstance;
1657  globalRp = &theSingleInstance;
1658  return theSingleInstance;
1659 }
1660 #endif
1661 
1662 //
1663 // SINGLETONSONHEAP might be useful if problems occur during the unloading of libpstoedit.so
1664 //
1665 
1666 // Implementation of SingleTon "Objects".
1667 
1668 BBox * drvbase::bboxes() { // array of bboxes - maxpages long
1669 #ifdef SINGLETONSONHEAP
1670  static BBox * dummy = new BBox[maxPages]; return dummy;
1671 #else
1672  static BBox dummy[maxPages]; return &(dummy[0]);
1673 #endif
1674 }
1675 
1677  // using the singleton pattern for easier linkage
1678  static unsigned int nrOfPages = 0;
1679  return nrOfPages;
1680 }
1681 
1682 RSString& drvbase::pstoeditHomeDir(){// usually the place where the binary is installed
1683 #ifdef SINGLETONSONHEAP
1684  static RSString *dummy = new RSString(""); return *dummy;
1685 #else
1686  static RSString dummy(""); return dummy;
1687 #endif
1688 }
1689 RSString& drvbase::pstoeditDataDir() {// where the fmp and other data files are stored
1690 #ifdef SINGLETONSONHEAP
1691  static RSString *dummy = new RSString(""); return *dummy;
1692 #else
1693  static RSString dummy(""); return dummy;
1694 #endif
1695 }
1696 
1697 // the global static FontMapper
1699 #ifdef SINGLETONSONHEAP
1700  static FontMapper *dummy = new FontMapper; return *dummy;
1701 #else
1702  static FontMapper dummy; return dummy;
1703 #endif
1704 }
1705 
1706 bool drvbase::verbose = false; // offensichtlich kann man keine initialisierten Daten DLLEXPORTieren
1707 bool drvbase::Verbose() { return verbose; }
1709 
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
cp
Definition: action.c:1035
double ury
Definition: aftopl.c:56
double urx
Definition: aftopl.c:55
double lly
Definition: aftopl.c:54
double llx
Definition: aftopl.c:53
#define param(a, b)
unsigned binary[4]
Definition: ascii85.c:46
static point_t cur
Definition: backend_eps.c:108
int cmp(const void *p, const void *q)
Definition: bkmk2uni.c:1611
static char * options
Definition: bmeps.c:236
Definition: miscutil.h:192
char * argv[maxargs]
Definition: miscutil.h:200
unsigned int argc
Definition: miscutil.h:195
unsigned int parseFromString(const char *const argstring)
Definition: miscutil.cpp:936
char * newColors[maxcolors]
Definition: drvbase.h:733
bool isKnownColor(float r, float g, float b) const
Definition: drvbase.cpp:1357
unsigned int getColorIndex(float r, float g, float b)
Definition: drvbase.cpp:1320
const char * getColorString(float r, float g, float b)
Definition: drvbase.cpp:1352
ColorTable(const char *const *defaultColors, const unsigned int numberOfDefaultColors, makeColorNameType makeColorName)
Definition: drvbase.cpp:1297
const char *const *const defaultColors_
Definition: drvbase.h:731
const unsigned int numberOfDefaultColors_
Definition: drvbase.h:732
const makeColorNameType makeColorName_
Definition: drvbase.h:734
int nrOfEntries
Definition: drvbase.h:705
float * numbers
Definition: drvbase.h:706
float offset
Definition: drvbase.h:707
DriverDescription * rp[maxelems]
Definition: drvbase.h:912
void mergeRegister(ostream &out, const DescriptionRegister &src, const char *filename)
Definition: drvbase.cpp:1520
void registerDriver(DriverDescription *xp)
Definition: drvbase.cpp:1546
const DriverDescription * getDriverDescForName(const char *drivername) const
Definition: drvbase.cpp:1389
const DriverDescription * getDriverDescForSuffix(const char *suffix) const
Definition: drvbase.cpp:1401
void listdrivers(ostream &out) const
Definition: drvbase.cpp:1419
static DescriptionRegister & getInstance()
Definition: drvbase.cpp:1654
void explainformats(ostream &out, bool withdetails=false) const
Definition: drvbase.cpp:1430
static const char * currentfilename
Definition: drvbase.h:1032
const checkfuncptr checkfunc
Definition: drvbase.h:1030
virtual drvbase * CreateBackend(const char *const driveroptions_P, ostream &theoutStream, ostream &theerrStream, const char *const nameOfInputFile, const char *const nameOfOutputFile, PsToEditOptions &globaloptions_p) const =0
virtual const DriverDescription * variant(size_t index) const =0
DriverDescription(const char *const s_name, const char *const short_expl, const char *const long_expl, const char *const suffix_p, const bool backendSupportsSubPaths_p, const bool backendSupportsCurveto_p, const bool backendSupportsMerging_p, const bool backendSupportsText_p, const imageformat backendDesiredImageFormat_p, const opentype backendFileOpenType_p, const bool backendSupportsMultiplePages_p, const bool backendSupportsClipping_p, const bool nativedriver_p=true, checkfuncptr checkfunc_p=0)
Definition: drvbase.cpp:1582
const bool backendSupportsText
Definition: drvbase.h:1017
const bool backendSupportsMerging
Definition: drvbase.h:1016
const char * additionalInfo() const
Definition: drvbase.cpp:1617
const char *const symbolicname
Definition: drvbase.h:1009
const char *const short_explanation
Definition: drvbase.h:1010
RSString filename
Definition: drvbase.h:1023
const char *const suffix
Definition: drvbase.h:1012
virtual ProgramOptions * createDriverOptions() const =0
const char *const long_explanation
Definition: drvbase.h:1011
const char * mapFont(const RSString &fontname) const
Definition: miscutil.cpp:891
unsigned int nextfreedataitem
Definition: psimage.h:44
unsigned char * data
Definition: psimage.h:43
void calculateBoundingBox()
Definition: psimage.cpp:277
OptionT< bool, BoolTrueExtractor > simulateFill
OptionT< bool, BoolTrueExtractor > simulateSubPaths
OptionT< bool, BoolTrueExtractor > mergetext
OptionT< RSString, RSStringValueExtractor > outputPageSize
OptionT< bool, BoolTrueExtractor > convertFilledRectToStroke
void assign(const char *src, const size_t len)
Definition: miscutil.cpp:752
size_t length() const
Definition: miscutil.h:129
const char * c_str() const
Definition: miscutil.h:127
virtual const Point & getPoint(unsigned int i) const =0
bool operator==(const basedrawingelement &bd2) const
Definition: drvbase.cpp:412
virtual Dtype getType() const =0
virtual unsigned int getNrOfPoints() const =0
SaveRestoreInfo * next
Definition: drvbase.h:325
SaveRestoreInfo * previous
Definition: drvbase.h:324
TextInfo mergedTextInfo
Definition: drvbase.h:397
static const char * VersionString()
Definition: drvbase.cpp:274
void setCurrentLineType(const linetype how)
Definition: drvbase.h:518
bool pathWasMerged() const
Definition: drvbase.h:640
float edgeG() const
Definition: drvbase.h:644
static unsigned int & totalNumberOfPages()
Definition: drvbase.cpp:1676
unsigned int currentPageNumber
Definition: drvbase.h:374
void startup(bool mergelines)
Definition: drvbase.cpp:330
const basedrawingelement & pathElement(unsigned int index) const
Definition: drvbase.cpp:407
virtual void Restore()
Definition: drvbase.cpp:1038
void setCurrentFontName(const char *const Name, bool is_non_standard_font)
Definition: drvbase.cpp:654
const char ** d_argv
Definition: drvbase.h:367
showtype currentShowType() const
Definition: drvbase.h:633
unsigned int d_argc
Definition: drvbase.h:366
unsigned int currentNr() const
Definition: drvbase.h:642
void setCurrentFontFullName(const char *const Name)
Definition: drvbase.cpp:665
static void SetVerbose(bool param)
Definition: drvbase.cpp:1708
const RSString outFileName
Definition: drvbase.h:362
virtual bool textCanBeMerged(const TextInfo &text1, const TextInfo &text2) const
Definition: drvbase.cpp:436
void setCurrentWidthParams(const float ax, const float ay, const int Char, const float cx, const float cy, const float x_end=0.0f, const float y_end=0.0f)
Definition: drvbase.cpp:640
virtual ~drvbase()
Definition: drvbase.cpp:232
class PsToEditOptions & globaloptions
Definition: drvbase.h:368
void endClipPath(cliptype clipmode)
Definition: drvbase.cpp:1017
const char * getLineTypeName() const
Definition: drvbase.h:521
linetype currentLineType() const
Definition: drvbase.h:634
char * driveroptions
Definition: drvbase.h:387
void showOrMergeText()
Definition: drvbase.cpp:543
virtual void finalize()
Definition: drvbase.cpp:342
static bool verbose
Definition: drvbase.h:385
static bool Verbose()
Definition: drvbase.cpp:1707
static FontMapper & theFontMapper()
Definition: drvbase.cpp:1698
void guess_linetype()
Definition: drvbase.cpp:848
void flushOutStanding(flushmode_t flushmode=flushall)
Definition: drvbase.cpp:1042
const DriverDescription & driverdesc
Definition: drvbase.h:340
virtual void Save()
Definition: drvbase.cpp:1033
PathInfo PI1
Definition: drvbase.h:388
SaveRestoreInfo * currentSaveLevel
Definition: drvbase.h:381
ostream & errf
Definition: drvbase.h:360
float edgeB() const
Definition: drvbase.h:645
float currentMiterLimit() const
Definition: drvbase.h:637
void dumpImage()
Definition: drvbase.cpp:908
static RSString & pstoeditDataDir()
Definition: drvbase.cpp:1689
static BBox * bboxes()
Definition: drvbase.cpp:1668
bool close_output_file_and_reopen_in_binary_mode()
Definition: drvbase.cpp:973
bool page_empty
Definition: drvbase.h:386
void show_or_convert_path()
Definition: drvbase.cpp:521
void setCurrentShowType(const showtype how)
Definition: drvbase.h:547
const char * dashPattern() const
Definition: drvbase.h:650
const char * defaultFontName
Definition: drvbase.h:376
ProgramOptions * DOptions_ptr
Definition: drvbase.h:342
static bool use_fake_version_and_date
Definition: drvbase.h:431
bool domerge
Definition: drvbase.h:375
void dumpRearrangedPaths()
Definition: drvbase.cpp:931
const RSString & getPageSize() const
Definition: drvbase.cpp:270
float fillG() const
Definition: drvbase.h:647
float edgeR() const
Definition: drvbase.h:643
void setCurrentFontFamilyName(const char *const Name)
Definition: drvbase.cpp:660
void setCurrentLineWidth(const float linewidth)
Definition: drvbase.h:528
void setCurrentLineCap(const unsigned int capType)
Definition: drvbase.h:544
void dumpPath(bool doFlushText=true)
Definition: drvbase.cpp:1064
unsigned int currentLineCap() const
Definition: drvbase.h:635
bool isPolygon() const
Definition: drvbase.h:638
cliptype
Definition: drvbase.h:163
void flushTextBuffer(bool useMergeBuffer)
Definition: drvbase.cpp:532
static RSString DateString()
Definition: drvbase.cpp:283
flushmode_t
Definition: drvbase.h:553
@ flushtext
Definition: drvbase.h:553
@ flushpath
Definition: drvbase.h:553
@ flushall
Definition: drvbase.h:553
ostream & outf
Definition: drvbase.h:359
void setCurrentFontAngle(float value)
Definition: drvbase.cpp:680
virtual void show_image(const PSImage &)
Definition: drvbase.h:616
TextInfo lastTextInfo_
Definition: drvbase.h:398
PathInfo clippath
Definition: drvbase.h:388
void beginClipPath()
Definition: drvbase.cpp:1006
bool is_a_rectangle() const
Definition: drvbase.cpp:685
PathInfo * last_currentPath
Definition: drvbase.h:390
virtual void ClipPath(cliptype clipmode)
Definition: drvbase.cpp:1028
virtual void show_rectangle(const float llx, const float lly, const float urx, const float ury)
Definition: drvbase.cpp:467
PSImage imageInfo
Definition: drvbase.h:344
void simulate_fill()
Definition: fillpoly.cpp:491
virtual bool textIsWorthToPrint(const RSString &thetext) const
Definition: drvbase.cpp:425
float fillR() const
Definition: drvbase.h:646
virtual void show_text(const TextInfo &textinfo)
Definition: drvbase.cpp:457
unsigned int currentLineJoin() const
Definition: drvbase.h:636
static RSString & pstoeditHomeDir()
Definition: drvbase.cpp:1682
virtual bool pathsCanBeMerged(const PathInfo &p1, const PathInfo &p2) const
Definition: drvbase.cpp:359
void showpage()
Definition: drvbase.cpp:350
void addtopath(basedrawingelement *newelement)
Definition: drvbase.cpp:1216
const BBox & getCurrentBBox() const
Definition: drvbase.cpp:315
void pushHEXText(const char *const thetext, const float x, const float y, const char *const glyphnames=nullptr)
Definition: drvbase.cpp:625
linetype
Definition: drvbase.h:164
@ solid
Definition: drvbase.h:164
@ dotted
Definition: drvbase.h:164
@ dashdotdot
Definition: drvbase.h:164
@ dashdot
Definition: drvbase.h:164
@ dashed
Definition: drvbase.h:164
PathInfo PI2
Definition: drvbase.h:388
void removeFromElementFromPath()
Definition: drvbase.cpp:1211
virtual void open_page()=0
float currentLineWidth() const
Definition: drvbase.h:641
@ fill
Definition: drvbase.h:162
@ stroke
Definition: drvbase.h:162
@ eofill
Definition: drvbase.h:162
PathInfo * currentPath
Definition: drvbase.h:389
TextInfo textInfo_
Definition: drvbase.h:395
PathInfo * lastPath
Definition: drvbase.h:394
void setCurrentFontWeight(const char *const Name)
Definition: drvbase.cpp:670
void setCurrentFontSize(const float Size)
Definition: drvbase.cpp:675
void add_to_page()
Definition: drvbase.cpp:763
unsigned int nrOfSubpaths() const
Definition: drvbase.cpp:919
PathInfo * outputPath
Definition: drvbase.h:392
virtual void close_page()=0
virtual void show_path()=0
void pushText(const size_t len, const char *const thetext, const float x, const float y, const char *const glyphnames=nullptr)
Definition: drvbase.cpp:586
float fillB() const
Definition: drvbase.h:648
unsigned int & numberOfElementsInPath()
Definition: drvbase.h:513
#define n
Definition: t4ht.c:1290
#define b
Definition: jpegint.h:372
#define STRICMP
Definition: cppcomp.h:257
#define DLLEXPORT
Definition: cppcomp.h:38
#define C_ostrstream
Definition: cppcomp.h:184
#define C_istrstream
Definition: cppcomp.h:183
static void strcpy_s(char *de, size_t de_size, const char *so)
Definition: cppcomp.h:302
@ closepath
Definition: cscommands.h:4
#define strrchr
Definition: detex.c:67
#define dummy
Definition: devnag.c:313
ostream & operator<<(ostream &out, const basedrawingelement &elem)
Definition: drvbase.cpp:1287
DescriptionRegister * globalRp
Definition: drvbase.cpp:1565
static void splitFullFileName(const char *const fullName, RSString &pathName, RSString &baseName, RSString &fileExt)
Definition: drvbase.cpp:44
static unsigned short hexdecode(char high, char low)
Definition: drvbase.cpp:621
DescriptionRegister * getglobalRp()
Definition: drvbase.cpp:1567
const char *(* makeColorNameType)(float r, float g, float b)
Definition: drvbase.h:714
static constexpr unsigned int drvbaseVersion
Definition: drvbase.h:66
drawingelement<(unsigned int) 1, lineto > Lineto
Definition: drvbase.h:866
@ lineto
Definition: drvbase.h:749
@ moveto
Definition: drvbase.h:749
constexpr unsigned int maxPages
Definition: drvbase.h:76
const unsigned int maxcolors
Definition: drvbase.h:715
bool(* checkfuncptr)(void)
Definition: drvbase.h:945
drawingelement<(unsigned int) 1, moveto > Moveto
Definition: drvbase.h:865
const unsigned int maxElements
Definition: drvbase.h:81
int dummy
Definition: dummy.c:29
int v
Definition: dviconv.c:10
int strcmp()
Definition: coll.cpp:143
char * strcpy()
FILE * outf
Definition: dvibook.c:99
char * temp
Definition: dvidvi.c:137
static void
Definition: fpif.c:118
mpz_t * f
Definition: gen-fib.c:34
#define xp
#define c(n)
Definition: gpos-common.c:150
#define a(n)
Definition: gpos-common.c:148
#define d(n)
Definition: gpos-common.c:151
FILE * out
Definition: hbf2gf.c:286
assert(pcxLoadImage24((char *)((void *) 0), fp, pinfo, hdr))
Char inFileName[2000]
Definition: bzip2recover.c:62
Char outFileName[2000]
Definition: bzip2recover.c:63
small capitals from c petite p
Definition: afcover.h:72
small capitals from c petite p scientific i
Definition: afcover.h:80
void exit()
#define true
Definition: ftrandom.c:51
#define false
Definition: ftrandom.c:52
kerning y
Definition: ttdriver.c:212
#define PACKAGE_VERSION
Definition: config.h:105
int int double double double char double points
Definition: gdfx.h:18
int int cy
Definition: gdfx.h:13
int cx
Definition: gdfx.h:12
char currentPath[MAXPATHLEN]
Definition: mpeg.c:195
static char getType(Unicode c)
double atof(const char *)
#define fabs(x)
Definition: cpascal.h:211
Code related to section numbers
Definition: comm-w2c.h:144
#define unused
Definition: main.c:29
long time_t
Definition: types.h:18
#define extension(a0)
Definition: tif_fax3.c:201
struct tm * localtime(const time_t *const timep)
Definition: localtime.c:1332
static struct tm tm
Definition: localtime.c:216
int low
Definition: combiners.h:904
int high
Definition: combiners.h:904
#define x_offset
Definition: mfluac.c:342
#define y_offset
Definition: mfluac.c:343
unsigned short hextoint(const char hexchar)
Definition: miscutil.cpp:238
char * cppstrdup(const char *const src, const size_t addon=0)
Definition: miscutil.h:74
float x
Definition: cordic.py:15
union value value
Definition: obx.h:44
#define Char
Definition: p2c.h:237
#define min(a, b)
Definition: pbmplus.h:223
#define max(a, b)
Definition: pbmto4425.c:11
char * filename[256]
Definition: pbmtopk.c:46
float ** matrix()
static struct Point current
Definition: picttoppm.c:134
const char * suffix
Definition: pkg_icu.cpp:27
#define index(s, c)
Definition: plain2.h:351
static int size
Definition: ppmlabel.c:24
int g
Definition: ppmqvga.c:68
int r
Definition: ppmqvga.c:68
static int offset
Definition: ppmtogif.c:642
time_t time()
#define registry(L)
Definition: minilua.c:416
RETTYPE mp_ptr mp_size_t mp_srcptr dp
Definition: sec_div.c:70
Definition: drvbase.h:119
Definition: t1part.c:39
float y_
Definition: drvbase.h:91
Point()
Definition: point.hh:11
Point transform(const float matrix[6]) const
Definition: drvbase.cpp:1572
float x_
Definition: drvbase.h:89
linetype currentLineType
Definition: drvbase.h:244
void copyInfo(const PathInfo &p)
Definition: drvbase.cpp:1264
showtype currentShowType
Definition: drvbase.h:243
unsigned int subpathoffset
Definition: drvbase.h:256
void addtopath(basedrawingelement *newelement, ostream &errf)
Definition: drvbase.cpp:1224
unsigned int numberOfElementsInPath
Definition: drvbase.h:255
unsigned int nr
Definition: drvbase.h:248
bool pathWasMerged
Definition: drvbase.h:267
basedrawingelement ** path
Definition: drvbase.h:252
float currentLineWidth
Definition: drvbase.h:259
RSString currentFontName
Definition: drvbase.h:176
RSString currentFontFullName
Definition: drvbase.h:179
RSString currentFontFamilyName
Definition: drvbase.h:178
RSString thetext
Definition: drvbase.h:173
float currentFontSize
Definition: drvbase.h:181
float y() const
Definition: drvbase.h:168
RSString currentFontUnmappedName
Definition: drvbase.h:177
float x() const
Definition: drvbase.h:167
float x_end() const
Definition: drvbase.h:171
RSString currentFontWeight
Definition: drvbase.h:180
float currentFontAngle
Definition: drvbase.h:182
bool is_non_standard_font
Definition: drvbase.h:175
RSString glyphnames
Definition: drvbase.h:174
float y_end() const
Definition: drvbase.h:172
Definition: mendex.h:20
Definition: tpic.c:45
Definition: dvips.h:235
int j
Definition: t4ht.c:1589
*job_name strlen((char *) job_name) - 4)
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 verbose
Definition: jpeg.c:35
struct Point Point
Definition: obx.h:51
#define nullptr
Definition: xetex.h:75