New Upstream Release - r-bioc-affxparser
Ready changes
Summary
Merged new upstream version: 1.72.0 (was: 1.70.0).
Diff
diff --git a/DESCRIPTION b/DESCRIPTION
index deaed91..9b31acf 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,5 +1,5 @@
Package: affxparser
-Version: 1.70.0
+Version: 1.72.0
Depends: R (>= 2.14.0)
Suggests: R.oo (>= 1.22.0), R.utils (>= 2.7.0), AffymetrixDataTestFiles
Title: Affymetrix File Parsing SDK
@@ -21,9 +21,9 @@ BugReports: https://github.com/HenrikBengtsson/affxparser/issues
biocViews: Infrastructure, DataImport, Microarray,
ProprietaryPlatforms, OneChannel
git_url: https://git.bioconductor.org/packages/affxparser
-git_branch: RELEASE_3_16
-git_last_commit: d2779bf
-git_last_commit_date: 2022-11-01
-Date/Publication: 2022-11-01
+git_branch: RELEASE_3_17
+git_last_commit: db85207
+git_last_commit_date: 2023-04-25
+Date/Publication: 2023-04-25
NeedsCompilation: yes
-Packaged: 2022-11-01 20:46:55 UTC; biocbuild
+Packaged: 2023-04-25 20:08:12 UTC; biocbuild
diff --git a/NEWS b/NEWS
deleted file mode 100644
index 759587a..0000000
--- a/NEWS
+++ /dev/null
@@ -1,1793 +0,0 @@
-Package: affxparser
-===================
-
-Version: 1.69.1 [2022-04-28]
-
-BUG FIXES:
-
- * Ported bug fix from affxparser 1.68.1.
-
-
-Version: 1.69.0 [2022-04-26]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.16 for R-devel.
-
-
-Version: 1.68.1 [2022-04-28]
-
-BUG FIXES:
-
- * affxparser (>= 1.67.1) failed to install with R built with '-fpic'
- flag. The symptom was a linking error 'ld: 000.init.o: relocation
- R_X86_64_32 against `.rodata' can not be used when making a shared
- object; recompile with -fPIC collect2: error: ld returned 1 exit
- status'.
-
-
-Version: 1.68.0 [2022-04-26]
-
- * The version number was bumped for the Bioconductor release version,
- which is now BioC 3.15 for R (>= 4.2.0).
-
-
-Version: 1.67.1 [2022-03-23]
-
-SIGNIFICANT CHANGES:
-
- * This packages requires R (>= 4.0.0) when build on MS Windows. This is
- due to the added support for UCRT on MS Windows, which is required for
- the upcoming R 4.2.0.
-
-SOFTWARE QUALITY:
-
- * Updates to build package from source on MS Windows with UCRT. Thanks
- to Tomas Kalibera for the contribution.
-
- * Now registering native routines - apparently never happened before.
-
-
-Version: 1.67.0 [2021-10-27]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.15 for R-devel.
-
-
-Version: 1.66.0 [2021-10-27]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.14 for R (>= 4.1.1).
-
-
-Version: 1.65.3 [2021-09-22]
-
-SOFTWARE QUALITY:
-
- * Making sure all pathnames are of length 100 or shorter.
-
-
-Version: 1.65.2 [2021-09-22]
-
-SOFTWARE QUALITY:
-
- * Now properly registering native routines.
-
-
-Version: 1.65.1 [2021-09-09]
-
-BUG FIXES:
-
- * The package did not install on macOS with the M1 chip with error: "use of
- undeclared identifier 'finite'; did you mean 'isfinite'?". This issue goes
- back to 2014, when macOS produced "warning: 'finite' is deprecated: first
- deprecated in OS X 10.9 [-Wdeprecated-declarations]. isOk = finite(x);".
- Patched by using isfinite() instead of finite().
-
-
-Version: 1.64.0 [2021-05-19]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.13 for R (>= 4.0.3).
-
-
-Version: 1.62.0 [2020-10-27]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.12 for R (>= 4.0.0).
-
-
-Version: 1.60.0 [2020-04-27]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.11 for R (>= 4.0.0).
-
-
-Version: 1.58.0 [2019-10-29]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.10 for R (>= 3.6.1).
-
-
-Version: 1.56.0 [2019-05-02]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.9 for R (>= 3.6.0).
-
-
-Version: 1.55.0 [2018-10-30]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.9 for R (>= 3.6.0).
-
-
-Version: 1.54.0 [2018-10-30]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.8 for R (>= 3.5.0).
-
-
-Version: 1.53.2 [2018-10-22]
-
-DOCUMENTATION:
-
- * Link to Affx Fusion SDK archive on GitHub.
-
- * Spell corrections.
-
-
-Version: 1.53.1 [2018-08-28]
-
- * Updated installation instructions in README.md.
-
-
-Version: 1.53.0 [2018-04-30]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.8 for R (>= 3.5.0).
-
-
-Version: 1.52.0 [2018-04-30]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.7 for R (>= 3.5.0).
-
-
-Version: 1.51.0 [2017-10-30]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.7 for R (>= 3.5.0).
-
-
-Version: 1.50.0 [2017-10-30]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.6 for R (>= 3.4.0).
-
-
-Version: 1.49.0 [2017-04-23]
-
- * The version number was bumped for the Bioconductor devel version, which is
- now BioC 3.6 for R (>= 3.4.0).
-
-
-Version: 1.48.0 [2017-04-23]
-
- * The version number was bumped for the Bioconductor release version, which is
- now BioC 3.5 for R (>= 3.4.0).
-
-
-Version: 1.47.0 [2016-10-18]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 3.5 for R (>= 3.4.0).
-
-
-Version: 1.46.0 [2016-10-18]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 3.4 for R (>= 3.3.1).
-
-
-Version: 1.45.1 [2016-09-16]
-
-CODE REFACTORING:
-
- * Using c(x,y) instead of append(x,y) internally.
-
- * CLEANUP: Dropped obsolete src/R_affx_test.*cmdline.cpp files.
-
-
-Version: 1.45.0 [2015-05-03]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 3.4 for R (>= 3.3.0).
-
-
-Version: 1.44.0 [2015-05-03]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 3.3 for R (>= 3.3.0).
-
-
-Version: 1.43.2 [2016-04-05]
-
-NEW FEATURES:
-
- * WINDOWS: Package now compiles with both the old gcc-4.6.3 toolchain as well
- as the new gcc-4.9.3 toolchain - introduced in R (>= 3.3.0). Thanks to
- Jim Hester and Dan Tenenbaum for help with this.
-
-
-Version: 1.43.1 [2016-02-28]
-
-NEW FEATURES:
-
- * The DLL is now unloaded when the package is unloaded.
-
-BUG FIXES:
-
- * Fixed a bug related to including <R.h> and extern C, reported by
- Brian Ripley.
-
-
-Version: 1.43.0 [2015-10-23]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 3.3 for R (>= 3.3.0).
-
-
-Version: 1.42.0 [2015-10-13]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 3.2 for R (>= 3.2.2).
-
-
-Version: 1.41.7 [2015-09-14]
-
-CODE REFACTORING:
-
- * ROBUSTNESS: Explicitly importing core R functions.
-
-
-Version: 1.41.6 [2015-07-29]
-
-NOTES:
-
- * Updated the BiocViews field of DESCRIPTION.
-
-
-Version: 1.41.5 [2015-06-17]
-
-NOTES:
-
- * New maintainer address (in all fields).
-
-
-Version: 1.41.4 [2015-05-26]
-
-NOTES:
-
- * New maintainer address.
-
-
-Version: 1.41.3 [2015-05-13]
-
-SIGNIFICANT CHANGES:
-
- * AVAILABILITY: Removed requirement for 'GNU make'.
-
-
-Version: 1.41.2 [2015-05-05]
-
-BUG FIXES:
-
- * readCelHeader() and readCel() would core dump R/affxparser if trying to
- read multi-channel CEL files (Issue #16). Now an error is generated instead.
- Multi-channel CEL files (e.g. Axiom) are not supported by affxparser.
- Thanks to Kevin McLoughlin (Lawrence Livermore National Laboratory, USA)
- for reporting on this.
-
- * readCelHeader() and readCel() on corrupt CEL files could core dump
- R/affparser (Issues #13 & #15). Now an error is generated instead. Thanks
- to Benilton Carvalho (Universidade Estadual de Campinas, Sao Paulo, Brazil)
- and Malte Bismarck (Martin Luther University of Halle-Wittenberg) for
- reports.
-
-
-Version: 1.41.1 [2015-04-25]
-
-BUG FIXES:
-
- * Native functions R_affx_GetCHPEntries() and R_affx_ReadCHP() had unbalanced
- PROTECT()/UNPROTECT(). Also, native R_affx_GetCHPGenotypingResults() had
- two non-PROTECT():ed usages of mkString(). Thanks to Tomas Kalibera at
- Northeastern University for reporting on this.
-
-
-Version: 1.41.0 [2015-04-16]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 3.2 for R (>= 3.3.0).
-
-
-Version: 1.40.0 [2015-04-16]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 3.1 for R (>= 3.2.0).
-
-
-Version: 1.39.5 [2015-04-15]
-
-SIGNIFICANT CHANGES:
-
- * Removed 'SystemRequirements: GNU make'.
-
-NEW FEATURES:
-
- * ROBUSTNESS: Now readPgfEnv()/readPgf() validated 'indices', iff possible.
-
- * Now readPgfEnv()/readPgf() coerces some header fields to integers, iff they
- exists, specifically 'num-cols', 'num-rows', 'probesets', and 'datalines'.
-
- * CLEANUP: Package no longer gives readBin() warnings on "'signed = FALSE' is
- only valid for integers of sizes 1 and 2".
-
-BUG FIXES:
-
- * convertCel() on a CCG/v1 CEL file could give "Error in sprintf(
- "GridCorner%s=%d %d\n" ... invalid format '%d' ...)". Added package test
- for convertCel(), but in this particular case it would not have cought it
- because it only happened for chip types of particular dimensions. Thanks
- to Malte Bismarck at UK Halle (Germany) for reporting on this.
-
-
-Version: 1.39.4 [2015-01-18]
-
-SIGNIFICANT CHANGES:
-
- * ROBUSTNESS: 'GNU make' is a SystemRequirements (for now).
-
-CODE REFACTORING:
-
- * ROBUSTNESS: Did not seem to be needed, but package is now a good citizen
- and do library.dynlib.unload() when unloaded.
-
- * Now using requireNamespace() instead of require().
-
- * Internal cleanup of native code.
-
-
-Version: 1.39.3 [2014-11-26]
-
-BUG FIXES:
-
- * readPgf() and readPgfEnv() failed to read all units (probesets) on some
- systems. Extensive package tests have been added to test this and other
- cases. Thanks to Grischa Toedt at EMBL Germany for reporting on,
- troubleshooting, and helping out with patches for this bug.
-
-
-Version: 1.39.2 [2014-10-28]
-
-BUG FIXES:
-
- * The range test of argument 'units' to readCdf() and readCdfQc() was never
- performed due to a typo, meaning it was possible to request units out of
- range. Depending on system this could result in either a core dump or
- random garbage read for the out of range units.
-
-SOFTWARE QUALITY:
-
- * ROBUSTNESS: Added package system tests for out of range 'units' and
- 'indices' arguments for most read functions.
-
-
-Version: 1.39.1 [2014-10-26]
-
-NEW FEATURES:
-
- * ROBUSTNESS: Now all methods gives an informative error message if zero
- elements are requested, i.e. via zero-length argument 'indices' or 'units'
- that is not NULL. Previously this case would access all values just like
- NULL does.
-
- * ROBUSTNESS: Now readCelRectangle() gives an informative error message if
- argument 'xrange' or 'yrange' is not of length two.
-
-BUG FIXES:
-
- * readPgf() and readPgfEnv() would give an error if argument 'indices' was
- specifies as a double rather than as an integer vector.
-
-
-Version: 1.39.0 [2014-10-13]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 3.1 for R (>= 3.2.0).
-
-
-Version: 1.38.0 [2014-10-13]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 3.0 for R (>= 3.1.1).
-
-
-Version: 1.37.2 [2014-09-28]
-
-NOTES:
-
- * Minor modifications due to the move to GitHub.
-
-
-Version: 1.37.1 [2014-08-25]
-
-SOFTWARE QUALITITY:
-
- * Removed R CMD check NOTEs that appeared in recent R versions.
-
-
-Version: 1.37.0 [2014-04-11]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version, which
- is now BioC 2.15 for R (>= 3.1.0).
-
-
-Version: 1.36.0 [2014-04-11]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 2.14 for R (>= 3.1.0).
-
-
-Version: 1.35.3 [2014-02-28]
-
-NOTES:
-
- * Same updates as in release v1.34.2.
-
-
-Version: 1.35.2 [2014-02-28]
-
-SOFTWARE QUALITY:
-
- * Patches to Fusion SDK based on clang v3.4.
-
-
-Version: 1.35.1 [2014-02-27]
-
-NOTES:
-
- * Same updates as in release v1.34.1.
-
-
-Version: 1.35.0 [2013-10-14]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.34.2 [2014-02-28]
-
-CODE REFACTORING:
-
- * CLEANUP: Removed unnecessary usage of ':::'.
-
-
-Version: 1.34.1 [2014-02-27]
-
-BUG FIXES:
-
- * readCelUnits() could throw 'Error in vector("double", nbrOfCells *
- nbrOfArrays) : vector size cannot be NA. In addition: Warning message: In
- nbrOfCells * nbrOfArrays : NAs produced by integer overflow' when reading
- from a large number of arrays and/or a large number of units. Previously
- the limit of nbrOfCells*nbrOfArrays was .Machine$integer.max (=2147483647),
- whereas now it is .Machine$double.xmax (=1.797693e+308). Thanks to
- Damian Plichta at the Technical University of Denmark for reporting on this.
-
-
-Version: 1.34.0 [2012-10-14]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version, which
- is now BioC 2.13 for R (>= 3.0.0).
-
-
-Version: 1.33.4 [2013-09-23]
-
-PERFORMANCE:
-
- * Package now uses which() instead of whichVector() of 'R.utils'. Before
- R (< 2.11.0), which() used to be 10x slower than whichVector(), but now
- it's 3x faster.
-
-
-Version: 1.33.3 [2013-06-29]
-
-NOTES:
-
- * Same updates as in release v1.32.3.
-
-
-Version: 1.33.2 [2013-05-25]
-
-NOTES:
-
- * Same updates as in release v1.32.2.
-
-
-Version: 1.33.1 [2013-05-20]
-
-NOTES:
-
- * Same updates as in release v1.32.1.
-
-
-Version: 1.33.0 [2013-04-03]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.32.3 [2013-06-29]
-
-BUG FIXES:
-
- * Since affxparser 1.30.2/1.31.2 (r72352; 2013-01-08), writeCdf() would
- incorrectly encode the unit types, iff the input 'cdf' argument specified
- them as integers, e.g. as done by writeCdf() for AffyGenePDInfo in
- aroma.affymetrix. More specifically, the unit type index would be off by
- one, e.g. an 'expression' unit (1) would be encoded as an 'unknown' unit (0)
- and so on. On the other hand, if they were specified by their unit-type
- names (e.g. 'expression') the encoding should still be correct, e.g. if
- input is constructed from readCdf() of affxparser. Thanks to Guido Hooiveld
- at Wageningen UR (The Netherlands) for reporting on this.
-
- * Similarily, writeCdf() has "always", at least affxparser 1.7.4 since
- (r21888; 2007-01-09), encoded unit directions and QC unit types incorrectly,
- iff they were specified as integers.
-
-
-Version: 1.32.2 [2013-05-25]
-
-PEFORMANCE:
-
- * Removed all remaining gc() calls.
-
- * Replaced all rm() calls with NULL assignments.
-
-
-Version: 1.32.1 [2013-05-20]
-
-CODE REFACTORING:
-
- * CRAN POLICY: Now all Rd \usage{} lines are at most 90 characters long.
-
-
-Version: 1.32.0 [2013-04-03]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version.
-
-
-Version: 1.31.4 [2013-03-19]
-
-CODE REFACTORING:
-
- * Made example(invertMap) a bit faster so 'R CMD check' won't complain.
-
-
-Version: 1.31.3 [2013-03-18]
-
-CODE REFACTORING:
-
- * Internal isPackageLoaded() of findFiles() no longer uses defunct
- manglePackageName() function.
-
-
-Version: 1.31.2 [2013-01-07]
-
-NOTES:
-
- * Same updates as in release v1.30.2.
-
-
-Version: 1.31.1 [2012-10-18]
-
-NEW FEATURES:
-
- * Now compareCdfs() gives a more precise 'reason' attribute when there is a
- difference in (regular or QC) units. It narrows down the first unit that
- differs and reports it unit number.
-
-
-Version: 1.31.0 [2012-10-01]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.30.2 [2013-01-07]
-
-BUG FIXES:
-
- * writeCdf() did not encode unit types as decoded by readCdf(). Unit type
- 'unknown' was incorrectly encoded such that readCdf() would decode it as
- 'copynumber'. Also, unit types 'genotypingcontrol' and 'expressioncontrol'
- where not encoded at all.
-
-
-Version: 1.30.0 [2012-10-01]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor release version.
-
-
-Version: 1.29.13 [2012-09-26]
-
-NEW FEATURES:
-
- * Added argument 'cdf=FALSE' to createCel(). Note, the previous implementation
- corresponded to cdf=TRUE.
-
-SOFTWARE QUALITY:
-
- * ROBUSTNESS: Now createCel() validates/sets CEL header field 'total' based on
- 'cols' and 'rows'.
-
- * ROBUSTNESS: Added a system test for validating that the package can write
- and read a CEL. The test is spawning of another R process so that the test
- is robust against core dumps.
-
-
-Version: 1.29.12 [2012-09-12]
-
-DOCUMENTATION:
-
- * Updated one Rd link.
-
-
-Version: 1.29.11 [2012-09-01]
-
-NEW FEATURES:
-
- * Added argument 'aliases' to arrangeCelFilesByChipType(), e.g.
- arrangeCelFilesByChipType(..., aliases=c("Focus"="HG-Focus")).
-
-BUG FIXES:
-
- * arrangeCelFilesByChipType(pathnames) assumed 'pathnames' were files in
- the current directory.
-
-
-Version: 1.29.10 [2012-08-29]
-
-CODE REFACTORING:
-
- * Updated some internal files used solely for maintainance.
-
-
-Version: 1.29.9 [2012-08-29]
-
-BUG FIXES:
-
- * The move to Fusion SDK 1.1.2 caused the package to not compile on Windows.
-
-
-Version: 1.29.8 [2012-08-14]
-
-SIGNIFICANT CHANGES:
-
- * Upgraded to Fusion SDK 1.1.2.
-
-
-Version: 1.29.7 [2012-08-14]
-
-CODE REFACTORING:
-
- * Rearranged patchdir.
-
-
-Version: 1.29.6 [2012-06-26]
-
- * Same updates as in v1.28.1.
-
-
-Version: 1.29.5 [2012-06-19]
-
-NEW FEATURES:
-
- * Added arrangeCelFilesByChipType() for moving CEL files to subdirectories
- named according to their chip types, which can be useful when for instance
- downloading GEO data sets.
-
-
-Version: 1.29.4 [2012-06-14]
-
-NEW FEATURES:
-
- * readPgfEnv(..., indices=NULL) no longer gives a warning.
-
- * Updated the error messages for the CLF and PGF parsers.
-
-
-Version: 1.29.3 [2012-05-22]
-
-SOFTWARE QUALITY:
-
- * Now system test tests/testWriteAndReadEmptyCdf.R generates an error that is
- detected and reported by R CMD check.
-
-
-Version: 1.29.2 [2012-05-22]
-
-SOFTWARE QUALITY:
-
- * GENERALIZATION: Now system tests that launch another R process no longer
- assumes R is on the OS's search path.
-
-CODE REFACTORING:
-
- * ROBUSTNESS/CRAN POLICY: readCel() and readCelUnits() are no longer calling
- .Internal(qsort(...)).
-
-
-Version: 1.29.1 [2012-05-18]
-
-BUG FIXES:
-
- * Replaced several throw() with stop(), because the former assumes that
- R.methodsS3 is loaded, which it may not be.
-
-SOFTWARE QUALITY:
-
- * ROBUSTNESS: Added a system test for validating that the package can write
- and read a CDF. The test is spawning of another R process so that the test
- is robust against core dumps.
-
-
-Version: 1.29.0 [2012-03-30]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.28.1 [2012-06-26]
-
- * COMPATIBILITY: Now package compile also with gcc/g++ 4.7. Thanks Dan
- Tenenbaum (Bioconductor Core Team), Fred Hutchinson Cancer Research Center,
- USA for this.
-
-
-Version: 1.28.0 [2012-03-30]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor 2.10 release version.
-
-
-Version: 1.27.5 [2012-03-19]
-
-SOFTWARE QUALITY:
-
- * ROBUSTNESS: Now the native code throws R errors, instead of printing an
- error message to stdout/stderr and then returning null, that is translated
- to errors at the R level.
-
-
-Version: 1.27.4 [2012-03-05]
-
-BUG FIXES:
-
- * affxparser would not build on Windows with the new Rtools toolchain
- (Rtools 2.15.0.1915-1919).
-
-
-Version: 1.27.3 [2011-11-18]
-
-SOFTWARE QUALITY:
-
- * ROBUSTNESS: Added sanity checks asserting that the internal readers did
- indeed read something and not just returned NULL. It should be very
- unlikely that this occurs, but there is still a small risk that after
- asserting that a file exists, but before the internal Fusion SDK parsers
- access the file, the file has been removed.
-
-
-Version: 1.27.1 [2011-11-01]
-
-NOTES:
-
- * Same updates as in v1.26.1.
-
-
-Version: 1.27.0 [2011-10-31]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.26.4 [2012-03-06]
-
-BUG FIXES:
-
- * affxparser would not build on Windows with the new Rtools toolchain
- (Rtools 2.15.0.1915-1919), which is for R (> 2.14.1), i.e. also for
- R 2.14.2 (but not 2.14.1). This is the same bug fix that was first
- done in v1.27.4.
-
-
-Version: 1.26.2 [2011-11-16]
-
-NOTES:
-
- * The version number was bumped by Bioconductor to trigger a build.
-
-
-Version: 1.26.1 [2011-11-01]
-
-BUG FIXES:
-
- * FIX: Fixed warning on "In readBin(con, what = "integer", size = 4, n = 1,
- signed = FALSE, 'signed = FALSE' is only valid for integers of sizes 1
- and 2" that some read methods would generated.
-
-
-Version: 1.26.0 [2011-10-31]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor 2.9 release version.
-
-
-Version: 1.25.1 [2011-09-27]
-
-NOTES:
-
- * Maintainer email was updated.
-
-
-Version: 1.25.0 [2011-04-13]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.24.0 [2011-04-13]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor 2.8 release version.
-
-
-Version: 1.23.3 [2011-02-22]
-
-DOCUMENTATION:
-
- * DOCUMENTATION: Added a section on what it means by setting a new (different)
- chip type for the output in convertCel().
-
-BUG FIXES:
-
- * The internal .unwrapDatHeaderString(), used by convertCel() among others,
- would throw "Internal error: Failed to extract 'pixelRange' and 'sampleName'
- from DAT header. They became identical: ..." in case the DAT header of the
- CEL file did not contain all fields. The function has now been updated to
- be more forgiving and robust so that missing values are returned for such
- fields instead.
-
-
-Version: 1.23.2 [2011-02-15]
-
-DOCUMENTATION:
-
- * Added a clarification to the help page on 'Cell coordinates and cell
- indices' that the convention in affxparser is to use one-based cell indices,
- because they are more convenient to use in R. In order to clearly
- distinguish these from the redudant zero-based index values that also exist
- in CDF file, an additional section was added on that topic. Moreover, help
- pages for methods querying CDF files are now referring to the above page,
- where applicable. Thanks to William Mounts (Pfizer) and Todd Allen for
- pointing out these ambiguities in the documentation.
-
-
-Version: 1.23.1 [2010-12-16]
-
-CODE REFACTORING:
-
- * ROBUSTNESS: Now matrix(...) is used instead of .Interal(matrix(...)).
-
-
-Version: 1.23.0 [2010-10-17]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.22.0 [2010-10-17]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor 2.7 release version.
-
-
-Version: 1.21.1 [2010-10-05]
-
-NEW FEATURES:
-
- * Now readCdfDataFrame() also returns the cell field 'expos'.
-
-
-Version: 1.21.0 [2010-04-22]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor devel version.
-
-
-Version: 1.20.0 [2010-04-22]
-
-NOTES:
-
- * The version number was bumped for the Bioconductor 2.6 release version.
-
-
-Version: 1.19.6 [2010-02-11]
-
-BUG FIXES:
-
- * More fixes.
-
-
-Version: 1.19.5 [2010-02-09]
-
-BUG FIXES:
-
- * More fixes.
-
-
-Version: 1.19.4 [2010-02-06]
-
-BUG FIXES:
-
- * More fixes.
-
-
-Version: 1.19.3 [2010-02-06]
-
-BUG FIXES:
-
- * A couple of patches to Fusion SDK courtesy of Brian Ripley; they are needed
- for Windows (64).
-
-
-Version: 1.19.2 [2010-02-02]
-
-BUG FIXES:
-
- * A fix to the Windows build.
-
-
-Version: 1.19.1 [2010-01-29]
-
-SIGNIFICANT CHANGES:
-
- * Updated Fusion SDK to 1.1.0.
-
-
-Version: 1.19.0 [2009-10-27]
-
-NOTES:
-
- * Devel version bumped because of the new Bioconductor release.
-
-
-Version: 1.18.0 [2009-10-27]
-
-NOTES:
-
- * Release version bumped because of the new Bioconductor 2.5 release.
-
-
-Version: 1.17.5 [2009-09-22]
-
-DOCUMENTATION:
-
- * Fixed broken link in an Rd file.
-
-
-Version: 1.17.4 [2009-09-21]
-
-NEW FEATURES:
-
- * Added parseDatHeaderString(), which in combination with readCelHeader() can
- be used to infer the timestamp in the header of a CEL file.
-
-
-Version: 1.17.3 [2009-05-29]
-
-NEW FEATURES:
-
- * Added applyCdfGroupFields() and cdfSetDimension().
-
-
-Version: 1.17.2 [2009-02-20]
-
-BUG FIXES:
-
- * readChp() would crash (segmentation fault) for (at least) some CHP files
- for GenomeWideSNP_5 generated by Affymetrix Power Tools.
-
- * Updated compareCels() to work with new readCelHeader().
-
-
-Version: 1.17.1 [2009-05-09]
-
-NEW FEATURES:
-
- * Now readCelHeader() also reads DAT headers from Calvin CEL files.
-
-
-Version: 1.17.0 [2009-04-20]
-
-NOTES:
-
- * Devel version bumped because of the new Bioconductor release.
-
-
-Version: 1.16.0 [2009-04-20]
-
-NOTES:
-
- * Release version bumped because of the new Bioconductor 2.4 release.
-
-
-Version: 1.15.6 [2009-02-20]
-
-NEW FEATURES:
-
- * Added optional argument 'newChipType' to convertCel() for overriding the
- default chip type. Useful for updating the formal chip type of old CEL
- files.
-
-CODE REFACTORING:
-
- * Removed all gc() calls in convertCel().
-
-
-Version: 1.15.5 [2009-02-14]
-
- * Updated Fusion from 1.11 to 1.12.
-
-BUG FIXES:
-
- * Fixed a bug related to SET_VECTOR_ELT/SET_ELEMENR used on strings, which
- adffected readChp().
-
- * Fixed a bug related to naming of the list structures (we assigned a list
- instead of a character as the name. Affected readCdfUnits() and
- readCdfCellIndices().
-
- * Fixed a bug in the example for readCdfUnitsWriteMap(): the package
- AffymetrixDataTestFiles was misspelled, so the tests were never run.
-
-
-Version: 1.15.4 [2009-02-10]
-
-BUG FIXES:
-
- * readCcg() and readCcgHeader() no longer give warnings on 'truncating string
- with embedded nul' in rawToChar(). These warnings made no difference, but
- were annoying.
-
-
-Version: 1.15.3 [2009-01-22]
-
-DOCUMENTATION:
-
- * Fixed a minor Rd problem.
-
-
-Version: 1.15.2 [2008-12-30]
-
-NOTES:
-
- * Same bug fix as in release version v1.14.2.
-
-
-Version: 1.15.1 [2008-12-04]
-
-NOTES:
-
- * Same bug fix as in release version v1.14.1.
-
-
-Version: 1.15.0 [2008-10-21]
-
-NOTES:
-
- * Devel version bumped because of the new Bioconductor release.
-
-
-Version: 1.14.2 [2008-12-30]
-
-BUG FIXES:
-
- * readChp() would not read all data. Thanks Gabor Csardi for reporting this
- and providing a patch.
-
-
-Version: 1.14.1 [2008-12-04]
-
-BUG FIXES:
-
- * When the CDF file is on a Windows network, that is, has a pathname starting
- with '//' or '\\', then the 'chiptype' reported by readCdfHeader() contains
- a path component as well. This seems to be due to a bug in Fusion SDK.
-
-
-Version: 1.14.0 [2008-10-21]
-
-NOTES:
-
- * Release version bumped because of the new Bioconductor 2.3 release.
-
-
-Version: 1.13.8 [2008-08-28]
-
- * Fix of include statements in Fusion, details are described in
- inst/info/changes2fusion.txt. This fixes an issue with GCC 4.3.
-
-
-Version: 1.13.7 [2008-08-23]
-
-PERFORMANCE:
-
- * readCcg() is substantially faster after removing all gc() calls.
-
-
-Version: 1.13.6 [2008-08-21]
-
-SIGNIFICANT CHANGES:
-
- * Updated Fusion SDK from 1.0.10b (Jan 2008) to 1.0.11 (July 2008).
-
-
-Version: 1.13.x [2008-08-14]
-
-DOCUMENTATION:
-
- * Fixed typos and incorrect equation in help page '2. Cell coordinates and
- cell indices'.
-
-
-Version: 1.13.5 [2008-08-09]
-
-NEW FEATURES:
-
- * Made readCdf() recognize more unit types.
-
-BUG FIXES:
-
- * writeCdf() would write 'CustomSeq' units as 'Tag' units, and vice versa.
- This means that *ASCII* CDFs containing such units and converted with
- convertCdf() would be have an incorrect unit type for these units.
- Also, unit type 'Copy Number' is reported as "copynumber" and no longer
- as "unknown".
-
- * The increase of the internal buffer for reading the 'refseq' header field
- of ASCII CDFs that was done in 1.11.2 was mistakenly undone in 1.13.3.
-
-
-Version: 1.13.4 [2008-08-05]
-
-DOCUMENTATION:
-
- * Now help(createCel) (and its example) clarifies that the template CEL header
- can be of v3 (ASCII), v4 (binary;XDA), or v1 (binary;Calvin).
-
-CODE REFACTORING:
-
- * Renamed the HISTORY file to NEWS.
-
-
-Version: 1.13.3 [2008-05-20]
-
-BUG FIXES:
-
- * Now writeTpmap() works.
-
-
-Version: 1.13.2 [2008-05-08]
-
-NOTES:
-
- * Copied all updates in v1.12.2 (release) to v1.13.2 (devel).
-
-
-Version: 1.13.1 [2008-05-02]
-
-NOTES:
-
- * Copied all updates in v1.12.1 (release) to v1.13.1 (devel).
-
-
-Version: 1.13.0 [2008-04-29]
-
-NOTES:
-
- * Devel version bumped because of the new Bioconductor release.
-
-
-Version: 1.12.2 [2008-05-09]
-
-BUG FIXES:
-
- * affxparser 1.12.1 would not build on Windows. Fix by Martin Morgan.
-
-
-Version: 1.12.1 [2008-05-02]
-
-NEW FEATURES:
-
- * Added readChp(). Contribution by Robert Gentleman.
-
-
-Version: 1.12.0 [2008-04-29]
-
-NOTES:
-
- * Release version bumped because of the new Bioconductor 2.2 release.
-
-
-Version: 1.11.13 [2008-04-13]
-
-SIGNIFICANT CHANGES:
-
- * Updated to Fusion SDK v1.0.10b.
-
-
-Version: 1.11.? [2008-03-06]
-
-BUG FIXES:
-
- * Regular expression pattern 'a-Z' is illegal on (at least) some locale, e.g.
- 'C' (where 'A-z' works). The only way to specify the ASCII alphabet is to
- list all characters explicitly, which we now do in all methods of the
- package. See the r-devel thread "invalid regular expression '[a-Z]'" on
- 2008-03-05 for details.
-
-
-Version: 1.11.6 [2008-03-04]
-
-NEW FEATURES:
-
- * Added trial versions of readClf() and readPgf().
-
-
-Version: 1.11.5 [2008-02-29]
-
-NEW FEATURES:
-
- * Updated cdfMergeStrands() to merge any even number of groups, not only units
- with two or four group pairs.
-
-BUG FIXES:
-
- * The code in findFiles() for testing if R.utils is loaded or not was not
- correct making it fail to detect R.utils.
-
-
-Version: 1.11.4 [2008-02-20]
-
-NEW FEATURES:
-
- * Added argument 'allFiles=TRUE' to findFiles().
-
- * Updated readCcg() according to the newer file format specifications. Now it
- is possible to do low-level reading of copy-number CNCHP files generated by
- the Affymetrix Genotype Console v2.
-
-CODE REFACTORING:
-
- * Now findFiles() and hence findCdf() is only utilizing the R.utils package
- if it is already loaded. It will no longer try to load R.utils.
-
-
-Version: 1.11.3 [2007-12-01]
-
-NEW FEATURES:
-
- * Removed argument 'reorder' from readCel() and readCelUnits() since its name
- was misleading (the returned value was identical regardless of 'reorder',
- but the reading speed was faster when 'reorder' was TRUE, which is how it
- is now hardwired).
-
-
-Version: 1.11.2 [2007-11-06]
-
-BUG FIXES:
-
- * Reading a CDF that has a 'refseq' header field longer than 65,000 symbols
- would crash R, e.g. when reading certain CDFs for resequencing chip types.
- A buffer size internal of Fusion SDK was increased from 65,000 to 400,000
- bytes. Thanks Wenyi Wang for reporting this.
-
- * Argument 'verbose' of tpmap2bpmap() was not coerced to integer before
- passed to the native code.
-
- * The internal .initializeCdf(), used when creating new CDFs, had an error
- message refering to an invalid 'qcUnitLengths' when it was supposed to be
- 'unitLengths'. Thanks Elizabeth Purdom for reporting this.
-
-CODE REFACTORING:
-
- * created a Makefile in /inst/info for comparing Fusion SDK with affxparser.
-
-
-Version: 1.11.1 [2007-10-12]
-
-NEW FEATURES:
-
- * convertCel() will no longer generate a warning if the corresponding CDF
- file was not found.
-
-BUG FIXES:
-
- * For some Calvin CEL files the CEL header does not contain "parent parameter"
- 'affymetrix-dat-header' but only parameter 'affymetrix-partial-dat-header'.
- In that case convertCel() would throw an error about 'sprintf("DatHeader=
- %s\n", datHeader)'. Now a "fake" DAT header is created from the partial
- one. If neither is found, a slightly more informative exception is thrown.
-
-
-Version: 1.11.0 [2007-10-02]
-
-NOTES:
-
- * Version bumped because of the new Bioconductor release.
-
-
-Version: 1.9.5 [2007-09-16]
-
-NEW FEATURES:
-
- * Added argument 'recursive=TRUE' to findCdf(). Note, the current working
- directory is always scanned first, but never recursively (unless explicitly
- added to the search path). This is to avoid "endless" scans in case the
- search path has not been set.
-
- * findFiles() now do a breath-first search in lexicographic order.
-
- * Removed default search paths cdf/ and data/cdf/. We do not want to enforce
- a standard path.
-
-CODE REFACTORING:
-
- * Now the examples (as well as test scripts) utilize data available in the
- new Bioconductor AffymetrixDataTestFiles package. This means that
- 'R CMD check' now runs much more tests, which is good.
-
- * CLEAN UP: Removed many of the old testscripts/ scripts. They are now under
- tests/.
-
-BUG FIXES:
-
- * findFiles() was not robust against broken Unix links.
-
- * If the destination file already existed, convertCel() would correctly
- detect that, but would report the name of the source file.
-
-
-Version: 1.9.4 [2007-08-25]
-
-SIGNIFICANT CHANGES:
-
- * Updated to Fusion SDK v1.0.9.
-
-
-Version: 1.9.3 [2007-08-16]
-
-NOTES:
-
- * See updated made to release v1.8.3 below.
-
- * The only difference between v1.9.3 and v1.8.3 is the modification of
- findCdf() in v1.9.2.
-
-
-Version: 1.9.2 [2007-07-27]
-
-SIGNIFICANT CHANGES:
-
- * This BioC devel version requires R v2.6.0 due to a change of how strings
- are handled in C by Bioconductor.
-
-NEW FEATURES:
-
- * Modified findCdf() such that it is possible to set an alternative function
- for how CDFs are located.
-
-
-Version: 1.8.3 [2007-08-16] (also added to devel v1.9.3)
-
-NEW FEATURES:
-
- * Made several updated so that affxparser better supports CEL files in the
- new Command Console (Calvin) file format:
- - isCelFile() recognized Calvin CEL files.
- - convertCel() can convert a Calvin CEL files into v4 CEL files.
- - writeCelHeader() can write v4 CEL headers given Calvin CEL header.
-
-CODE REFACTORING:
-
- * Added internal/private function to read Command Console Generic (CCG) files,
- also known as Calvin files. Note, these functions are currently *not*
- utilizing the Fusion SDK library, but are instead written from scratch
- based on the Affymetrix' file format definitions.
-
-
-Version: 1.8.2 [2007-08-01]
-
-PERFORMANCE:
-
- * Optimized writeCdfHeader() for memory. For a CDF with 1,200,000+ units
- just writing the unit names would consume 1-1.5GB RAM. Now it writes unit
- names in chunks keeping the memory overhead around 100-200MB.
-
- * Made convertCdf() more memory efficient.
-
-BUG FIXES:
-
- * error message in isCelFile() when the file was not found was broken.
-
-
-Version: 1.8.1 [2007-07-26]
-
-SIGNIFICANT CHANGES:
-
- * Now affxparser install on OSX with PPC.
-
-
-Version: 1.8.0 [2007-04-24]
-
-NOTES:
-
- * The version number was bumped up with the Bioconductor release.
-
-
-Version: 1.7.5 [2007-03-08]
-
-NEW FEATURES:
-
- * Added argument 'truncateGroupNames' to readCdfGroupNames() which defaults
- to TRUE for backward compatibility. When TRUE, any prefix of group names
- identical to the unit name will be stripped of the group names.
-
-
-Version: 1.7.4 [2007-02-21]
-
-NEW FEATURES:
-
- * Now readCelUnits() can handle unit groups for which there are no probes,
- e.g. when stratifying on PM in a unit containing only MMs.
-
- * Added writeCdfHeader(), writeCdfQcUnits() and writeCdfUnits(). These are
- all used by writeCdf(). They also make it possible to write a CDF in chunks
- in order to for instance convertCdf() in constant memory.
-
-
-Version: 1.7.3 [2007-01-05]
-
-NEW FEATURES:
-
- * Added cdfAddPlasqTypes().
-
- * Now readCdfUnits(..., readDirections=TRUE) also returns group directions.
-
- * Now readCdf() reads all unit and group fields by default.
-
- * In addition to optimizing IO time, read maps can be used to unrotate CEL
- data rotated by the dChip software. For more information, see help on
- "Cell-index maps for reading and writing".
-
-BUG FIXES:
-
- * Using read maps for readCel() would give an error saying the read map is
- invalid even when it is not.
-
-
-Version: 1.7.2 [2006-12-10]
-
-NEW FEATURES:
-
- * Added argument 'isPm' to readCdf().
-
-BUG FIXES:
-
- * readCdfUnits() and readCdfCellIndices() with stratifyBy="mm" would return
- the same as stratifyBy="pm". Options "pm" and "pmmm" are unaffected by
- this fix.
-
-
-Version: 1.7.1 [2006-11-03]
-
-SIGNIFICANT CHANGES:
-
- * Updated to Fusion SDK v1.0.8.
-
- * Windows build change: The Windows version is building against the Windows
- code of Fusion SDK not the POSIX code. In order to do this we have had to
- patch the preprocessor code in several of the Fusion SDK source-code files,
- which has to be redone manually whenever Fusion is updated. Starting with
- this version, we instead set the _MSC_VER flag used in the Fusion code to
- indicate Windows (set by the Microsoft Visual C++ compiler). Since we are
- using MINGW this flag is obviously not set. Faking _MSC_VER this way leaves
- us only having to patch one single file in the Fusion release instead of
- 10-20. Hopefully there are no other side effects.
-
-BUG FIXES:
-
- * In Fusion SDK (v1.0.5) that previous version of affxparser used, a CDF file
- was never closed on Unix platforms (this bug was not in the Windows
- version). Since Fusion allocated memory for the complete CDF (even if a
- subset is only read), this caused the memory usage to blow up, when reading
- the same or different CDF files multiple times, because the memory was
- never deallocated. Thanks Seth Falcon and Ken Simpson for reporting this
- problem.
-
-
-Version: 1.7.0 [2006-10-25]
-
-NEW FEATURES:
-
- * Made readCelUnits() a bit more clever if a 'cdf' structure with only cell
- indices is passed. Then all fields are just indices and one can call unlist
- immediately. This speeds things up a bit.
-
-BUG FIXES:
-
- * writeCdf() would create an invalid CDF file if there were no QC units.
- This would in turn make readCdfUnits() etc core dump.
-
- * Similar to get bug fix in the C code for readCelHeader(), much of the
- C-level code for CDF (and BPMAP) files assumes that the strings from Fusion
- SDK have a null terminator. At least for CDF unit names, this is not
- necessarily the case. To be on the safe side, for all retrieved Fusion SDK
- strings we now make sure there is a null terminator before converting it
- into an R string. Thanks to Ken Simpson at WEHI for all the troubleshooting.
-
- * Because of the above bug fix, the ASCII mouse exon CDF can now be converted
- into a valid binary CDF.
-
-NOTES:
-
- * The devel version number was bumped up with the Bioconductor release.
-
-
-Version: 1.6.0 [2006-10-03]
-
-NOTES:
-
- * The version number was bumped up with the Bioconductor release.
-
-
-Version: 1.5.x [2006-09-21]
-
-NEW FEATURES:
-
- * Added compareCdfs() to verify that a converted CDF is correct.
-
- * Added convertCdf() utilizing the new writeCdf().
-
- * Added trial version of createCel().
-
- * Added trial version of updateCelUnits().
-
-BUG FIXES:
-
- * The C code for readCelHeader() did not allocate space for the string null
- terminator for the header elements that originates from wide C++ string.
- This caused readCelHeader() to contain string elements with random
- characters at the end.
-
- * nrows and ncols were swapped in the CDF header when written by writeCdf().
- This was missed because all tested CDFs were square.
-
-SOFTWARE QUALITY:
-
- * Now the package passes R CMD check without warnings.
-
-
-Version: 1.5.4 [2006-08-18]
-
-SIGNIFICANT CHANGES:
-
- * Updated Fusion SDK to version 1.0.7.
-
-BUG FIXES:
-
- * The new implementation of updateCel() utilizing raw vectors was not correct;
- extra zeros was written too. The example code of updateCel() reveals such
- errors much easier now.
-
- * updateCel() would in some cases give "Error: subscript out of bounds" when
- writing the last chunk.
-
-
-Version: 1.5.3 [2006-07-24]
-
-NEW FEATURES:
-
- * Added functional prototype of updateCel() to *update* binary (v4) CEL files.
- Currently, the code does make use the Fusion SDK. There is currently no
- writeCel() to create a CEL file from scratch. However, with the auxillary
- function copyCel() one can copy an existing CEL file and then update that
- one. Thus, it is now possible to write, say, normalized probe intensities
- to a CEL file. Note that this is only a first prototype and functions may
- change in a future release.
-
-PERFORMANCE:
-
- * Improved the speed of updateCel() substantially by first working with raw
- vector in memory and then write binary data to file. Data is also written
- in chunks (instead of all at once), to minimize the memory overhead of
- using raw vectors, which is especially important for the larger chips,
- e.g. 500K.
-
-
-Version: 1.5.2 [2006-05-31]
-
-SIGNIFICANT CHANGES:
-
- * Updated Fusion SDK to version 1.0.6.
-
-
-Version: 1.5.1 [2006-05-15]
-
-SIGNIFICANT CHANGES:
-
- * Updated Fusion SDK to version 1.0.5.
-
-BUG FIXES:
-
- * Made small changes to the SDK to allow it to compile under Mac OS X with
- GCC-4.0.3 shipping with R-2.3.0.
-
-CODE REFACTORING:
-
- * Made changes to the Makevars, _Makefile and cmd_line scripts.
-
-
-Version: 1.5.0 [2006-05-12]
-
-NEW FEATURES:
-
- * Added cdfOrderBy() and cdfOrderColumnsBy() for restructuring group fields
- in a CDF list structure. Added cdfGetGroups() too.
-
-DOCUMENTATION:
-
- * Cleaned up and restructured the help pages; several Rd pages are now made
- "internal" so they do not show up on the help index page. Instead they are
- accessable from within other help pages (if you browsing via HTML that is).
- Added a help page on common terms.
-
- * Added a bit more documentation on how to set the default CDF path.
-
-BUG FIXES:
-
- * On Linux 64-bit read CEL intensities would all be zero. This was due to
- compiler settings in the Fusion SDK package, which is circumvented by
- gcc compile it with a lower optimization level.
-
- * When argument 'cdf' was a CDF list structure with elements 'type' or
- 'direction', readCelUnits() would not read the correct cells because the
- values of 'type' and 'direction' would be included in the extracted list
- of cell indices.
-
-
-Version: 1.4.0 [2006-04-27]
-
-NOTES:
-
- * The stable version for Bioconductor 1.8.
-
-
-Version: 1.3.3 [2006-04-15]
-
-SIGNIFICANT CHANGES:
-
- * The package now works on Solaris.
-
- * Updated the Fusion SDK to version 1.0.5 (an unofficial release).
-
-NEW FEATURES:
-
- * New method readCdfCellIndices(), which is a 5-10 times faster special-case
- implementation of readCdfUnits() to read cell indices only.
-
- * Renamed readCdfUnitsMap() to readCdfUnitsWriteMap().
-
- * New method invertMap() for fast inversion of maps.
-
-PERFORMANCE:
-
- * Now readCelUnits() sorts the cell indices before reading the data from each
- file. This minimizes the amount of jumping around in the CEL files
- resulting in a speed-up of about 5-10 times.
-
-KNOWN ISSUES:
-
- * KNOWN BUGS: The weird bug as in v1.3.2 remains with the new Fusion SDK,
- R v2.3.0 beta (2006-04-10 r37715) on WinXP. Internally readCdfCellIndices()
- replaces readCdfUnits(), but the error is still the same.
-
-
-Version: 1.3.2 [2006-03-28]
-
-SIGNIFICANT CHANGES:
-
- * All cell and unit indices are now starting from one and not from zero.
- This change requires that all code that have been using a previous version
- of this package have to be updated!
-
-NEW FEATURES:
-
- * New methods readCelRectangle() to read probe signals from a specify area
- of the chip.
-
-DOCUMENTATION:
-
- * Added extensive help on cell coordinates and cell indices as well read and
- write maps.
-
-KNOWN ISSUES:
-
- * KNOWN BUGS: At least on WinXP, heavy use of readCelUnits() will sooner or
- later core dump R; it seems to be a memory related from that occur when
- reading the CDF and extracting the name of the unit. However, when
- "torturing" readCdfUnits() the crash won't happen so it might be that
- readCel() does something. Have not tried on other platforms.
-
-PERFORMANCE:
-
- * Further optimization in speed and memory for most methods.
-
-
-Version: 1.3.1
-
- * ...
diff --git a/NEWS.md b/NEWS.md
new file mode 100644
index 0000000..ef22eb0
--- /dev/null
+++ b/NEWS.md
@@ -0,0 +1,1803 @@
+# Version 1.17.2 [2023-04-23]
+
+### Bug Fixes
+
+ * fix to `src/_mingw.h` provided by Tomas Kalibera.
+
+# Version 1.71.1 [2023-04-04]
+
+### Bug Fixes
+
+ * Fix two instances of "watching polymorphic type 'class Except' by
+ value [-Wcatch-value=]" compiler warnings.
+
+
+# Version 1.71.0 [2022-11-01]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.17 for R devel.
+
+
+# Version 1.70.0 [2022-11-01]
+
+## Miscellaneous
+
+ * Remove extra backslash escaping in a few help pages.
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.16 for R (>= 4.2.2).
+
+
+# Version 1.69.1 [2022-04-28]
+
+## Bug Fixes
+
+ * Ported bug fix from **affxparser** 1.68.1.
+
+
+# Version 1.69.0 [2022-04-26]
+
+
+# Version 1.68.1 [2022-04-28]
+
+## Bug Fixes
+
+ * **affxparser** (>= 1.67.1) failed to install with R built with
+ `-fpic` flag. The symptom was a linking error `ld: 000.init.o:
+ relocation R_X86_64_32 against '.rodata' can not be used when
+ making a shared object; recompile with -fPIC collect2: error: ld
+ returned 1 exit status`.
+
+
+# Version 1.68.0 [2022-04-26]
+
+
+# Version 1.67.1 [2022-03-23]
+
+## Significant Changes
+
+ * This packages requires R (>= 4.0.0) when build on MS Windows. This
+ is due to the added support for UCRT on MS Windows, which is
+ required for the upcoming R 4.2.0.
+
+## Software Quality
+
+ * Updates to build package from source on MS Windows with UCRT.
+ Thanks to Tomas Kalibera for the contribution.
+
+ * Now registering native routines - apparently never happened before.
+
+
+# Version 1.67.0 [2021-10-27]
+
+
+# Version 1.66.0 [2021-10-27]
+
+
+# Version 1.65.3 [2021-09-22]
+
+## Software Quality
+
+ * Making sure all pathnames are of length 100 or shorter.
+
+
+# Version 1.65.2 [2021-09-22]
+
+## Software Quality
+
+ * Now properly registering native routines.
+
+
+# Version 1.65.1 [2021-09-09]
+
+## Bug Fixes
+
+ * The package did not install on macOS with the M1 chip with error:
+ `use of undeclared identifier 'finite'; did you mean
+ 'isfinite'?`. This issue goes back to 2014, when macOS produced
+ `warning: 'finite' is deprecated: first deprecated in OS X 10.9
+ [-Wdeprecated-declarations]. isOk = finite(x);`. Patched by using
+ `isfinite()` instead of `finite()`.
+
+
+# Version 1.64.0 [2021-05-19]
+
+
+# Version 1.62.0 [2020-10-27]
+
+
+# Version 1.60.0 [2020-04-27]
+
+
+# Version 1.58.0 [2019-10-29]
+
+
+# Version 1.56.0 [2019-05-02]
+
+
+# Version 1.55.0 [2018-10-30]
+
+
+# Version 1.54.0 [2018-10-30]
+
+
+# Version 1.53.2 [2018-10-22]
+
+## Documentation
+
+ * Link to Affx Fusion SDK archive on GitHub.
+
+ * Spell corrections.
+
+
+# Version 1.53.1 [2018-08-28]
+
+
+# Version 1.53.0 [2018-04-30]
+
+
+# Version 1.52.0 [2018-04-30]
+
+
+# Version 1.51.0 [2017-10-30]
+
+
+# Version 1.50.0 [2017-10-30]
+
+
+# Version 1.49.0 [2017-04-23]
+
+
+# Version 1.48.0 [2017-04-23]
+
+
+# Version 1.47.0 [2016-10-18]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.5 for R (>= 3.4.0).
+
+
+# Version 1.46.0 [2016-10-18]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.4 for R (>= 3.3.1).
+
+
+# Version 1.45.1 [2016-09-16]
+
+## Code Refactoring
+
+ * Using `c(x,y)` instead of `append(x,y)` internally.
+
+ * CLEANUP: Dropped obsolete `src/R_affx_test.*cmdline.cpp` files.
+
+
+# Version 1.45.0 [2015-05-03]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.4 for R (>= 3.3.0).
+
+
+# Version 1.44.0 [2015-05-03]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.3 for R (>= 3.3.0).
+
+
+# Version 1.43.2 [2016-04-05]
+
+## New Features
+
+ * WINDOWS: Package now compiles with both the old gcc-4.6.3 toolchain
+ as well as the new gcc-4.9.3 toolchain - introduced in R (>=
+ 3.3.0). Thanks to Jim Hester and Dan Tenenbaum for help with this.
+
+
+# Version 1.43.1 [2016-02-28]
+
+## New Features
+
+ * The DLL is now unloaded when the package is unloaded.
+
+## Bug Fixes
+
+ * Fixed a bug related to including `<R.h>` and extern C, reported by
+ Brian Ripley.
+
+
+# Version 1.43.0 [2015-10-23]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.3 for R (>= 3.3.0).
+
+
+# Version 1.42.0 [2015-10-13]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.2 for R (>= 3.2.2).
+
+
+# Version 1.41.7 [2015-09-14]
+
+## Code Refactoring
+
+ * ROBUSTNESS: Explicitly importing core R functions.
+
+
+# Version 1.41.6 [2015-07-29]
+
+## Notes
+
+ * Updated the `BiocViews` field of DESCRIPTION.
+
+
+# Version 1.41.5 [2015-06-17]
+
+## Notes
+
+ * New maintainer address (in all fields).
+
+
+# Version 1.41.4 [2015-05-26]
+
+## Notes
+
+ * New maintainer address.
+
+
+# Version 1.41.3 [2015-05-13]
+
+## Significant Changes
+
+ * AVAILABILITY: Removed requirement for 'GNU make'.
+
+
+# Version 1.41.2 [2015-05-05]
+
+## Bug Fixes
+
+ * `readCelHeader()` and `readCel()` would core dump R/affxparser if
+ trying to read multi-channel CEL files (Issue #16). Now an error is
+ generated instead. Multi-channel CEL files (e.g. Axiom) are not
+ supported by **affxparser**. Thanks to Kevin McLoughlin (Lawrence
+ Livermore National Laboratory, USA) for reporting on this.
+
+ * `readCelHeader()` and `readCel()` on corrupt CEL files could core
+ dump R/affparser (Issues #13 & #15). Now an error is generated
+ instead. Thanks to Benilton Carvalho (Universidade Estadual de
+ Campinas, Sao Paulo, Brazil) and Malte Bismarck (Martin Luther
+ University of Halle-Wittenberg) for reports.
+
+
+# Version 1.41.1 [2015-04-25]
+
+## Bug Fixes
+
+ * Native functions `R_affx_GetCHPEntries()` and `R_affx_ReadCHP()`
+ had unbalanced `PROTECT()`/`UNPROTECT()`. Also, native
+ `R_affx_GetCHPGenotypingResults()` had two non-`PROTECT()`:ed
+ usages of `mkString()`. Thanks to Tomas Kalibera at Northeastern
+ University for reporting on this.
+
+
+# Version 1.41.0 [2015-04-16]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.2 for R (>= 3.3.0).
+
+
+# Version 1.40.0 [2015-04-16]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.1 for R (>= 3.2.0).
+
+
+# Version 1.39.5 [2015-04-15]
+
+## Significant Changes
+
+ * Removed `SystemRequirements: GNU make`.
+
+## New Features
+
+ * ROBUSTNESS: Now `readPgfEnv()`/`readPgf()` validated `indices`, iff
+ possible.
+
+ * Now `readPgfEnv()`/`readPgf()` coerces some header fields to
+ integers, iff they exists, specifically `num-cols`, `num-rows`,
+ `probesets`, and `datalines`.
+
+ * CLEANUP: Package no longer gives `readBin()` warnings on `'signed =
+ FALSE' is only valid for integers of sizes 1 and 2`.
+
+## Bug Fixes
+
+ * `convertCel()` on a CCG/v1 CEL file could give `Error in
+ sprintf("GridCorner%s=%d %d\n" ... invalid format '%d' ...)`.
+ Added package test for `convertCel()`, but in this particular case
+ it would not have cought it because it only happened for chip types
+ of particular dimensions. Thanks to Malte Bismarck at UK Halle
+ (Germany) for reporting on this.
+
+
+# Version 1.39.4 [2015-01-18]
+
+## Significant Changes
+
+ * ROBUSTNESS: 'GNU make' is a `SystemRequirements` (for now).
+
+## Code Refactoring
+
+ * ROBUSTNESS: Did not seem to be needed, but package is now a good
+ citizen and do `library.dynlib.unload()` when unloaded.
+
+ * Now using `requireNamespace()` instead of `require()`.
+
+ * Internal cleanup of native code.
+
+
+# Version 1.39.3 [2014-11-26]
+
+## Bug Fixes
+
+ * `readPgf()` and `readPgfEnv()` failed to read all units (probesets)
+ on some systems. Extensive package tests have been added to test
+ this and other cases. Thanks to Grischa Toedt at EMBL Germany for
+ reporting on, troubleshooting, and helping out with patches for
+ this bug.
+
+
+# Version 1.39.2 [2014-10-28]
+
+## Bug Fixes
+
+ * The range test of argument `units` to `readCdf()` and `readCdfQc()`
+ was never performed due to a typo, meaning it was possible to
+ request units out of range. Depending on system this could result
+ in either a core dump or random garbage read for the out of range
+ units.
+
+## Software Quality
+
+ * ROBUSTNESS: Added package system tests for out of range `units` and
+ `indices` arguments for most read functions.
+
+
+# Version 1.39.1 [2014-10-26]
+
+## New Features
+
+ * ROBUSTNESS: Now all methods gives an informative error message if
+ zero elements are requested, i.e. via zero-length argument
+ `indices` or `units` that is not NULL. Previously this case would
+ access all values just like NULL does.
+
+ * ROBUSTNESS: Now `readCelRectangle()` gives an informative error
+ message if argument `xrange` or `yrange` is not of length two.
+
+## Bug Fixes
+
+ * `readPgf()` and `readPgfEnv()` would give an error if argument
+ `indices` was specifies as a double rather than as an integer
+ vector.
+
+
+# Version 1.39.0 [2014-10-13]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 3.1 for R (>= 3.2.0).
+
+
+# Version 1.38.0 [2014-10-13]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 3.0 for R (>= 3.1.1).
+
+
+# Version 1.37.2 [2014-09-28]
+
+## Notes
+
+ * Minor modifications due to the move to GitHub.
+
+
+# Version 1.37.1 [2014-08-25]
+
+## Software Qualitity
+
+ * Removed `R CMD check` NOTEs that appeared in recent R versions.
+
+
+# Version 1.37.0 [2014-04-11]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version,
+ which is now Bioconductor 2.15 for R (>= 3.1.0).
+
+
+# Version 1.36.0 [2014-04-11]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 2.14 for R (>= 3.1.0).
+
+
+# Version 1.35.3 [2014-02-28]
+
+## Notes
+
+ * Same updates as in release v1.34.2.
+
+
+# Version 1.35.2 [2014-02-28]
+
+## Software Quality
+
+ * Patches to Fusion SDK based on clang v3.4.
+
+
+# Version 1.35.1 [2014-02-27]
+
+## Notes
+
+ * Same updates as in release v1.34.1.
+
+
+# Version 1.35.0 [2013-10-14]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.34.2 [2014-02-28]
+
+## Code Refactoring
+
+ * CLEANUP: Removed unnecessary usage of `:::`.
+
+
+# Version 1.34.1 [2014-02-27]
+
+## Bug Fixes
+
+ * `readCelUnits()` could throw `Error in vector("double",
+ nbrOfCells * nbrOfArrays) : vector size cannot be NA. In addition:
+ Warning message: In nbrOfCells * nbrOfArrays : NAs produced by
+ integer overflow` when reading from a large number of arrays and/or
+ a large number of units. Previously the limit of
+ `nbrOfCells*nbrOfArrays` was `.Machine$integer.max` (=2147483647),
+ whereas now it is `.Machine$double.xmax` (=1.797693e+308). Thanks
+ to Damian Plichta at the Technical University of Denmark for
+ reporting on this.
+
+
+# Version 1.34.0 [2012-10-14]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version,
+ which is now Bioconductor 2.13 for R (>= 3.0.0).
+
+
+# Version 1.33.4 [2013-09-23]
+
+## Performance
+
+ * Package now uses `which()` instead of `whichVector()` of
+ **R.utils**. Before R (< 2.11.0), `which()` used to be 10x slower
+ than `whichVector()`, but now it's 3x faster.
+
+
+# Version 1.33.3 [2013-06-29]
+
+## Notes
+
+ * Same updates as in release v1.32.3.
+
+
+# Version 1.33.2 [2013-05-25]
+
+## Notes
+
+ * Same updates as in release v1.32.2.
+
+
+# Version 1.33.1 [2013-05-20]
+
+## Notes
+
+ * Same updates as in release v1.32.1.
+
+
+# Version 1.33.0 [2013-04-03]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.32.3 [2013-06-29]
+
+## Bug Fixes
+
+ * Since **affxparser** 1.30.2/1.31.2 (r72352; 2013-01-08),
+ `writeCdf()` would incorrectly encode the unit types, iff the input
+ `cdf` argument specified them as integers, e.g. as done by
+ `writeCdf()` for `AffyGenePDInfo` in **aroma.affymetrix**. More
+ specifically, the unit type index would be off by one, e.g. an
+ `expression` unit (1) would be encoded as an `unknown` unit (0) and
+ so on. On the other hand, if they were specified by their
+ unit-type names (e.g. 'expression') the encoding should still be
+ correct, e.g. if input is constructed from `readCdf()` of
+ **affxparser**. Thanks to Guido Hooiveld at Wageningen UR (The
+ Netherlands) for reporting on this.
+
+ * Similarily, `writeCdf()` has "always", at least **affxparser**
+ 1.7.4 since (r21888; 2007-01-09), encoded unit directions and QC
+ unit types incorrectly, iff they were specified as integers.
+
+
+# Version 1.32.2 [2013-05-25]
+
+## Peformance
+
+ * Removed all remaining `gc()` calls.
+
+ * Replaced all `rm()` calls with NULL assignments.
+
+
+# Version 1.32.1 [2013-05-20]
+
+## Code Refactoring
+
+ * CRAN POLICY: Now all Rd `\usage{}` lines are at most 90 characters
+ long.
+
+
+# Version 1.32.0 [2013-04-03]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version.
+
+
+# Version 1.31.4 [2013-03-19]
+
+## Code Refactoring
+
+ * Made `example(invertMap)` a bit faster so `R CMD check` won't
+ complain.
+
+
+# Version 1.31.3 [2013-03-18]
+
+## Code Refactoring
+
+ * Internal `isPackageLoaded()` of `findFiles()` no longer uses
+ defunct `manglePackageName()` function.
+
+
+# Version 1.31.2 [2013-01-07]
+
+## Notes
+
+ * Same updates as in release v1.30.2.
+
+
+# Version 1.31.1 [2012-10-18]
+
+## New Features
+
+ * Now `compareCdfs()` gives a more precise `reason` attribute when
+ there is a difference in (regular or QC) units. It narrows down
+ the first unit that differs and reports it unit number.
+
+
+# Version 1.31.0 [2012-10-01]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.30.2 [2013-01-07]
+
+## Bug Fixes
+
+ * `writeCdf()` did not encode unit types as decoded by `readCdf()`.
+ Unit type `unknown` was incorrectly encoded such that `readCdf()`
+ would decode it as `copynumber`. Also, unit types
+ `genotypingcontrol` and `expressioncontrol` where not encoded at
+ all.
+
+
+# Version 1.30.0 [2012-10-01]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor release version.
+
+
+# Version 1.29.13 [2012-09-26]
+
+## New Features
+
+ * Added argument '`cdf=FALSE'` to `createCel()`. Note, the previous
+ implementation corresponded to `cdf=TRUE`.
+
+## Software Quality
+
+ * ROBUSTNESS: Now `createCel()` validates/sets CEL header field
+ `total` based on `cols` and `rows`.
+
+ * ROBUSTNESS: Added a system test for validating that the package can
+ write and read a CEL. The test is spawning of another R process so
+ that the test is robust against core dumps.
+
+
+# Version 1.29.12 [2012-09-12]
+
+## Documentation
+
+ * Updated one Rd link.
+
+
+# Version 1.29.11 [2012-09-01]
+
+## New Features
+
+ * Added argument `aliases` to `arrangeCelFilesByChipType()`, e.g.
+ `arrangeCelFilesByChipType(..., aliases=c("Focus"="HG-Focus"))`.
+
+## Bug Fixes
+
+ * `arrangeCelFilesByChipType(pathnames)` assumed `pathnames` were
+ files in the current directory.
+
+
+# Version 1.29.10 [2012-08-29]
+
+## Code Refactoring
+
+ * Updated some internal files used solely for maintainance.
+
+
+# Version 1.29.9 [2012-08-29]
+
+## Bug Fixes
+
+ * The move to Fusion SDK 1.1.2 caused the package to not compile on
+ Windows.
+
+
+# Version 1.29.8 [2012-08-14]
+
+## Significant Changes
+
+ * Upgraded to Fusion SDK 1.1.2.
+
+
+# Version 1.29.7 [2012-08-14]
+
+## Code Refactoring
+
+ * Rearranged `patchdir`.
+
+
+# Version 1.29.6 [2012-06-26]
+
+
+# Version 1.29.5 [2012-06-19]
+
+## New Features
+
+ * Added `arrangeCelFilesByChipType()` for moving CEL files to
+ subdirectories named according to their chip types, which can be
+ useful when for instance downloading GEO data sets.
+
+
+# Version 1.29.4 [2012-06-14]
+
+## New Features
+
+ * `readPgfEnv(..., indices=NULL)` no longer gives a warning.
+
+ * Updated the error messages for the CLF and PGF parsers.
+
+
+# Version 1.29.3 [2012-05-22]
+
+## Software Quality
+
+ * Now system test `tests/testWriteAndReadEmptyCdf.R` generates an
+ error that is detected and reported by `R CMD check`.
+
+
+# Version 1.29.2 [2012-05-22]
+
+## Software Quality
+
+ * GENERALIZATION: Now system tests that launch another R process no
+ longer assumes R is on the OS's search path.
+
+## Code Refactoring
+
+ * ROBUSTNESS/CRAN POLICY: `readCel()` and `readCelUnits()` are no
+ longer calling `.Internal(qsort(...))`.
+
+
+# Version 1.29.1 [2012-05-18]
+
+## Bug Fixes
+
+ * Replaced several `throw()` with `stop()`, because the former
+ assumes that **R.methodsS3** is loaded, which it may not be.
+
+## Software Quality
+
+ * ROBUSTNESS: Added a system test for validating that the package can
+ write and read a CDF. The test is spawning of another R process so
+ that the test is robust against core dumps.
+
+
+# Version 1.29.0 [2012-03-30]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.28.1 [2012-06-26]
+
+
+# Version 1.28.0 [2012-03-30]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor 2.10 release
+ version.
+
+
+# Version 1.27.5 [2012-03-19]
+
+## Software Quality
+
+ * ROBUSTNESS: Now the native code throws R errors, instead of
+ printing an error message to stdout/stderr and then returning null,
+ that is translated to errors at the R level.
+
+
+# Version 1.27.4 [2012-03-05]
+
+## Bug Fixes
+
+ * **affxparser** would not build on Windows with the new Rtools
+ toolchain (Rtools 2.15.0.1915-1919).
+
+
+# Version 1.27.3 [2011-11-18]
+
+## Software Quality
+
+ * ROBUSTNESS: Added sanity checks asserting that the internal readers
+ did indeed read something and not just returned NULL. It should be
+ very unlikely that this occurs, but there is still a small risk
+ that after asserting that a file exists, but before the internal
+ Fusion SDK parsers access the file, the file has been removed.
+
+
+# Version 1.27.1 [2011-11-01]
+
+## Notes
+
+ * Same updates as in v1.26.1.
+
+
+# Version 1.27.0 [2011-10-31]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.26.4 [2012-03-06]
+
+## Bug Fixes
+
+ * **affxparser** would not build on Windows with the new Rtools
+ toolchain (Rtools 2.15.0.1915-1919), which is for R (> 2.14.1),
+ i.e. also for R 2.14.2 (but not 2.14.1). This is the same bug fix
+ that was first done in v1.27.4.
+
+
+# Version 1.26.2 [2011-11-16]
+
+## Notes
+
+ * The version number was bumped by Bioconductor to trigger a build.
+
+
+# Version 1.26.1 [2011-11-01]
+
+## Bug Fixes
+
+ * FIX: Fixed warning on `In readBin(con, what = "integer", size = 4, n
+ = 1, signed = FALSE, 'signed = FALSE' is only valid for integers of
+ sizes 1 and 2` that some read methods would generated.
+
+
+# Version 1.26.0 [2011-10-31]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor 2.9 release
+ version.
+
+
+# Version 1.25.1 [2011-09-27]
+
+## Notes
+
+ * Maintainer email was updated.
+
+
+# Version 1.25.0 [2011-04-13]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.24.0 [2011-04-13]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor 2.8 release
+ version.
+
+
+# Version 1.23.3 [2011-02-22]
+
+## Documentation
+
+ * DOCUMENTATION: Added a section on what it means by setting a new
+ (different) chip type for the output in `convertCel()`.
+
+
+## Bug Fixes
+
+ * The internal `.unwrapDatHeaderString()`, used by `convertCel()`
+ among others, would throw `Internal error: Failed to extract
+ 'pixelRange' and 'sampleName' from DAT header. They became
+ identical: ...` in case the DAT header of the CEL file did not
+ contain all fields. The function has now been updated to be more
+ forgiving and robust so that missing values are returned for such
+ fields instead.
+
+
+# Version 1.23.2 [2011-02-15]
+
+## Documentation
+
+ * Added a clarification to the help page on 'Cell coordinates and
+ cell indices' that the convention in **affxparser** is to use
+ one-based cell indices, because they are more convenient to use in
+ R. In order to clearly distinguish these from the redudant
+ zero-based index values that also exist in CDF file, an additional
+ section was added on that topic. Moreover, help pages for methods
+ querying CDF files are now referring to the above page, where
+ applicable. Thanks to William Mounts (Pfizer) and Todd Allen for
+ pointing out these ambiguities in the documentation.
+
+
+# Version 1.23.1 [2010-12-16]
+
+## Code Refactoring
+
+ * ROBUSTNESS: Now `matrix(...)` is used instead of
+ `.Interal(matrix(...))`.
+
+
+# Version 1.23.0 [2010-10-17]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.22.0 [2010-10-17]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor 2.7 release
+ version.
+
+
+# Version 1.21.1 [2010-10-05]
+
+## New Features
+
+ * Now `readCdfDataFrame()` also returns the cell field `expos`.
+
+
+# Version 1.21.0 [2010-04-22]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor devel version.
+
+
+# Version 1.20.0 [2010-04-22]
+
+## Notes
+
+ * The version number was bumped for the Bioconductor 2.6 release
+ version.
+
+
+# Version 1.19.6 [2010-02-11]
+
+## Bug Fixes
+
+ * More fixes.
+
+
+# Version 1.19.5 [2010-02-09]
+
+## Bug Fixes
+
+ * More fixes.
+
+
+# Version 1.19.4 [2010-02-06]
+
+## Bug Fixes
+
+ * More fixes.
+
+
+# Version 1.19.3 [2010-02-06]
+
+## Bug Fixes
+
+ * A couple of patches to Fusion SDK courtesy of Brian Ripley; they
+ are needed for Windows (64).
+
+
+# Version 1.19.2 [2010-02-02]
+
+## Bug Fixes
+
+ * A fix to the Windows build.
+
+
+# Version 1.19.1 [2010-01-29]
+
+## Significant Changes
+
+ * Updated Fusion SDK to 1.1.0.
+
+
+# Version 1.19.0 [2009-10-27]
+
+## Notes
+
+ * Devel version bumped because of the new Bioconductor release.
+
+
+# Version 1.18.0 [2009-10-27]
+
+## Notes
+
+ * Release version bumped because of the new Bioconductor 2.5 release.
+
+
+# Version 1.17.5 [2009-09-22]
+
+## Documentation
+
+ * Fixed broken link in an Rd file.
+
+
+# Version 1.17.4 [2009-09-21]
+
+## New Features
+
+ * Added `parseDatHeaderString()`, which in combination with
+ `readCelHeader()` can be used to infer the timestamp in the header
+ of a CEL file.
+
+
+# Version 1.17.3 [2009-05-29]
+
+## New Features
+
+ * Added `applyCdfGroupFields()` and `cdfSetDimension()`.
+
+
+# Version 1.17.2 [2009-02-20]
+
+## Bug Fixes
+
+ * `readChp()` would crash (segmentation fault) for (at least) some
+ CHP files for GenomeWideSNP\_5 generated by Affymetrix Power Tools.
+
+ * Updated `compareCels()` to work with new `readCelHeader()`.
+
+
+# Version 1.17.1 [2009-05-09]
+
+## New Features
+
+ * Now `readCelHeader()` also reads DAT headers from Calvin CEL files.
+
+
+# Version 1.17.0 [2009-04-20]
+
+## Notes
+
+ * Devel version bumped because of the new Bioconductor release.
+
+
+# Version 1.16.0 [2009-04-20]
+
+## Notes
+
+ * Release version bumped because of the new Bioconductor 2.4 release.
+
+
+# Version 1.15.6 [2009-02-20]
+
+## New Features
+
+ * Added optional argument `newChipType` to `convertCel()` for
+ overriding the default chip type. Useful for updating the formal
+ chip type of old CEL files.
+
+
+## Code Refactoring
+
+ * Removed all `gc()` calls in `convertCel()`.
+
+
+# Version 1.15.5 [2009-02-14]
+
+
+# Version 1.15.4 [2009-02-10]
+
+## Bug Fixes
+
+ * `readCcg()` and `readCcgHeader()` no longer give warnings on
+ `truncating string with embedded nul in 'rawToChar()'`. These
+ warnings made no difference, but were annoying.
+
+
+# Version 1.15.3 [2009-01-22]
+
+## Documentation
+
+ * Fixed a minor Rd problem.
+
+
+# Version 1.15.2 [2008-12-30]
+
+## Notes
+
+ * Same bug fix as in release version v1.14.2.
+
+
+# Version 1.15.1 [2008-12-04]
+
+## Notes
+
+ * Same bug fix as in release version v1.14.1.
+
+
+# Version 1.15.0 [2008-10-21]
+
+## Notes
+
+ * Devel version bumped because of the new Bioconductor release.
+
+
+# Version 1.14.2 [2008-12-30]
+
+## Bug Fixes
+
+ * `readChp()` would not read all data. Thanks Gabor Csardi for
+ reporting this and providing a patch.
+
+
+# Version 1.14.1 [2008-12-04]
+
+## Bug Fixes
+
+ * When the CDF file is on a Windows network, that is, has a pathname
+ starting with `//` or `\\`, then the `chiptype` reported by
+ `readCdfHeader()` contains a path component as well. This seems to
+ be due to a bug in Fusion SDK.
+
+
+# Version 1.14.0 [2008-10-21]
+
+## Notes
+
+ * Release version bumped because of the new Bioconductor 2.3 release.
+
+
+# Version 1.13.8 [2008-08-28]
+
+
+# Version 1.13.7 [2008-08-23]
+
+## Performance
+
+ * `readCcg()` is substantially faster after removing all `gc()`
+ calls.
+
+
+# Version 1.13.6 [2008-08-21]
+
+## Significant Changes
+
+ * Updated Fusion SDK from 1.0.10b (Jan 2008) to 1.0.11 (July 2008).
+
+
+# Version 1.13 [2008-08-14]
+
+## Documentation
+
+ * Fixed typos and incorrect equation in help page '2. Cell
+ coordinates and cell indices'.
+
+
+# Version 1.13.5 [2008-08-09]
+
+## New Features
+
+ * Made `readCdf()` recognize more unit types.
+
+## Bug Fixes
+
+ * `writeCdf()` would write `CustomSeq` units as `Tag` units, and vice
+ versa. This means that _ASCII_ CDFs containing such units and
+ converted with `convertCdf()` would be have an incorrect unit type
+ for these units. Also, unit type 'Copy Number' is reported as
+ `"copynumber"` and no longer as `"unknown"`.
+
+ * The increase of the internal buffer for reading the `refseq` header
+ field of ASCII CDFs that was done in 1.11.2 was mistakenly undone
+ in 1.13.3.
+
+
+# Version 1.13.4 [2008-08-05]
+
+## Documentation
+
+ * Now `help(createCel)` (and its example) clarifies that the template
+ CEL header can be of v3 (ASCII), v4 (binary;XDA), or v1
+ (binary;Calvin).
+
+## Code Refactoring
+
+ * Renamed the `HISTORY` file to `NEWS`.
+
+
+# Version 1.13.3 [2008-05-20]
+
+## Bug Fixes
+
+ * Now `writeTpmap()` works.
+
+
+# Version 1.13.2 [2008-05-08]
+
+## Notes
+
+ * Copied all updates in v1.12.2 (release) to v1.13.2 (devel).
+
+
+# Version 1.13.1 [2008-05-02]
+
+## Notes
+
+ * Copied all updates in v1.12.1 (release) to v1.13.1 (devel).
+
+
+# Version 1.13.0 [2008-04-29]
+
+## Notes
+
+ * Devel version bumped because of the new Bioconductor release.
+
+
+# Version 1.12.2 [2008-05-09]
+
+## Bug Fixes
+
+ * **affxparser** 1.12.1 would not build on Windows. Fix by Martin
+ Morgan.
+
+
+# Version 1.12.1 [2008-05-02]
+
+## New Features
+
+ * Added `readChp()`. Contribution by Robert Gentleman.
+
+
+# Version 1.12.0 [2008-04-29]
+
+## Notes
+
+ * Release version bumped because of the new Bioconductor 2.2 release.
+
+
+# Version 1.11.13 [2008-04-13]
+
+## Significant Changes
+
+ * Updated to Fusion SDK v1.0.10b.
+
+
+# Version 1.11 [2008-03-06]
+
+## Bug Fixes
+
+ * Regular expression pattern `a-Z` is illegal on (at least) some
+ locale, e.g. `C` (where `A-z` works). The only way to specify the
+ ASCII alphabet is to list all characters explicitly, which we now
+ do in all methods of the package. See the r-devel thread "invalid
+ regular expression '[a-Z]'" on 2008-03-05 for details.
+
+
+# Version 1.11.6 [2008-03-04]
+
+## New Features
+
+ * Added trial versions of `readClf()` and `readPgf()`.
+
+
+# Version 1.11.5 [2008-02-29]
+
+## New Features
+
+ * Updated `cdfMergeStrands()` to merge any even number of groups, not
+ only units with two or four group pairs.
+
+## Bug Fixes
+
+ * The code in `findFiles()` for testing if **R.utils** is loaded or
+ not was not correct making it fail to detect **R.utils**.
+
+
+# Version 1.11.4 [2008-02-20]
+
+## New Features
+
+ * Added argument '`allFiles = TRUE'` to `findFiles()`.
+
+ * Updated `readCcg()` according to the newer file format
+ specifications. Now it is possible to do low-level reading of
+ copy-number CNCHP files generated by the Affymetrix Genotype
+ Console v2.
+
+
+## Code Refactoring
+
+ * Now `findFiles()` and hence `findCdf()` is only utilizing the
+ **R.utils** package if it is already loaded. It will no longer try
+ to load **R.utils**.
+
+
+# Version 1.11.3 [2007-12-01]
+
+## New Features
+
+ * Removed argument `reorder` from `readCel()` and `readCelUnits()`
+ since its name was misleading (the returned value was identical
+ regardless of `reorder`, but the reading speed was faster when
+ `reorder` was TRUE, which is how it is now hardwired).
+
+
+# Version 1.11.2 [2007-11-06]
+
+## Bug Fixes
+
+ * Reading a CDF that has a `refseq` header field longer than 65,000
+ symbols would crash R, e.g. when reading certain CDFs for
+ resequencing chip types. A buffer size internal of Fusion SDK was
+ increased from 65,000 to 400,000 bytes. Thanks Wenyi Wang for
+ reporting this.
+
+ * Argument `verbose` of `tpmap2bpmap()` was not coerced to integer
+ before passed to the native code.
+
+ * The internal `.initializeCdf()`, used when creating new CDFs, had
+ an error message refering to an invalid `qcUnitLengths` when it was
+ supposed to be `unitLengths`. Thanks Elizabeth Purdom for
+ reporting this.
+
+## Code Refactoring
+
+ * created a Makefile in `/inst/info` for comparing Fusion SDK with
+ **affxparser**.
+
+
+# Version 1.11.1 [2007-10-12]
+
+## New Features
+
+ * `convertCel()` will no longer generate a warning if the
+ corresponding CDF file was not found.
+
+## Bug Fixes
+
+ * For some Calvin CEL files the CEL header does not contain "parent
+ parameter" `affymetrix-dat-header` but only parameter
+ `affymetrix-partial-dat-header`. In that case `convertCel()` would
+ throw an error about `sprintf("DatHeader= %s\n", datHeader)`. Now
+ a "fake" DAT header is created from the partial one. If neither is
+ found, a slightly more informative exception is thrown.
+
+
+# Version 1.11.0 [2007-10-02]
+
+## Notes
+
+ * Version bumped because of the new Bioconductor release.
+
+
+# Version 1.9.5 [2007-09-16]
+
+## New Features
+
+ * Added argument '`recursive=TRUE'` to `findCdf()`. Note, the
+ current working directory is always scanned first, but never
+ recursively (unless explicitly added to the search path). This is
+ to avoid "endless" scans in case the search path has not been set.
+
+ * `findFiles()` now do a breath-first search in lexicographic order.
+
+ * Removed default search paths `cdf/` and `data/cdf/`. We do not
+ want to enforce a standard path.
+
+
+## Code Refactoring
+
+ * Now the examples (as well as test scripts) utilize data available
+ in the new Bioconductor **AffymetrixDataTestFiles** package. This
+ means that `R CMD check` now runs much more tests, which is good.
+
+ * CLEAN UP: Removed many of the old `testscripts/` scripts. They are
+ now under `tests/`.
+
+## Bug Fixes
+
+ * `findFiles()` was not robust against broken Unix links.
+
+ * If the destination file already existed, `convertCel()` would
+ correctly detect that, but would report the name of the source
+ file.
+
+
+# Version 1.9.4 [2007-08-25]
+
+## Significant Changes
+
+ * Updated to Fusion SDK v1.0.9.
+
+
+# Version 1.9.3 [2007-08-16]
+
+## Notes
+
+ * See updated made to release v1.8.3 below.
+
+ * The only difference between v1.9.3 and v1.8.3 is the modification
+ of `findCdf()` in v1.9.2.
+
+
+# Version 1.9.2 [2007-07-27]
+
+## Significant Changes
+
+ * This Bioconductor devel version requires R v2.6.0 due to a change
+ of how strings are handled in C by Bioconductor.
+
+## New Features
+
+ * Modified `findCdf()` such that it is possible to set an alternative
+ function for how CDFs are located.
+
+
+# Version 1.8.3 [NA]
+
+## New Features
+
+ * Made several updated so that **affxparser** better supports CEL
+ files in the new Command Console (Calvin) file format:
+ - `isCelFile()` recognized Calvin CEL files.
+ - `convertCel()` can convert a Calvin CEL files into v4 CEL files.
+ - `writeCelHeader()` can write v4 CEL headers given Calvin CEL
+ header.
+
+## Code Refactoring
+
+ * Added internal/private function to read Command Console Generic
+ (CCG) files, also known as Calvin files. Note, these functions are
+ currently _not_ utilizing the Fusion SDK library, but are instead
+ written from scratch based on the Affymetrix' file format
+ definitions.
+
+
+# Version 1.8.2 [2007-08-01]
+
+## Performance
+
+ * Optimized `writeCdfHeader()` for memory. For a CDF with 1,200,000+
+ units just writing the unit names would consume 1-1.5 GiB RAM. Now
+ it writes unit names in chunks keeping the memory overhead around
+ 100-200 MiB.
+
+ * Made `convertCdf()` more memory efficient.
+
+## Bug Fixes
+
+ * Error message in `isCelFile()` when the file was not found was
+ broken.
+
+
+# Version 1.8.1 [2007-07-26]
+
+## Significant Changes
+
+ * Now **affxparser** install on OSX with PPC.
+
+
+# Version 1.8.0 [2007-04-24]
+
+## Notes
+
+ * The version number was bumped up with the Bioconductor release.
+
+
+# Version 1.7.5 [2007-03-08]
+
+## New Features
+
+ * Added argument `truncateGroupNames` to `readCdfGroupNames()` which
+ defaults to TRUE for backward compatibility. When TRUE, any prefix
+ of group names identical to the unit name will be stripped of the
+ group names.
+
+
+# Version 1.7.4 [2007-02-21]
+
+## New Features
+
+ * Now `readCelUnits()` can handle unit groups for which there are no
+ probes, e.g. when stratifying on PM in a unit containing only MMs.
+
+ * Added `writeCdfHeader()`, `writeCdfQcUnits()` and
+ `writeCdfUnits()`. These are all used by `writeCdf()`. They also
+ make it possible to write a CDF in chunks in order to for instance
+ `convertCdf()` in constant memory.
+
+
+# Version 1.7.3 [2007-01-05]
+
+## New Features
+
+ * Added `cdfAddPlasqTypes()`.
+
+ * Now `readCdfUnits(..., readDirections=TRUE)` also returns group
+ directions.
+
+ * Now `readCdf()` reads all unit and group fields by default.
+
+ * In addition to optimizing IO time, read maps can be used to
+ unrotate CEL data rotated by the dChip software. For more
+ information, see help on "Cell-index maps for reading and writing".
+
+## Bug Fixes
+
+ * Using read maps for `readCel()` would give an error saying the read
+ map is invalid even when it is not.
+
+
+# Version 1.7.2 [2006-12-10]
+
+## New Features
+
+ * Added argument `isPm` to `readCdf()`.
+
+## Bug Fixes
+
+ * `readCdfUnits()` and `readCdfCellIndices()` with `stratifyBy="mm"`
+ would return the same as `stratifyBy="pm"`. Options `"pm"` and
+ `"pmmm"` are unaffected by this fix.
+
+
+# Version 1.7.1 [2006-11-03]
+
+## Significant Changes
+
+ * Updated to Fusion SDK v1.0.8.
+
+ * Windows build change: The Windows version is building against the
+ Windows code of Fusion SDK not the POSIX code. In order to do this
+ we have had to patch the preprocessor code in several of the Fusion
+ SDK source-code files, which has to be redone manually whenever
+ Fusion is updated. Starting with this version, we instead set the
+ `_MSC_VER` flag used in the Fusion code to indicate Windows (set by
+ the Microsoft Visual C++ compiler). Since we are using MINGW this
+ flag is obviously not set. Faking `_MSC_VER` this way leaves us
+ only having to patch one single file in the Fusion release instead
+ of 10-20. Hopefully there are no other side effects.
+
+## Bug Fixes
+
+ * In Fusion SDK (v1.0.5) that previous version of **affxparser**
+ used, a CDF file was never closed on Unix platforms (this bug was
+ not in the Windows version). Since Fusion allocated memory for the
+ complete CDF (even if a subset is only read), this caused the
+ memory usage to blow up, when reading the same or different CDF
+ files multiple times, because the memory was never deallocated.
+ Thanks Seth Falcon and Ken Simpson for reporting this problem.
+
+
+# Version 1.7.0 [2006-10-25]
+
+## New Features
+
+ * Made `readCelUnits()` a bit more clever if a `cdf` structure with
+ only cell indices is passed. Then all fields are just indices and
+ one can call unlist immediately. This speeds things up a bit.
+
+## Bug Fixes
+
+ * `writeCdf()` would create an invalid CDF file if there were no QC
+ units. This would in turn make `readCdfUnits()` etc core dump.
+
+ * Similar to get bug fix in the C code for `readCelHeader()`, much of
+ the C-level code for CDF (and BPMAP) files assumes that the strings
+ from Fusion SDK have a null terminator. At least for CDF unit
+ names, this is not necessarily the case. To be on the safe side,
+ for all retrieved Fusion SDK strings we now make sure there is a
+ null terminator before converting it into an R string. Thanks to
+ Ken Simpson at WEHI for all the troubleshooting.
+
+ * Because of the above bug fix, the ASCII mouse exon CDF can now be
+ converted into a valid binary CDF.
+
+## Notes
+
+ * The devel version number was bumped up with the Bioconductor
+ release.
+
+
+# Version 1.6.0 [2006-10-03]
+
+## Notes
+
+ * The version number was bumped up with the Bioconductor release.
+
+
+# Version 1.5 [2006-09-21]
+
+## New Features
+
+ * Added `compareCdfs()` to verify that a converted CDF is correct.
+
+ * Added `convertCdf()` utilizing the new `writeCdf()`.
+
+ * Added trial version of `createCel()`.
+
+ * Added trial version of `updateCelUnits()`.
+
+## Bug Fixes
+
+ * The C code for `readCelHeader()` did not allocate space for the
+ string null terminator for the header elements that originates from
+ wide C++ string. This caused `readCelHeader()` to contain string
+ elements with random characters at the end.
+
+ * nrows and ncols were swapped in the CDF header when written by
+ `writeCdf()`. This was missed because all tested CDFs were square.
+
+
+## Software Quality
+
+ * Now the package passes `R CMD check` without warnings.
+
+
+# Version 1.5.4 [2006-08-18]
+
+## Significant Changes
+
+ * Updated Fusion SDK to version 1.0.7.
+
+## Bug Fixes
+
+ * The new implementation of `updateCel()` utilizing raw vectors was
+ not correct; extra zeros was written too. The example code of
+ `updateCel()` reveals such errors much easier now.
+
+ * `updateCel()` would in some cases give `Error: subscript out of
+ bounds` when writing the last chunk.
+
+
+# Version 1.5.3 [2006-07-24]
+
+## New Features
+
+ * Added functional prototype of `updateCel()` to _update_ binary (v4)
+ CEL files. Currently, the code does make use the Fusion SDK.
+ There is currently no `writeCel()` to create a CEL file from
+ scratch. However, with the auxillary function `copyCel()` one can
+ copy an existing CEL file and then update that one. Thus, it is
+ now possible to write, say, normalized probe intensities to a CEL
+ file. Note that this is only a first prototype and functions may
+ change in a future release.
+
+## Performance
+
+ * Improved the speed of `updateCel()` substantially by first working
+ with raw vector in memory and then write binary data to file. Data
+ is also written in chunks (instead of all at once), to minimize the
+ memory overhead of using raw vectors, which is especially important
+ for the larger chips, e.g. 500K.
+
+
+# Version 1.5.2 [2006-05-31]
+
+## Significant Changes
+
+ * Updated Fusion SDK to version 1.0.6.
+
+
+# Version 1.5.1 [2006-05-15]
+
+## Significant Changes
+
+ * Updated Fusion SDK to version 1.0.5.
+
+## Bug Fixes
+
+ * Made small changes to the SDK to allow it to compile under Mac OS X
+ with GCC-4.0.3 shipping with R-2.3.0.
+
+## Code Refactoring
+
+ * Made changes to the `Makevars`, `_Makefile` and `cmd_line` scripts.
+
+
+# Version 1.5.0 [2006-05-12]
+
+## New Features
+
+ * Added `cdfOrderBy()` and `cdfOrderColumnsBy()` for restructuring
+ group fields in a CDF list structure. Added `cdfGetGroups()` too.
+
+## Documentation
+
+ * Cleaned up and restructured the help pages; several Rd pages are
+ now made "internal" so they do not show up on the help index page.
+ Instead they are accessable from within other help pages (if you
+ browsing via HTML that is). Added a help page on common terms.
+
+ * Added a bit more documentation on how to set the default CDF path.
+
+## Bug Fixes
+
+ * On Linux 64-bit read CEL intensities would all be zero. This was
+ due to compiler settings in the Fusion SDK package, which is
+ circumvented by gcc compile it with a lower optimization level.
+
+ * When argument `cdf` was a CDF list structure with elements `type`
+ or `direction`, `readCelUnits()` would not read the correct cells
+ because the values of `type` and `direction` would be included in
+ the extracted list of cell indices.
+
+
+# Version 1.4.0 [2006-04-27]
+
+## Notes
+
+ * The stable version for Bioconductor 1.8.
+
+
+# Version 1.3.3 [2006-04-15]
+
+## Significant Changes
+
+ * The package now works on Solaris.
+
+ * Updated the Fusion SDK to version 1.0.5 (an unofficial release).
+
+## New Features
+
+ * New method `readCdfCellIndices()`, which is a 5-10 times faster
+ special-case implementation of `readCdfUnits()` to read cell
+ indices only.
+
+ * Renamed `readCdfUnitsMap()` to `readCdfUnitsWriteMap()`.
+
+ * New method `invertMap()` for fast inversion of maps.
+
+## Performance
+
+ * Now `readCelUnits()` sorts the cell indices before reading the data
+ from each file. This minimizes the amount of jumping around in the
+ CEL files resulting in a speed-up of about 5-10 times.
+
+## Known Issues
+
+ * KNOWN BUGS: The weird bug as in v1.3.2 remains with the new Fusion
+ SDK, R v2.3.0 beta (2006-04-10 r37715) on WinXP. Internally
+ `readCdfCellIndices()` replaces `readCdfUnits()`, but the error is
+ still the same.
+
+
+# Version 1.3.2 [2006-03-28]
+
+## Significant Changes
+
+ * All cell and unit indices are now starting from one and not from
+ zero. This change requires that all code that have been using a
+ previous version of this package have to be updated!
+
+## New Features
+
+ * New methods `readCelRectangle()` to read probe signals from a
+ specify area of the chip.
+
+## Documentation
+
+ * Added extensive help on cell coordinates and cell indices as well
+ read and write maps.
+
+## Known Issues
+
+ * KNOWN BUGS: At least on WinXP, heavy use of `readCelUnits()` will
+ sooner or later core dump R; it seems to be a memory related from
+ that occur when reading the CDF and extracting the name of the
+ unit. However, when "torturing" `readCdfUnits()` the crash won't
+ happen so it might be that `readCel()` does something. Have not
+ tried on other platforms.
+
+## Performance
+
+ * Further optimization in speed and memory for most methods.
+
+
+# Version 1.3.1 [NA]
+
diff --git a/R/cdfGtypeCelToPQ.R b/R/cdfGtypeCelToPQ.R
index 80eb258..112c799 100644
--- a/R/cdfGtypeCelToPQ.R
+++ b/R/cdfGtypeCelToPQ.R
@@ -1,7 +1,7 @@
########################################################################/**
# @RdocFunction cdfGtypeCelToPQ
#
-# @title "Function to imitate Affymetrix' gtype\_cel\_to\_pq software"
+# @title "Function to imitate Affymetrix' gtype_cel_to_pq software"
#
# \description{
# @get "title".
diff --git a/R/readCcg.R b/R/readCcg.R
index 1cee72e..6271d2b 100644
--- a/R/readCcg.R
+++ b/R/readCcg.R
@@ -48,21 +48,21 @@
# }
# \item Data
# \enumerate{
-# \item Data Group \#1
+# \item Data Group #1
# \enumerate{
-# \item Data Set \#1
+# \item Data Set #1
# \itemize{
# \item Parameters
# \item Column definitions
# \item Matrix of data
# }
-# \item Data Set \#2
+# \item Data Set #2
# \item ...
-# \item Data Set \#L
+# \item Data Set #L
# }
-# \item Data Group \#2
+# \item Data Group #2
# \item ...
-# \item Data Group \#K
+# \item Data Group #K
# }
# }
# }
diff --git a/debian/changelog b/debian/changelog
index 5c44056..fa7bf96 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,13 @@
-r-bioc-affxparser (1.70.0-2) UNRELEASED; urgency=medium
+r-bioc-affxparser (1.72.0-1) UNRELEASED; urgency=medium
+ [ Andreas Tille ]
* Team upload.
* Add suggested patch for bug #1024580 but further discussion is needed
- -- Andreas Tille <tille@debian.org> Mon, 21 Nov 2022 20:15:24 +0100
+ [ Debian Janitor ]
+ * New upstream release.
+
+ -- Andreas Tille <tille@debian.org> Sat, 08 Jul 2023 07:28:01 -0000
r-bioc-affxparser (1.70.0-1) unstable; urgency=medium
diff --git a/man/cdfGtypeCelToPQ.Rd b/man/cdfGtypeCelToPQ.Rd
index 9002ec2..dc2f81a 100644
--- a/man/cdfGtypeCelToPQ.Rd
+++ b/man/cdfGtypeCelToPQ.Rd
@@ -10,10 +10,10 @@
\alias{cdfGtypeCelToPQ}
-\title{Function to imitate Affymetrix' gtype\_cel\_to\_pq software}
+\title{Function to imitate Affymetrix' gtype_cel_to_pq software}
\description{
- Function to imitate Affymetrix' gtype\_cel\_to\_pq software.
+ Function to imitate Affymetrix' gtype_cel_to_pq software.
This \code{\link[base]{function}} is design to be used with \code{\link{applyCdfGroups}}()
on an Affymetrix Mapping (SNP) CDF \code{\link[base]{list}} structure.
diff --git a/man/readCcg.Rd b/man/readCcg.Rd
index 4e3ab06..3dcfd59 100644
--- a/man/readCcg.Rd
+++ b/man/readCcg.Rd
@@ -59,21 +59,21 @@ readCcg(pathname, verbose=0, .filter=NULL, ...)
}
\item Data
\enumerate{
- \item Data Group \#1
+ \item Data Group #1
\enumerate{
- \item Data Set \#1
+ \item Data Set #1
\itemize{
\item Parameters
\item Column definitions
\item Matrix of data
}
- \item Data Set \#2
+ \item Data Set #2
\item ...
- \item Data Set \#L
+ \item Data Set #L
}
- \item Data Group \#2
+ \item Data Group #2
\item ...
- \item Data Group \#K
+ \item Data Group #K
}
}
}
diff --git a/src/Makevars.win b/src/Makevars.win
index 40da392..67ee8c4 100644
--- a/src/Makevars.win
+++ b/src/Makevars.win
@@ -7,7 +7,7 @@ MYCXXFLAGS = -Wno-sign-compare -Wno-unknown-pragmas
$(CXX) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) $(MYCXXFLAGS) -c $< -o $@
%.o: %.c
- $(CC) $(ALL_CPPFLAGS) -c $< -o $@
+ $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@
FUSION_SDK = fusion
diff --git a/src/R_affx_clf_pgf_parser.cpp b/src/R_affx_clf_pgf_parser.cpp
index 22173f8..6872894 100644
--- a/src/R_affx_clf_pgf_parser.cpp
+++ b/src/R_affx_clf_pgf_parser.cpp
@@ -281,7 +281,7 @@ extern "C" {
R_affx_get_body(clf, rho);
}
delete Err::popHandler();
- } catch (Except ex) {
+ } catch (Except& ex) {
delete Err::popHandler();
clf->close();
delete clf;
@@ -324,7 +324,7 @@ extern "C" {
}
pgf->close();
delete Err::popHandler();
- } catch (Except ex) {
+ } catch (Except& ex) {
delete Err::popHandler(); // errors now are fatal
pgf->close();
delete pgf;
diff --git a/src/_mingw.h b/src/_mingw.h
index 4f24fe7..003e99a 100644
--- a/src/_mingw.h
+++ b/src/_mingw.h
@@ -1,621 +1,22 @@
-/* This is a copy of _mingw.h from MinGW headers (the toolchain installation,
- should match the toolchain used. Modified/hacked to provide __uuidof()
- operator - see HACK below.
-
- There should be a cleaner solution, but this is what has been
- done before.
-*/
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-
-#ifndef _INC__MINGW_H
-#define _INC__MINGW_H
-
-#include "_mingw_mac.h"
-#include "_mingw_secapi.h"
-
-/* Include _cygwin.h if we're building a Cygwin application. */
-#ifdef __CYGWIN__
-#include "_cygwin.h"
-#endif
-
-/* Target specific macro replacement for type "long". In the Windows API,
- the type long is always 32 bit, even if the target is 64 bit (LLP64).
- On 64 bit Cygwin, the type long is 64 bit (LP64). So, to get the right
- sized definitions and declarations, all usage of type long in the Windows
- headers have to be replaced by the below defined macro __LONG32. */
-#ifndef __LP64__ /* 32 bit target, 64 bit Mingw target */
-#define __LONG32 long
-#else /* 64 bit Cygwin target */
-#define __LONG32 int
-#endif
-
-/* C/C++ specific language defines. */
-#ifdef _WIN64
-#ifdef __stdcall
-#undef __stdcall
-#endif
-#define __stdcall
-#endif
-
-#ifndef __GNUC__
-# ifndef __MINGW_IMPORT
-# define __MINGW_IMPORT __declspec(dllimport)
-# endif
-# ifndef _CRTIMP
-# define _CRTIMP __declspec(dllimport)
-# endif
-# define __DECLSPEC_SUPPORTED
-# define __attribute__(x) /* nothing */
-#else /* __GNUC__ */
-# ifdef __declspec
-# ifndef __MINGW_IMPORT
-/* Note the extern. This is needed to work around GCC's
-limitations in handling dllimport attribute. */
-# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
-# endif
-# ifndef _CRTIMP
-# undef __USE_CRTIMP
-# if !defined (_CRTBLD) && !defined (_SYSCRT)
-# define __USE_CRTIMP 1
-# endif
-# ifdef __USE_CRTIMP
-# define _CRTIMP __attribute__ ((__dllimport__))
-# else
-# define _CRTIMP
-# endif
-# endif
-# define __DECLSPEC_SUPPORTED
-# else /* __declspec */
-# undef __DECLSPEC_SUPPORTED
-# undef __MINGW_IMPORT
-# ifndef _CRTIMP
-# define _CRTIMP
-# endif
-# endif /* __declspec */
-#endif /* __GNUC__ */
-
-/* HACK: to get __uuidof() */
-
-#ifdef _MSC_VER
-#define USE___UUIDOF 0
-#else
-#define USE___UUIDOF 0
-#endif
-
-#if !defined(_MSC_VER) && !defined(_inline)
-#define _inline __inline
-#endif
-
-#ifdef __cplusplus
-# define __CRT_INLINE inline
-#elif defined(_MSC_VER)
-# define __CRT_INLINE __inline
-#else
-# if ((__MINGW_GNUC_PREREQ(4, 3) || defined(__clang__)) && __STDC_VERSION__ >= 199901L)
-# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
-# else
-# define __CRT_INLINE extern __inline__
-# endif
-#endif
-
-#if !defined(__MINGW_INTRIN_INLINE) && defined(__GNUC__)
-#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
-#endif
-
-#ifndef __CYGWIN__
-#ifdef __NO_INLINE__
-#undef __CRT__NO_INLINE
-#define __CRT__NO_INLINE 1
-#endif
-#endif
-
-#ifdef __cplusplus
-# define __UNUSED_PARAM(x)
-#else
-# ifdef __GNUC__
-# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
-# else
-# define __UNUSED_PARAM(x) x
-# endif
-#endif
-
-#ifndef __GNUC__
-# ifdef _MSC_VER
-# define __restrict__ __restrict
-# else
-# define __restrict__ /* nothing */
-# endif
-#endif /* !__GNUC__ */
-
-#if __MINGW_GNUC_PREREQ (3,1) && !defined __GNUG__
-# define __restrict_arr __restrict
-#elif defined(_MSC_VER)
-# define __restrict_arr __restrict
-#else
-# ifdef __GNUC__
-# define __restrict_arr /* Not supported in old GCC. */
-# else
-# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-# define __restrict_arr restrict
-# else
-# define __restrict_arr /* Not supported. */
-# endif
-# endif
-#endif
-
-#ifdef __GNUC__
-#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
-#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
-#elif __MINGW_MSC_PREREQ(12, 0)
-#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
-#define __MINGW_ATTRIB_CONST
-#else
-#define __MINGW_ATTRIB_NORETURN
-#define __MINGW_ATTRIB_CONST
-#endif
-
-#if __MINGW_GNUC_PREREQ (3, 0)
-#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
-#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
-#elif __MINGW_MSC_PREREQ(14, 0)
-#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
-#define __MINGW_ATTRIB_PURE
-#else
-#define __MINGW_ATTRIB_MALLOC
-#define __MINGW_ATTRIB_PURE
-#endif
-
-/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
- variadiac macro facility, because variadic macros cause syntax
- errors with --traditional-cpp. */
-#if __MINGW_GNUC_PREREQ (3, 3)
-#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
-#else
-#define __MINGW_ATTRIB_NONNULL(arg)
-#endif /* GNUC >= 3.3 */
-
-#ifdef __GNUC__
-#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
-#else
-#define __MINGW_ATTRIB_UNUSED
-#endif /* ATTRIBUTE_UNUSED */
-
-#if __MINGW_GNUC_PREREQ (3, 1)
-#define __MINGW_ATTRIB_USED __attribute__ ((__used__))
-#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
-#if __MINGW_GNUC_PREREQ (4, 5) || defined (__clang__)
-#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x)))
-#endif
-#elif __MINGW_MSC_PREREQ(12, 0)
-#define __MINGW_ATTRIB_USED
-#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
-#else
-#define __MINGW_ATTRIB_USED __MINGW_ATTRIB_UNUSED
-#define __MINGW_ATTRIB_DEPRECATED
-#endif /* GNUC >= 3.1 */
-
-#ifndef __MINGW_ATTRIB_DEPRECATED_MSG
-#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __MINGW_ATTRIB_DEPRECATED
-#endif
-
-#if __MINGW_GNUC_PREREQ (3, 3)
-#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
-#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
-#define __MINGW_NOTHROW __declspec(nothrow)
-#else
-#define __MINGW_NOTHROW
-#endif
-
-#if __MINGW_GNUC_PREREQ (4, 4)
-#define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
-#else
-#define __MINGW_ATTRIB_NO_OPTIMIZE
-#endif
-
-#if __MINGW_GNUC_PREREQ (4, 4)
-#define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
-#elif __MINGW_MSC_PREREQ (13, 1)
-#define __MINGW_PRAGMA_PARAM(x) __pragma (x)
-#else
-#define __MINGW_PRAGMA_PARAM(x)
-#endif
-
-#define __MINGW_BROKEN_INTERFACE(x) \
- __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) \
- " has unverified layout."))
-
-#ifndef __MSVCRT_VERSION__
-/* High byte is the major version, low byte is the minor. */
-# ifndef _UCRT
-# define __MSVCRT_VERSION__ 0xE00
-# else
-# define __MSVCRT_VERSION__ 0xE00
-# endif
-#endif
-
-
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x502
-#endif
-
-#ifndef _INT128_DEFINED
-#define _INT128_DEFINED
-#ifdef __GNUC__
-#define __int8 char
-#define __int16 short
-#define __int32 int
-#define __int64 long long
-#ifdef _WIN64
-#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
- !defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
-#define __SIZEOF_INT128__ 16
-#endif
-#ifndef __SIZEOF_INT128__
-typedef int __int128 __attribute__ ((__mode__ (TI)));
-#endif
-#endif
-#endif /* __GNUC__ */
-#endif /* _INT128_DEFINED */
-
-#ifdef __GNUC__
-#define __ptr32
-#define __ptr64
-#ifndef __unaligned
-#define __unaligned
-#endif
-#ifndef __w64
-#define __w64
-#endif
-#ifdef __cplusplus
-#define __forceinline inline __attribute__((__always_inline__))
-#else
-#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
-#endif /* __cplusplus */
-#endif /* __GNUC__ */
-
-#if !defined(_WIN32) && !defined(__CYGWIN__)
-#error Only Win32 target is supported!
-#endif
-
-#ifndef __nothrow
-#ifdef __cplusplus
-#define __nothrow __MINGW_NOTHROW
-#else
-#define __nothrow
-#endif
-#endif /* __nothrow */
-
-#include <vadefs.h> /* other headers depend on this include */
-
-#ifndef _CRT_STRINGIZE
-#define __CRT_STRINGIZE(_Value) #_Value
-#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
-#endif /* _CRT_STRINGIZE */
-
-#ifndef _CRT_WIDE
-#define __CRT_WIDE(_String) L ## _String
-#define _CRT_WIDE(_String) __CRT_WIDE(_String)
-#endif /* _CRT_WIDE */
-
-#ifndef _W64
-#define _W64
-#endif
-
-#ifndef _CRTIMP_NOIA64
-#ifdef __ia64__
-#define _CRTIMP_NOIA64
-#else
-#define _CRTIMP_NOIA64 _CRTIMP
-#endif
-#endif /* _CRTIMP_NOIA64 */
-
-#ifndef _CRTIMP2
-#define _CRTIMP2 _CRTIMP
-#endif
-
-#ifndef _CRTIMP_ALTERNATIVE
-#define _CRTIMP_ALTERNATIVE _CRTIMP
-#define _CRT_ALTERNATIVE_IMPORTED
-#endif /* _CRTIMP_ALTERNATIVE */
-
-#ifndef _MRTIMP2
-#define _MRTIMP2 _CRTIMP
-#endif
-
-/* We have to define _DLL for gcc based mingw version. This define is set
- by VC, when DLL-based runtime is used. So, gcc based runtime just have
- DLL-base runtime, therefore this define has to be set.
- As our headers are possibly used by windows compiler having a static
- C-runtime, we make this definition gnu compiler specific here. */
-#if !defined (_DLL) && defined (__GNUC__)
-#define _DLL
-#endif
-
-#ifndef _MT
-#define _MT
-#endif
-
-#ifndef _MCRTIMP
-#define _MCRTIMP _CRTIMP
+/*****************************************************************
+ This header file is used when compiling with MinGW on Windows.
+ It is agile to the gcc toolchain currently used; it uses
+ different setups for:
+
+ - gcc (>= 4.9.3): introduced in R (>= 3.3.0)
+ - gcc (>= 4.6.3): R (< 3.3.0) and some R (>= 3.3.0) installs
+
+ Henrik Bengtsson, 2016-04-05
+*****************************************************************/
+#define GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+#if GCC_VERSION >= 120200
+#include "_mingw_gcc1202.h"
+#elif GCC_VERSION >= 100200
+#include "_mingw_gcc1002.h"
+#elif GCC_VERSION >= 40903
+#include "_mingw_gcc493.h"
+#elif GCC_VERSION >= 40603
+#include "_mingw_gcc463.h"
#endif
-
-#ifndef _CRTIMP_PURE
-#define _CRTIMP_PURE _CRTIMP
-#endif
-
-#ifndef _PGLOBAL
-#define _PGLOBAL
-#endif
-
-#ifndef _AGLOBAL
-#define _AGLOBAL
-#endif
-
-#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
-#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
-
-#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
-#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
-#endif
-
-#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
-#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
-#endif
-
-#ifndef _CRT_MANAGED_HEAP_DEPRECATE
-#define _CRT_MANAGED_HEAP_DEPRECATE
-#endif
-
-#ifndef _CRT_OBSOLETE
-#define _CRT_OBSOLETE(_NewItem)
-#endif
-
-#ifndef __WIDL__
-
-#if defined (_WIN32) && !defined (_WIN64) && !defined (__MINGW_USE_VC2005_COMPAT)
-#ifndef _USE_32BIT_TIME_T
-#define _USE_32BIT_TIME_T
-#endif
-#endif
-
-#ifndef _CONST_RETURN
-#define _CONST_RETURN
-#endif
-
-#ifndef UNALIGNED
-#if defined(_M_IA64) || defined(_M_AMD64)
-#define UNALIGNED __unaligned
-#else
-#define UNALIGNED
-#endif
-#endif /* UNALIGNED */
-
-#ifndef _CRT_ALIGN
-#ifdef _MSC_VER
-#define _CRT_ALIGN(x) __declspec(align(x))
-#else /* __GNUC__ */
-#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
-#endif
-#endif /* _CRT_ALIGN */
-
-#endif /* __WIDL__ */
-
-#ifndef __CRTDECL
-#define __CRTDECL __cdecl
-#endif
-
-#define _ARGMAX 100
-
-#ifndef _TRUNCATE
-#define _TRUNCATE ((size_t)-1)
-#endif
-
-#ifndef _CRT_UNUSED
-#define _CRT_UNUSED(x) (void)x
-#endif
-
-/* MSVC defines _NATIVE_NULLPTR_SUPPORTED when nullptr is supported. We emulate it here for GCC. */
-#if __MINGW_GNUC_PREREQ(4, 6)
-#if defined(__GNUC__) && (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
-#define _NATIVE_NULLPTR_SUPPORTED
-#endif
-#endif
-
-/* We are activating __USE_MINGW_ANSI_STDIO for various define indicators.
- * printf ll modifier (unsupported by msvcrt.dll) is required by C99 and C++11 standards. */
-#if (defined (_POSIX) || defined (_POSIX_SOURCE) || defined (_POSIX_C_SOURCE) \
- || defined (_ISOC99_SOURCE) \
- || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && __MSVCRT_VERSION__ < 0xE00) \
- || (defined (__cplusplus) && __cplusplus >= 201103L && __MSVCRT_VERSION__ < 0xE00) \
- || defined (_XOPEN_SOURCE) || defined (_XOPEN_SOURCE_EXTENDED) \
- || defined (_GNU_SOURCE) \
- || defined (_SVID_SOURCE)) \
- && !defined(__USE_MINGW_ANSI_STDIO)
-/* Enable __USE_MINGW_ANSI_STDIO if user did _not_ specify it explicitly... */
-# define __USE_MINGW_ANSI_STDIO 1
-#endif
-
-/* We are defining __USE_MINGW_ANSI_STDIO as 0 or 1 */
-#if !defined(__USE_MINGW_ANSI_STDIO)
-#define __USE_MINGW_ANSI_STDIO 0 /* was not defined so it should be 0 */
-#elif (__USE_MINGW_ANSI_STDIO + 0) != 0 || (1 - __USE_MINGW_ANSI_STDIO - 1) == 2
-#define __USE_MINGW_ANSI_STDIO 1 /* was defined as nonzero or empty so it should be 1 */
-#else
-#define __USE_MINGW_ANSI_STDIO 0 /* was defined as (int)zero and non-empty so it should be 0 */
-#endif
-
-/* _dowildcard is an int that controls the globbing of the command line.
- * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
- * a compatibility definition here: you can use either of _CRT_glob or
- * _dowildcard .
- * If _dowildcard is non-zero, the command line will be globbed: *.*
- * will be expanded to be all files in the startup directory.
- * In the mingw-w64 library a _dowildcard variable is defined as being
- * 0, therefore command line globbing is DISABLED by default. To turn it
- * on and to leave wildcard command line processing MS's globbing code,
- * include a line in one of your source modules defining _dowildcard and
- * setting it to -1, like so:
- * int _dowildcard = -1;
- */
-#undef _CRT_glob
-#define _CRT_glob _dowildcard
-
-
-#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
-#define NONAMELESSUNION 1
-#endif
-#if defined(NONAMELESSSTRUCT) && \
- !defined(NONAMELESSUNION)
-#define NONAMELESSUNION 1
-#endif
-#if defined(NONAMELESSUNION) && \
- !defined(NONAMELESSSTRUCT)
-#define NONAMELESSSTRUCT 1
-#endif
-
-#ifndef __ANONYMOUS_DEFINED
-#define __ANONYMOUS_DEFINED
-#define _ANONYMOUS_UNION __MINGW_EXTENSION
-#define _ANONYMOUS_STRUCT __MINGW_EXTENSION
-#ifndef NONAMELESSUNION
-#define _UNION_NAME(x)
-#define _STRUCT_NAME(x)
-#else /* NONAMELESSUNION */
-#define _UNION_NAME(x) x
-#define _STRUCT_NAME(x) x
-#endif
-#endif /* __ANONYMOUS_DEFINED */
-
-#ifndef DUMMYUNIONNAME
-# ifdef NONAMELESSUNION
-# define DUMMYUNIONNAME u
-# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
-# define DUMMYUNIONNAME2 u2
-# define DUMMYUNIONNAME3 u3
-# define DUMMYUNIONNAME4 u4
-# define DUMMYUNIONNAME5 u5
-# define DUMMYUNIONNAME6 u6
-# define DUMMYUNIONNAME7 u7
-# define DUMMYUNIONNAME8 u8
-# define DUMMYUNIONNAME9 u9
-# else /* NONAMELESSUNION */
-# define DUMMYUNIONNAME
-# define DUMMYUNIONNAME1 /* Wine uses this variant */
-# define DUMMYUNIONNAME2
-# define DUMMYUNIONNAME3
-# define DUMMYUNIONNAME4
-# define DUMMYUNIONNAME5
-# define DUMMYUNIONNAME6
-# define DUMMYUNIONNAME7
-# define DUMMYUNIONNAME8
-# define DUMMYUNIONNAME9
-# endif
-#endif /* DUMMYUNIONNAME */
-
-#ifndef DUMMYSTRUCTNAME
-# ifdef NONAMELESSUNION
-# define DUMMYSTRUCTNAME s
-# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
-# define DUMMYSTRUCTNAME2 s2
-# define DUMMYSTRUCTNAME3 s3
-# define DUMMYSTRUCTNAME4 s4
-# define DUMMYSTRUCTNAME5 s5
-# else
-# define DUMMYSTRUCTNAME
-# define DUMMYSTRUCTNAME1 /* Wine uses this variant */
-# define DUMMYSTRUCTNAME2
-# define DUMMYSTRUCTNAME3
-# define DUMMYSTRUCTNAME4
-# define DUMMYSTRUCTNAME5
-# endif
-#endif /* DUMMYSTRUCTNAME */
-
-
-/* Macros for __uuidof template-based emulation */
-#if defined(__cplusplus) && (USE___UUIDOF == 0)
-
-#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
-#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- extern "C++" { \
- template<> struct __mingw_uuidof_s<type> { \
- static constexpr IID __uuid_inst = { \
- l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8} \
- }; \
- }; \
- template<> constexpr const GUID &__mingw_uuidof<type>() { \
- return __mingw_uuidof_s<type>::__uuid_inst; \
- } \
- template<> constexpr const GUID &__mingw_uuidof<type*>() { \
- return __mingw_uuidof_s<type>::__uuid_inst; \
- } \
- }
-#else
-#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- extern "C++" { \
- template<> inline const GUID &__mingw_uuidof<type>() { \
- static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
- return __uuid_inst; \
- } \
- template<> inline const GUID &__mingw_uuidof<type*>() { \
- return __mingw_uuidof<type>(); \
- } \
- }
-#endif
-
-#define __uuidof(type) __mingw_uuidof<__typeof(type)>()
-
-#else
-
-#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#ifdef __MINGW_INTRIN_INLINE
-#ifdef __has_builtin
-#define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak)
-#else
-#define __MINGW_DEBUGBREAK_IMPL 1
-#endif
-#if __MINGW_DEBUGBREAK_IMPL == 1
-void __cdecl __debugbreak(void);
-__MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
-{
- __asm__ __volatile__("int {$}3":);
-}
-#endif
-#endif
-
-/* mingw-w64 specific functions: */
-const char *__mingw_get_crt_info (void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _INC__MINGW_H */
-
-#ifndef MINGW_SDK_INIT
-#define MINGW_SDK_INIT
-
-/* for backward compatibility */
-#ifndef MINGW_HAS_SECURE_API
-#define MINGW_HAS_SECURE_API 1
-#endif
-
-#define __STDC_SECURE_LIB__ 200411L
-#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
-
-#ifndef __WIDL__
-#include "sdks/_mingw_ddk.h"
-#endif
-
-#endif /* MINGW_SDK_INIT */
diff --git a/src/_mingw_gcc1002.h b/src/_mingw_gcc1002.h
new file mode 100644
index 0000000..4f24fe7
--- /dev/null
+++ b/src/_mingw_gcc1002.h
@@ -0,0 +1,621 @@
+/* This is a copy of _mingw.h from MinGW headers (the toolchain installation,
+ should match the toolchain used. Modified/hacked to provide __uuidof()
+ operator - see HACK below.
+
+ There should be a cleaner solution, but this is what has been
+ done before.
+*/
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC__MINGW_H
+#define _INC__MINGW_H
+
+#include "_mingw_mac.h"
+#include "_mingw_secapi.h"
+
+/* Include _cygwin.h if we're building a Cygwin application. */
+#ifdef __CYGWIN__
+#include "_cygwin.h"
+#endif
+
+/* Target specific macro replacement for type "long". In the Windows API,
+ the type long is always 32 bit, even if the target is 64 bit (LLP64).
+ On 64 bit Cygwin, the type long is 64 bit (LP64). So, to get the right
+ sized definitions and declarations, all usage of type long in the Windows
+ headers have to be replaced by the below defined macro __LONG32. */
+#ifndef __LP64__ /* 32 bit target, 64 bit Mingw target */
+#define __LONG32 long
+#else /* 64 bit Cygwin target */
+#define __LONG32 int
+#endif
+
+/* C/C++ specific language defines. */
+#ifdef _WIN64
+#ifdef __stdcall
+#undef __stdcall
+#endif
+#define __stdcall
+#endif
+
+#ifndef __GNUC__
+# ifndef __MINGW_IMPORT
+# define __MINGW_IMPORT __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+# define _CRTIMP __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x) /* nothing */
+#else /* __GNUC__ */
+# ifdef __declspec
+# ifndef __MINGW_IMPORT
+/* Note the extern. This is needed to work around GCC's
+limitations in handling dllimport attribute. */
+# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
+# endif
+# ifndef _CRTIMP
+# undef __USE_CRTIMP
+# if !defined (_CRTBLD) && !defined (_SYSCRT)
+# define __USE_CRTIMP 1
+# endif
+# ifdef __USE_CRTIMP
+# define _CRTIMP __attribute__ ((__dllimport__))
+# else
+# define _CRTIMP
+# endif
+# endif
+# define __DECLSPEC_SUPPORTED
+# else /* __declspec */
+# undef __DECLSPEC_SUPPORTED
+# undef __MINGW_IMPORT
+# ifndef _CRTIMP
+# define _CRTIMP
+# endif
+# endif /* __declspec */
+#endif /* __GNUC__ */
+
+/* HACK: to get __uuidof() */
+
+#ifdef _MSC_VER
+#define USE___UUIDOF 0
+#else
+#define USE___UUIDOF 0
+#endif
+
+#if !defined(_MSC_VER) && !defined(_inline)
+#define _inline __inline
+#endif
+
+#ifdef __cplusplus
+# define __CRT_INLINE inline
+#elif defined(_MSC_VER)
+# define __CRT_INLINE __inline
+#else
+# if ((__MINGW_GNUC_PREREQ(4, 3) || defined(__clang__)) && __STDC_VERSION__ >= 199901L)
+# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
+# else
+# define __CRT_INLINE extern __inline__
+# endif
+#endif
+
+#if !defined(__MINGW_INTRIN_INLINE) && defined(__GNUC__)
+#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif
+
+#ifndef __CYGWIN__
+#ifdef __NO_INLINE__
+#undef __CRT__NO_INLINE
+#define __CRT__NO_INLINE 1
+#endif
+#endif
+
+#ifdef __cplusplus
+# define __UNUSED_PARAM(x)
+#else
+# ifdef __GNUC__
+# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
+# else
+# define __UNUSED_PARAM(x) x
+# endif
+#endif
+
+#ifndef __GNUC__
+# ifdef _MSC_VER
+# define __restrict__ __restrict
+# else
+# define __restrict__ /* nothing */
+# endif
+#endif /* !__GNUC__ */
+
+#if __MINGW_GNUC_PREREQ (3,1) && !defined __GNUG__
+# define __restrict_arr __restrict
+#elif defined(_MSC_VER)
+# define __restrict_arr __restrict
+#else
+# ifdef __GNUC__
+# define __restrict_arr /* Not supported in old GCC. */
+# else
+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+# define __restrict_arr restrict
+# else
+# define __restrict_arr /* Not supported. */
+# endif
+# endif
+#endif
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
+#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
+#define __MINGW_ATTRIB_CONST
+#else
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 0)
+#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
+#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
+#elif __MINGW_MSC_PREREQ(14, 0)
+#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
+#define __MINGW_ATTRIB_PURE
+#else
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#endif
+
+/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
+ variadiac macro facility, because variadic macros cause syntax
+ errors with --traditional-cpp. */
+#if __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
+#else
+#define __MINGW_ATTRIB_NONNULL(arg)
+#endif /* GNUC >= 3.3 */
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
+#else
+#define __MINGW_ATTRIB_UNUSED
+#endif /* ATTRIBUTE_UNUSED */
+
+#if __MINGW_GNUC_PREREQ (3, 1)
+#define __MINGW_ATTRIB_USED __attribute__ ((__used__))
+#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
+#if __MINGW_GNUC_PREREQ (4, 5) || defined (__clang__)
+#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x)))
+#endif
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_USED
+#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
+#else
+#define __MINGW_ATTRIB_USED __MINGW_ATTRIB_UNUSED
+#define __MINGW_ATTRIB_DEPRECATED
+#endif /* GNUC >= 3.1 */
+
+#ifndef __MINGW_ATTRIB_DEPRECATED_MSG
+#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __MINGW_ATTRIB_DEPRECATED
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
+#define __MINGW_NOTHROW __declspec(nothrow)
+#else
+#define __MINGW_NOTHROW
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
+#else
+#define __MINGW_ATTRIB_NO_OPTIMIZE
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
+#elif __MINGW_MSC_PREREQ (13, 1)
+#define __MINGW_PRAGMA_PARAM(x) __pragma (x)
+#else
+#define __MINGW_PRAGMA_PARAM(x)
+#endif
+
+#define __MINGW_BROKEN_INTERFACE(x) \
+ __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) \
+ " has unverified layout."))
+
+#ifndef __MSVCRT_VERSION__
+/* High byte is the major version, low byte is the minor. */
+# ifndef _UCRT
+# define __MSVCRT_VERSION__ 0xE00
+# else
+# define __MSVCRT_VERSION__ 0xE00
+# endif
+#endif
+
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x502
+#endif
+
+#ifndef _INT128_DEFINED
+#define _INT128_DEFINED
+#ifdef __GNUC__
+#define __int8 char
+#define __int16 short
+#define __int32 int
+#define __int64 long long
+#ifdef _WIN64
+#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
+ !defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
+#define __SIZEOF_INT128__ 16
+#endif
+#ifndef __SIZEOF_INT128__
+typedef int __int128 __attribute__ ((__mode__ (TI)));
+#endif
+#endif
+#endif /* __GNUC__ */
+#endif /* _INT128_DEFINED */
+
+#ifdef __GNUC__
+#define __ptr32
+#define __ptr64
+#ifndef __unaligned
+#define __unaligned
+#endif
+#ifndef __w64
+#define __w64
+#endif
+#ifdef __cplusplus
+#define __forceinline inline __attribute__((__always_inline__))
+#else
+#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif /* __cplusplus */
+#endif /* __GNUC__ */
+
+#if !defined(_WIN32) && !defined(__CYGWIN__)
+#error Only Win32 target is supported!
+#endif
+
+#ifndef __nothrow
+#ifdef __cplusplus
+#define __nothrow __MINGW_NOTHROW
+#else
+#define __nothrow
+#endif
+#endif /* __nothrow */
+
+#include <vadefs.h> /* other headers depend on this include */
+
+#ifndef _CRT_STRINGIZE
+#define __CRT_STRINGIZE(_Value) #_Value
+#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
+#endif /* _CRT_STRINGIZE */
+
+#ifndef _CRT_WIDE
+#define __CRT_WIDE(_String) L ## _String
+#define _CRT_WIDE(_String) __CRT_WIDE(_String)
+#endif /* _CRT_WIDE */
+
+#ifndef _W64
+#define _W64
+#endif
+
+#ifndef _CRTIMP_NOIA64
+#ifdef __ia64__
+#define _CRTIMP_NOIA64
+#else
+#define _CRTIMP_NOIA64 _CRTIMP
+#endif
+#endif /* _CRTIMP_NOIA64 */
+
+#ifndef _CRTIMP2
+#define _CRTIMP2 _CRTIMP
+#endif
+
+#ifndef _CRTIMP_ALTERNATIVE
+#define _CRTIMP_ALTERNATIVE _CRTIMP
+#define _CRT_ALTERNATIVE_IMPORTED
+#endif /* _CRTIMP_ALTERNATIVE */
+
+#ifndef _MRTIMP2
+#define _MRTIMP2 _CRTIMP
+#endif
+
+/* We have to define _DLL for gcc based mingw version. This define is set
+ by VC, when DLL-based runtime is used. So, gcc based runtime just have
+ DLL-base runtime, therefore this define has to be set.
+ As our headers are possibly used by windows compiler having a static
+ C-runtime, we make this definition gnu compiler specific here. */
+#if !defined (_DLL) && defined (__GNUC__)
+#define _DLL
+#endif
+
+#ifndef _MT
+#define _MT
+#endif
+
+#ifndef _MCRTIMP
+#define _MCRTIMP _CRTIMP
+#endif
+
+#ifndef _CRTIMP_PURE
+#define _CRTIMP_PURE _CRTIMP
+#endif
+
+#ifndef _PGLOBAL
+#define _PGLOBAL
+#endif
+
+#ifndef _AGLOBAL
+#define _AGLOBAL
+#endif
+
+#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
+#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
+
+#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
+#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
+#endif
+
+#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
+#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
+#endif
+
+#ifndef _CRT_MANAGED_HEAP_DEPRECATE
+#define _CRT_MANAGED_HEAP_DEPRECATE
+#endif
+
+#ifndef _CRT_OBSOLETE
+#define _CRT_OBSOLETE(_NewItem)
+#endif
+
+#ifndef __WIDL__
+
+#if defined (_WIN32) && !defined (_WIN64) && !defined (__MINGW_USE_VC2005_COMPAT)
+#ifndef _USE_32BIT_TIME_T
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
+
+#ifndef UNALIGNED
+#if defined(_M_IA64) || defined(_M_AMD64)
+#define UNALIGNED __unaligned
+#else
+#define UNALIGNED
+#endif
+#endif /* UNALIGNED */
+
+#ifndef _CRT_ALIGN
+#ifdef _MSC_VER
+#define _CRT_ALIGN(x) __declspec(align(x))
+#else /* __GNUC__ */
+#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
+#endif
+#endif /* _CRT_ALIGN */
+
+#endif /* __WIDL__ */
+
+#ifndef __CRTDECL
+#define __CRTDECL __cdecl
+#endif
+
+#define _ARGMAX 100
+
+#ifndef _TRUNCATE
+#define _TRUNCATE ((size_t)-1)
+#endif
+
+#ifndef _CRT_UNUSED
+#define _CRT_UNUSED(x) (void)x
+#endif
+
+/* MSVC defines _NATIVE_NULLPTR_SUPPORTED when nullptr is supported. We emulate it here for GCC. */
+#if __MINGW_GNUC_PREREQ(4, 6)
+#if defined(__GNUC__) && (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
+#define _NATIVE_NULLPTR_SUPPORTED
+#endif
+#endif
+
+/* We are activating __USE_MINGW_ANSI_STDIO for various define indicators.
+ * printf ll modifier (unsupported by msvcrt.dll) is required by C99 and C++11 standards. */
+#if (defined (_POSIX) || defined (_POSIX_SOURCE) || defined (_POSIX_C_SOURCE) \
+ || defined (_ISOC99_SOURCE) \
+ || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && __MSVCRT_VERSION__ < 0xE00) \
+ || (defined (__cplusplus) && __cplusplus >= 201103L && __MSVCRT_VERSION__ < 0xE00) \
+ || defined (_XOPEN_SOURCE) || defined (_XOPEN_SOURCE_EXTENDED) \
+ || defined (_GNU_SOURCE) \
+ || defined (_SVID_SOURCE)) \
+ && !defined(__USE_MINGW_ANSI_STDIO)
+/* Enable __USE_MINGW_ANSI_STDIO if user did _not_ specify it explicitly... */
+# define __USE_MINGW_ANSI_STDIO 1
+#endif
+
+/* We are defining __USE_MINGW_ANSI_STDIO as 0 or 1 */
+#if !defined(__USE_MINGW_ANSI_STDIO)
+#define __USE_MINGW_ANSI_STDIO 0 /* was not defined so it should be 0 */
+#elif (__USE_MINGW_ANSI_STDIO + 0) != 0 || (1 - __USE_MINGW_ANSI_STDIO - 1) == 2
+#define __USE_MINGW_ANSI_STDIO 1 /* was defined as nonzero or empty so it should be 1 */
+#else
+#define __USE_MINGW_ANSI_STDIO 0 /* was defined as (int)zero and non-empty so it should be 0 */
+#endif
+
+/* _dowildcard is an int that controls the globbing of the command line.
+ * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
+ * a compatibility definition here: you can use either of _CRT_glob or
+ * _dowildcard .
+ * If _dowildcard is non-zero, the command line will be globbed: *.*
+ * will be expanded to be all files in the startup directory.
+ * In the mingw-w64 library a _dowildcard variable is defined as being
+ * 0, therefore command line globbing is DISABLED by default. To turn it
+ * on and to leave wildcard command line processing MS's globbing code,
+ * include a line in one of your source modules defining _dowildcard and
+ * setting it to -1, like so:
+ * int _dowildcard = -1;
+ */
+#undef _CRT_glob
+#define _CRT_glob _dowildcard
+
+
+#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSSTRUCT) && \
+ !defined(NONAMELESSUNION)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSUNION) && \
+ !defined(NONAMELESSSTRUCT)
+#define NONAMELESSSTRUCT 1
+#endif
+
+#ifndef __ANONYMOUS_DEFINED
+#define __ANONYMOUS_DEFINED
+#define _ANONYMOUS_UNION __MINGW_EXTENSION
+#define _ANONYMOUS_STRUCT __MINGW_EXTENSION
+#ifndef NONAMELESSUNION
+#define _UNION_NAME(x)
+#define _STRUCT_NAME(x)
+#else /* NONAMELESSUNION */
+#define _UNION_NAME(x) x
+#define _STRUCT_NAME(x) x
+#endif
+#endif /* __ANONYMOUS_DEFINED */
+
+#ifndef DUMMYUNIONNAME
+# ifdef NONAMELESSUNION
+# define DUMMYUNIONNAME u
+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2 u2
+# define DUMMYUNIONNAME3 u3
+# define DUMMYUNIONNAME4 u4
+# define DUMMYUNIONNAME5 u5
+# define DUMMYUNIONNAME6 u6
+# define DUMMYUNIONNAME7 u7
+# define DUMMYUNIONNAME8 u8
+# define DUMMYUNIONNAME9 u9
+# else /* NONAMELESSUNION */
+# define DUMMYUNIONNAME
+# define DUMMYUNIONNAME1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2
+# define DUMMYUNIONNAME3
+# define DUMMYUNIONNAME4
+# define DUMMYUNIONNAME5
+# define DUMMYUNIONNAME6
+# define DUMMYUNIONNAME7
+# define DUMMYUNIONNAME8
+# define DUMMYUNIONNAME9
+# endif
+#endif /* DUMMYUNIONNAME */
+
+#ifndef DUMMYSTRUCTNAME
+# ifdef NONAMELESSUNION
+# define DUMMYSTRUCTNAME s
+# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2 s2
+# define DUMMYSTRUCTNAME3 s3
+# define DUMMYSTRUCTNAME4 s4
+# define DUMMYSTRUCTNAME5 s5
+# else
+# define DUMMYSTRUCTNAME
+# define DUMMYSTRUCTNAME1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2
+# define DUMMYSTRUCTNAME3
+# define DUMMYSTRUCTNAME4
+# define DUMMYSTRUCTNAME5
+# endif
+#endif /* DUMMYSTRUCTNAME */
+
+
+/* Macros for __uuidof template-based emulation */
+#if defined(__cplusplus) && (USE___UUIDOF == 0)
+
+#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ extern "C++" { \
+ template<> struct __mingw_uuidof_s<type> { \
+ static constexpr IID __uuid_inst = { \
+ l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8} \
+ }; \
+ }; \
+ template<> constexpr const GUID &__mingw_uuidof<type>() { \
+ return __mingw_uuidof_s<type>::__uuid_inst; \
+ } \
+ template<> constexpr const GUID &__mingw_uuidof<type*>() { \
+ return __mingw_uuidof_s<type>::__uuid_inst; \
+ } \
+ }
+#else
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ extern "C++" { \
+ template<> inline const GUID &__mingw_uuidof<type>() { \
+ static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
+ return __uuid_inst; \
+ } \
+ template<> inline const GUID &__mingw_uuidof<type*>() { \
+ return __mingw_uuidof<type>(); \
+ } \
+ }
+#endif
+
+#define __uuidof(type) __mingw_uuidof<__typeof(type)>()
+
+#else
+
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifdef __MINGW_INTRIN_INLINE
+#ifdef __has_builtin
+#define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak)
+#else
+#define __MINGW_DEBUGBREAK_IMPL 1
+#endif
+#if __MINGW_DEBUGBREAK_IMPL == 1
+void __cdecl __debugbreak(void);
+__MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
+{
+ __asm__ __volatile__("int {$}3":);
+}
+#endif
+#endif
+
+/* mingw-w64 specific functions: */
+const char *__mingw_get_crt_info (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC__MINGW_H */
+
+#ifndef MINGW_SDK_INIT
+#define MINGW_SDK_INIT
+
+/* for backward compatibility */
+#ifndef MINGW_HAS_SECURE_API
+#define MINGW_HAS_SECURE_API 1
+#endif
+
+#define __STDC_SECURE_LIB__ 200411L
+#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
+
+#ifndef __WIDL__
+#include "sdks/_mingw_ddk.h"
+#endif
+
+#endif /* MINGW_SDK_INIT */
diff --git a/src/_mingw_gcc1202.h b/src/_mingw_gcc1202.h
new file mode 100644
index 0000000..ca40495
--- /dev/null
+++ b/src/_mingw_gcc1202.h
@@ -0,0 +1,634 @@
+/* This is a copy of _mingw.h from MinGW headers (the toolchain installation,
+ should match the toolchain used. Modified/hacked to provide __uuidof()
+ operator - see HACK below.
+
+ There should be a cleaner solution, but this is what has been
+ done before.
+*/
+
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC__MINGW_H
+#define _INC__MINGW_H
+
+#include "_mingw_mac.h"
+#include "_mingw_secapi.h"
+
+/* Include _cygwin.h if we're building a Cygwin application. */
+#ifdef __CYGWIN__
+#include "_cygwin.h"
+#endif
+
+/* Target specific macro replacement for type "long". In the Windows API,
+ the type long is always 32 bit, even if the target is 64 bit (LLP64).
+ On 64 bit Cygwin, the type long is 64 bit (LP64). So, to get the right
+ sized definitions and declarations, all usage of type long in the Windows
+ headers have to be replaced by the below defined macro __LONG32. */
+#ifndef __LP64__ /* 32 bit target, 64 bit Mingw target */
+#define __LONG32 long
+#else /* 64 bit Cygwin target */
+#define __LONG32 int
+#endif
+
+/* C/C++ specific language defines. */
+#ifdef _WIN64
+#ifdef __stdcall
+#undef __stdcall
+#endif
+#define __stdcall
+#endif
+
+#ifndef __GNUC__
+# ifndef __MINGW_IMPORT
+# define __MINGW_IMPORT __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+# define _CRTIMP __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x) /* nothing */
+#else /* __GNUC__ */
+# ifdef __declspec
+# ifndef __MINGW_IMPORT
+/* Note the extern. This is needed to work around GCC's
+limitations in handling dllimport attribute. */
+# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
+# endif
+# ifndef _CRTIMP
+# undef __USE_CRTIMP
+# if !defined (_CRTBLD) && !defined (_SYSCRT)
+# define __USE_CRTIMP 1
+# endif
+# ifdef __USE_CRTIMP
+# define _CRTIMP __attribute__ ((__dllimport__))
+# else
+# define _CRTIMP
+# endif
+# endif
+# define __DECLSPEC_SUPPORTED
+# else /* __declspec */
+# undef __DECLSPEC_SUPPORTED
+# undef __MINGW_IMPORT
+# ifndef _CRTIMP
+# define _CRTIMP
+# endif
+# endif /* __declspec */
+#endif /* __GNUC__ */
+
+#ifdef _MSC_VER
+#define USE___UUIDOF 0
+#else
+#define USE___UUIDOF 0
+#endif
+
+#if !defined(_MSC_VER) && !defined(_inline)
+#define _inline __inline
+#endif
+
+#ifdef __cplusplus
+# define __CRT_INLINE inline
+#elif defined(_MSC_VER)
+# define __CRT_INLINE __inline
+#else
+# if ((__MINGW_GNUC_PREREQ(4, 3) || defined(__clang__)) && __STDC_VERSION__ >= 199901L)
+# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
+# else
+# define __CRT_INLINE extern __inline__
+# endif
+#endif
+
+#if !defined(__MINGW_INTRIN_INLINE) && defined(__GNUC__)
+#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif
+
+#ifndef __CYGWIN__
+#ifdef __NO_INLINE__
+#undef __CRT__NO_INLINE
+#define __CRT__NO_INLINE 1
+#endif
+#endif
+
+#ifdef __cplusplus
+# define __UNUSED_PARAM(x)
+#else
+# ifdef __GNUC__
+# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
+# else
+# define __UNUSED_PARAM(x) x
+# endif
+#endif
+
+#ifndef __GNUC__
+# ifdef _MSC_VER
+# define __restrict__ __restrict
+# else
+# define __restrict__ /* nothing */
+# endif
+#endif /* !__GNUC__ */
+
+#if __MINGW_GNUC_PREREQ (3,1) && !defined __GNUG__
+# define __restrict_arr __restrict
+#elif defined(_MSC_VER)
+# define __restrict_arr __restrict
+#else
+# ifdef __GNUC__
+# define __restrict_arr /* Not supported in old GCC. */
+# else
+# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+# define __restrict_arr restrict
+# else
+# define __restrict_arr /* Not supported. */
+# endif
+# endif
+#endif
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
+#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
+#define __MINGW_ATTRIB_CONST
+#else
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 0)
+#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
+#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
+#elif __MINGW_MSC_PREREQ(14, 0)
+#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
+#define __MINGW_ATTRIB_PURE
+#else
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#endif
+
+/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
+ variadiac macro facility, because variadic macros cause syntax
+ errors with --traditional-cpp. */
+#if __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
+#else
+#define __MINGW_ATTRIB_NONNULL(arg)
+#endif /* GNUC >= 3.3 */
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
+#else
+#define __MINGW_ATTRIB_UNUSED
+#endif /* ATTRIBUTE_UNUSED */
+
+#if __MINGW_GNUC_PREREQ (3, 1)
+#define __MINGW_ATTRIB_USED __attribute__ ((__used__))
+#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
+#if __MINGW_GNUC_PREREQ (4, 5) || defined (__clang__)
+#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x)))
+#endif
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_USED
+#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
+#else
+#define __MINGW_ATTRIB_USED __MINGW_ATTRIB_UNUSED
+#define __MINGW_ATTRIB_DEPRECATED
+#endif /* GNUC >= 3.1 */
+
+#ifndef __MINGW_ATTRIB_DEPRECATED_MSG
+#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __MINGW_ATTRIB_DEPRECATED
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
+#define __MINGW_NOTHROW __declspec(nothrow)
+#else
+#define __MINGW_NOTHROW
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
+#else
+#define __MINGW_ATTRIB_NO_OPTIMIZE
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
+#elif __MINGW_MSC_PREREQ (13, 1)
+#define __MINGW_PRAGMA_PARAM(x) __pragma (x)
+#else
+#define __MINGW_PRAGMA_PARAM(x)
+#endif
+
+#define __MINGW_BROKEN_INTERFACE(x) \
+ __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) \
+ " has unverified layout."))
+
+#ifndef __MSVCRT_VERSION__
+/* High byte is the major version, low byte is the minor. */
+# if defined(__CRTDLL__)
+# define __MSVCRT_VERSION__ 0x00
+# elif defined(_UCRT)
+# define __MSVCRT_VERSION__ 0xE00
+# else
+# define __MSVCRT_VERSION__ 0xE00
+# endif
+#endif
+
+#if !defined(_UCRT) && ((__MSVCRT_VERSION__ >= 0x1400) || (__MSVCRT_VERSION__ >= 0xE00 && __MSVCRT_VERSION__ < 0x1000))
+/* Allow both 0x1400 and 0xE00 to identify UCRT */
+#define _UCRT
+#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0xa00
+#endif
+
+#ifndef _INT128_DEFINED
+#define _INT128_DEFINED
+#ifdef __GNUC__
+#define __int8 char
+#define __int16 short
+#define __int32 int
+#define __int64 long long
+#ifdef _WIN64
+#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
+ !defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
+#define __SIZEOF_INT128__ 16
+#endif
+#ifndef __SIZEOF_INT128__
+typedef int __int128 __attribute__ ((__mode__ (TI)));
+#endif
+#endif
+#endif /* __GNUC__ */
+#endif /* _INT128_DEFINED */
+
+#ifdef __GNUC__
+#define __ptr32
+#define __ptr64
+#ifndef __unaligned
+#define __unaligned
+#endif
+#ifndef __w64
+#define __w64
+#endif
+#ifdef __cplusplus
+#define __forceinline inline __attribute__((__always_inline__))
+#else
+#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif /* __cplusplus */
+#endif /* __GNUC__ */
+
+#if !defined(_WIN32) && !defined(__CYGWIN__)
+#error Only Win32 target is supported!
+#endif
+
+#ifndef __nothrow
+#ifdef __cplusplus
+#define __nothrow __MINGW_NOTHROW
+#else
+#define __nothrow
+#endif
+#endif /* __nothrow */
+
+#include <vadefs.h> /* other headers depend on this include */
+
+#ifndef _CRT_STRINGIZE
+#define __CRT_STRINGIZE(_Value) #_Value
+#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
+#endif /* _CRT_STRINGIZE */
+
+#ifndef _CRT_WIDE
+#define __CRT_WIDE(_String) L ## _String
+#define _CRT_WIDE(_String) __CRT_WIDE(_String)
+#endif /* _CRT_WIDE */
+
+#ifndef _W64
+#define _W64
+#endif
+
+#ifndef _CRTIMP_NOIA64
+#ifdef __ia64__
+#define _CRTIMP_NOIA64
+#else
+#define _CRTIMP_NOIA64 _CRTIMP
+#endif
+#endif /* _CRTIMP_NOIA64 */
+
+#ifndef _CRTIMP2
+#define _CRTIMP2 _CRTIMP
+#endif
+
+#ifndef _CRTIMP_ALTERNATIVE
+#define _CRTIMP_ALTERNATIVE _CRTIMP
+#define _CRT_ALTERNATIVE_IMPORTED
+#endif /* _CRTIMP_ALTERNATIVE */
+
+#ifndef _MRTIMP2
+#define _MRTIMP2 _CRTIMP
+#endif
+
+/* We have to define _DLL for gcc based mingw version. This define is set
+ by VC, when DLL-based runtime is used. So, gcc based runtime just have
+ DLL-base runtime, therefore this define has to be set.
+ As our headers are possibly used by windows compiler having a static
+ C-runtime, we make this definition gnu compiler specific here. */
+#if !defined (_DLL) && defined (__GNUC__)
+#define _DLL
+#endif
+
+#ifndef _MT
+#define _MT
+#endif
+
+#ifndef _MCRTIMP
+#define _MCRTIMP _CRTIMP
+#endif
+
+#ifndef _CRTIMP_PURE
+#define _CRTIMP_PURE _CRTIMP
+#endif
+
+#ifndef _PGLOBAL
+#define _PGLOBAL
+#endif
+
+#ifndef _AGLOBAL
+#define _AGLOBAL
+#endif
+
+#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
+#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
+
+#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
+#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
+#endif
+
+#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
+#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
+#endif
+
+#ifndef _CRT_MANAGED_HEAP_DEPRECATE
+#define _CRT_MANAGED_HEAP_DEPRECATE
+#endif
+
+#ifndef _CRT_OBSOLETE
+#define _CRT_OBSOLETE(_NewItem)
+#endif
+
+#ifndef __WIDL__
+
+#if defined (_WIN32) && !defined (_WIN64) && !defined (__MINGW_USE_VC2005_COMPAT) && !defined (_UCRT)
+#ifndef _USE_32BIT_TIME_T
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
+
+#ifndef UNALIGNED
+#if defined(__ia64__) || defined(__x86_64__)
+#define UNALIGNED __unaligned
+#else
+#define UNALIGNED
+#endif
+#endif /* UNALIGNED */
+
+#ifndef _CRT_ALIGN
+#ifdef _MSC_VER
+#define _CRT_ALIGN(x) __declspec(align(x))
+#else /* __GNUC__ */
+#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
+#endif
+#endif /* _CRT_ALIGN */
+
+#endif /* __WIDL__ */
+
+#ifndef __CRTDECL
+#define __CRTDECL __cdecl
+#endif
+
+#define _ARGMAX 100
+
+#ifndef _TRUNCATE
+#define _TRUNCATE ((size_t)-1)
+#endif
+
+#ifndef _CRT_UNUSED
+#define _CRT_UNUSED(x) (void)x
+#endif
+
+/* MSVC defines _NATIVE_NULLPTR_SUPPORTED when nullptr is supported. We emulate it here for GCC. */
+#if __MINGW_GNUC_PREREQ(4, 6)
+#if defined(__GNUC__) && (defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
+#define _NATIVE_NULLPTR_SUPPORTED
+#endif
+#endif
+
+/* We are activating __USE_MINGW_ANSI_STDIO for various define indicators.
+ * printf ll modifier (unsupported by msvcrt.dll) is required by C99 and C++11 standards. */
+#if (defined (_POSIX) || defined (_POSIX_SOURCE) || defined (_POSIX_C_SOURCE) \
+ || defined (_ISOC99_SOURCE) \
+ || (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && __MSVCRT_VERSION__ < 0xE00) \
+ || (defined (__cplusplus) && __cplusplus >= 201103L && __MSVCRT_VERSION__ < 0xE00) \
+ || defined (_XOPEN_SOURCE) || defined (_XOPEN_SOURCE_EXTENDED) \
+ || defined (_GNU_SOURCE) \
+ || defined (_SVID_SOURCE)) \
+ && !defined(__USE_MINGW_ANSI_STDIO)
+/* Enable __USE_MINGW_ANSI_STDIO if user did _not_ specify it explicitly... */
+# define __USE_MINGW_ANSI_STDIO 1
+#endif
+
+/* We are defining __USE_MINGW_ANSI_STDIO as 0 or 1 */
+#if !defined(__USE_MINGW_ANSI_STDIO)
+#define __USE_MINGW_ANSI_STDIO 0 /* was not defined so it should be 0 */
+#elif (__USE_MINGW_ANSI_STDIO + 0) != 0 || (1 - __USE_MINGW_ANSI_STDIO - 1) == 2
+#define __USE_MINGW_ANSI_STDIO 1 /* was defined as nonzero or empty so it should be 1 */
+#else
+#define __USE_MINGW_ANSI_STDIO 0 /* was defined as (int)zero and non-empty so it should be 0 */
+#endif
+
+/* _dowildcard is an int that controls the globbing of the command line.
+ * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
+ * a compatibility definition here: you can use either of _CRT_glob or
+ * _dowildcard .
+ * If _dowildcard is non-zero, the command line will be globbed: *.*
+ * will be expanded to be all files in the startup directory.
+ * In the mingw-w64 library a _dowildcard variable is defined as being
+ * 0, therefore command line globbing is DISABLED by default. To turn it
+ * on and to leave wildcard command line processing MS's globbing code,
+ * include a line in one of your source modules defining _dowildcard and
+ * setting it to -1, like so:
+ * int _dowildcard = -1;
+ */
+#undef _CRT_glob
+#define _CRT_glob _dowildcard
+
+
+#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSSTRUCT) && \
+ !defined(NONAMELESSUNION)
+#define NONAMELESSUNION 1
+#endif
+#if defined(NONAMELESSUNION) && \
+ !defined(NONAMELESSSTRUCT)
+#define NONAMELESSSTRUCT 1
+#endif
+
+#ifndef __ANONYMOUS_DEFINED
+#define __ANONYMOUS_DEFINED
+#define _ANONYMOUS_UNION __MINGW_EXTENSION
+#define _ANONYMOUS_STRUCT __MINGW_EXTENSION
+#ifndef NONAMELESSUNION
+#define _UNION_NAME(x)
+#define _STRUCT_NAME(x)
+#else /* NONAMELESSUNION */
+#define _UNION_NAME(x) x
+#define _STRUCT_NAME(x) x
+#endif
+#endif /* __ANONYMOUS_DEFINED */
+
+#ifndef DUMMYUNIONNAME
+# ifdef NONAMELESSUNION
+# define DUMMYUNIONNAME u
+# define DUMMYUNIONNAME1 u1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2 u2
+# define DUMMYUNIONNAME3 u3
+# define DUMMYUNIONNAME4 u4
+# define DUMMYUNIONNAME5 u5
+# define DUMMYUNIONNAME6 u6
+# define DUMMYUNIONNAME7 u7
+# define DUMMYUNIONNAME8 u8
+# define DUMMYUNIONNAME9 u9
+# else /* NONAMELESSUNION */
+# define DUMMYUNIONNAME
+# define DUMMYUNIONNAME1 /* Wine uses this variant */
+# define DUMMYUNIONNAME2
+# define DUMMYUNIONNAME3
+# define DUMMYUNIONNAME4
+# define DUMMYUNIONNAME5
+# define DUMMYUNIONNAME6
+# define DUMMYUNIONNAME7
+# define DUMMYUNIONNAME8
+# define DUMMYUNIONNAME9
+# endif
+#endif /* DUMMYUNIONNAME */
+
+#ifndef DUMMYSTRUCTNAME
+# ifdef NONAMELESSUNION
+# define DUMMYSTRUCTNAME s
+# define DUMMYSTRUCTNAME1 s1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2 s2
+# define DUMMYSTRUCTNAME3 s3
+# define DUMMYSTRUCTNAME4 s4
+# define DUMMYSTRUCTNAME5 s5
+# else
+# define DUMMYSTRUCTNAME
+# define DUMMYSTRUCTNAME1 /* Wine uses this variant */
+# define DUMMYSTRUCTNAME2
+# define DUMMYSTRUCTNAME3
+# define DUMMYSTRUCTNAME4
+# define DUMMYSTRUCTNAME5
+# endif
+#endif /* DUMMYSTRUCTNAME */
+
+
+/* Macros for __uuidof template-based emulation */
+#if defined(__cplusplus) && (USE___UUIDOF == 0)
+
+#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ extern "C++" { \
+ template<> struct __mingw_uuidof_s<type> { \
+ static constexpr IID __uuid_inst = { \
+ l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8} \
+ }; \
+ }; \
+ template<> constexpr const GUID &__mingw_uuidof<type>() { \
+ return __mingw_uuidof_s<type>::__uuid_inst; \
+ } \
+ template<> constexpr const GUID &__mingw_uuidof<type*>() { \
+ return __mingw_uuidof_s<type>::__uuid_inst; \
+ } \
+ }
+#else
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ extern "C++" { \
+ template<> inline const GUID &__mingw_uuidof<type>() { \
+ static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
+ return __uuid_inst; \
+ } \
+ template<> inline const GUID &__mingw_uuidof<type*>() { \
+ return __mingw_uuidof<type>(); \
+ } \
+ }
+#endif
+
+#define __uuidof(type) __mingw_uuidof<__typeof(type)>()
+
+#else
+
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifdef __MINGW_INTRIN_INLINE
+#ifdef __has_builtin
+#define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak)
+#else
+#define __MINGW_DEBUGBREAK_IMPL 1
+#endif
+#if __MINGW_DEBUGBREAK_IMPL == 1
+void __cdecl __debugbreak(void);
+__MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
+{
+#if defined(__i386__) || defined(__x86_64__)
+ __asm__ __volatile__("int {$}3":);
+#elif defined(__arm__)
+ __asm__ __volatile__("udf #0xfe");
+#elif defined(__aarch64__)
+ __asm__ __volatile__("brk #0xf000");
+#else
+ __asm__ __volatile__("unimplemented");
+#endif
+}
+#endif
+#endif
+
+/* mingw-w64 specific functions: */
+const char *__mingw_get_crt_info (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INC__MINGW_H */
+
+#ifndef MINGW_SDK_INIT
+#define MINGW_SDK_INIT
+
+/* for backward compatibility */
+#ifndef MINGW_HAS_SECURE_API
+#define MINGW_HAS_SECURE_API 1
+#endif
+
+#define __STDC_SECURE_LIB__ 200411L
+#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
+
+#ifndef __WIDL__
+#include "sdks/_mingw_ddk.h"
+#endif
+
+#endif /* MINGW_SDK_INIT */