123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046 |
- /* Hedley - https://nemequ.github.io/hedley
- * Created by Evan Nemerson <evan@nemerson.com>
- *
- * To the extent possible under law, the author(s) have dedicated all
- * copyright and related and neighboring rights to this software to
- * the public domain worldwide. This software is distributed without
- * any warranty.
- *
- * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
- * SPDX-License-Identifier: CC0-1.0
- */
- #if !defined(HEDLEY_VERSION) || (HEDLEY_VERSION < 16)
- #if defined(HEDLEY_VERSION)
- # undef HEDLEY_VERSION
- #endif
- #define HEDLEY_VERSION 16
- #if defined(HEDLEY_STRINGIFY_EX)
- # undef HEDLEY_STRINGIFY_EX
- #endif
- #define HEDLEY_STRINGIFY_EX(x) #x
- #if defined(HEDLEY_STRINGIFY)
- # undef HEDLEY_STRINGIFY
- #endif
- #define HEDLEY_STRINGIFY(x) HEDLEY_STRINGIFY_EX(x)
- #if defined(HEDLEY_CONCAT_EX)
- # undef HEDLEY_CONCAT_EX
- #endif
- #define HEDLEY_CONCAT_EX(a,b) a##b
- #if defined(HEDLEY_CONCAT)
- # undef HEDLEY_CONCAT
- #endif
- #define HEDLEY_CONCAT(a,b) HEDLEY_CONCAT_EX(a,b)
- #if defined(HEDLEY_CONCAT3_EX)
- # undef HEDLEY_CONCAT3_EX
- #endif
- #define HEDLEY_CONCAT3_EX(a,b,c) a##b##c
- #if defined(HEDLEY_CONCAT3)
- # undef HEDLEY_CONCAT3
- #endif
- #define HEDLEY_CONCAT3(a,b,c) HEDLEY_CONCAT3_EX(a,b,c)
- #if defined(HEDLEY_VERSION_ENCODE)
- # undef HEDLEY_VERSION_ENCODE
- #endif
- #define HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))
- #if defined(HEDLEY_VERSION_DECODE_MAJOR)
- # undef HEDLEY_VERSION_DECODE_MAJOR
- #endif
- #define HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)
- #if defined(HEDLEY_VERSION_DECODE_MINOR)
- # undef HEDLEY_VERSION_DECODE_MINOR
- #endif
- #define HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)
- #if defined(HEDLEY_VERSION_DECODE_REVISION)
- # undef HEDLEY_VERSION_DECODE_REVISION
- #endif
- #define HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)
- #if defined(HEDLEY_GNUC_VERSION)
- # undef HEDLEY_GNUC_VERSION
- #endif
- #if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
- # define HEDLEY_GNUC_VERSION HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
- #elif defined(__GNUC__)
- # define HEDLEY_GNUC_VERSION HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)
- #endif
- #if defined(HEDLEY_GNUC_VERSION_CHECK)
- # undef HEDLEY_GNUC_VERSION_CHECK
- #endif
- #if defined(HEDLEY_GNUC_VERSION)
- # define HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (HEDLEY_GNUC_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_MSVC_VERSION)
- # undef HEDLEY_MSVC_VERSION
- #endif
- #if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL)
- # define HEDLEY_MSVC_VERSION HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)
- #elif defined(_MSC_FULL_VER) && !defined(__ICL)
- # define HEDLEY_MSVC_VERSION HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)
- #elif defined(_MSC_VER) && !defined(__ICL)
- # define HEDLEY_MSVC_VERSION HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)
- #endif
- #if defined(HEDLEY_MSVC_VERSION_CHECK)
- # undef HEDLEY_MSVC_VERSION_CHECK
- #endif
- #if !defined(HEDLEY_MSVC_VERSION)
- # define HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)
- #elif defined(_MSC_VER) && (_MSC_VER >= 1400)
- # define HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
- #elif defined(_MSC_VER) && (_MSC_VER >= 1200)
- # define HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
- #else
- # define HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))
- #endif
- #if defined(HEDLEY_INTEL_VERSION)
- # undef HEDLEY_INTEL_VERSION
- #endif
- #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL)
- # define HEDLEY_INTEL_VERSION HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)
- #elif defined(__INTEL_COMPILER) && !defined(__ICL)
- # define HEDLEY_INTEL_VERSION HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
- #endif
- #if defined(HEDLEY_INTEL_VERSION_CHECK)
- # undef HEDLEY_INTEL_VERSION_CHECK
- #endif
- #if defined(HEDLEY_INTEL_VERSION)
- # define HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (HEDLEY_INTEL_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_INTEL_CL_VERSION)
- # undef HEDLEY_INTEL_CL_VERSION
- #endif
- #if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL)
- # define HEDLEY_INTEL_CL_VERSION HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0)
- #endif
- #if defined(HEDLEY_INTEL_CL_VERSION_CHECK)
- # undef HEDLEY_INTEL_CL_VERSION_CHECK
- #endif
- #if defined(HEDLEY_INTEL_CL_VERSION)
- # define HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (HEDLEY_INTEL_CL_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_PGI_VERSION)
- # undef HEDLEY_PGI_VERSION
- #endif
- #if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
- # define HEDLEY_PGI_VERSION HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
- #endif
- #if defined(HEDLEY_PGI_VERSION_CHECK)
- # undef HEDLEY_PGI_VERSION_CHECK
- #endif
- #if defined(HEDLEY_PGI_VERSION)
- # define HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (HEDLEY_PGI_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_SUNPRO_VERSION)
- # undef HEDLEY_SUNPRO_VERSION
- #endif
- #if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
- # define HEDLEY_SUNPRO_VERSION HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)
- #elif defined(__SUNPRO_C)
- # define HEDLEY_SUNPRO_VERSION HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)
- #elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
- # define HEDLEY_SUNPRO_VERSION HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)
- #elif defined(__SUNPRO_CC)
- # define HEDLEY_SUNPRO_VERSION HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)
- #endif
- #if defined(HEDLEY_SUNPRO_VERSION_CHECK)
- # undef HEDLEY_SUNPRO_VERSION_CHECK
- #endif
- #if defined(HEDLEY_SUNPRO_VERSION)
- # define HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (HEDLEY_SUNPRO_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_EMSCRIPTEN_VERSION)
- # undef HEDLEY_EMSCRIPTEN_VERSION
- #endif
- #if defined(__EMSCRIPTEN__)
- # include <emscripten.h>
- # define HEDLEY_EMSCRIPTEN_VERSION HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)
- #endif
- #if defined(HEDLEY_EMSCRIPTEN_VERSION_CHECK)
- # undef HEDLEY_EMSCRIPTEN_VERSION_CHECK
- #endif
- #if defined(HEDLEY_EMSCRIPTEN_VERSION)
- # define HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (HEDLEY_EMSCRIPTEN_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_ARM_VERSION)
- # undef HEDLEY_ARM_VERSION
- #endif
- #if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
- # define HEDLEY_ARM_VERSION HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)
- #elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
- # define HEDLEY_ARM_VERSION HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)
- #endif
- #if defined(HEDLEY_ARM_VERSION_CHECK)
- # undef HEDLEY_ARM_VERSION_CHECK
- #endif
- #if defined(HEDLEY_ARM_VERSION)
- # define HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (HEDLEY_ARM_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_IBM_VERSION)
- # undef HEDLEY_IBM_VERSION
- #endif
- #if defined(__ibmxl__)
- # define HEDLEY_IBM_VERSION HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)
- #elif defined(__xlC__) && defined(__xlC_ver__)
- # define HEDLEY_IBM_VERSION HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
- #elif defined(__xlC__)
- # define HEDLEY_IBM_VERSION HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0)
- #endif
- #if defined(HEDLEY_IBM_VERSION_CHECK)
- # undef HEDLEY_IBM_VERSION_CHECK
- #endif
- #if defined(HEDLEY_IBM_VERSION)
- # define HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (HEDLEY_IBM_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_VERSION)
- # undef HEDLEY_TI_VERSION
- #endif
- #if \
- defined(__TI_COMPILER_VERSION__) && \
- ( \
- defined(__TMS470__) || defined(__TI_ARM__) || \
- defined(__MSP430__) || \
- defined(__TMS320C2000__) \
- )
- # if (__TI_COMPILER_VERSION__ >= 16000000)
- # define HEDLEY_TI_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- # endif
- #endif
- #if defined(HEDLEY_TI_VERSION_CHECK)
- # undef HEDLEY_TI_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_VERSION)
- # define HEDLEY_TI_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_CL2000_VERSION)
- # undef HEDLEY_TI_CL2000_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__)
- # define HEDLEY_TI_CL2000_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_CL2000_VERSION_CHECK)
- # undef HEDLEY_TI_CL2000_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_CL2000_VERSION)
- # define HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_CL2000_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_CL430_VERSION)
- # undef HEDLEY_TI_CL430_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__)
- # define HEDLEY_TI_CL430_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_CL430_VERSION_CHECK)
- # undef HEDLEY_TI_CL430_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_CL430_VERSION)
- # define HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_CL430_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_ARMCL_VERSION)
- # undef HEDLEY_TI_ARMCL_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__))
- # define HEDLEY_TI_ARMCL_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_ARMCL_VERSION_CHECK)
- # undef HEDLEY_TI_ARMCL_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_ARMCL_VERSION)
- # define HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_ARMCL_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_CL6X_VERSION)
- # undef HEDLEY_TI_CL6X_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__)
- # define HEDLEY_TI_CL6X_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_CL6X_VERSION_CHECK)
- # undef HEDLEY_TI_CL6X_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_CL6X_VERSION)
- # define HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_CL6X_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_CL7X_VERSION)
- # undef HEDLEY_TI_CL7X_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && defined(__C7000__)
- # define HEDLEY_TI_CL7X_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_CL7X_VERSION_CHECK)
- # undef HEDLEY_TI_CL7X_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_CL7X_VERSION)
- # define HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_CL7X_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TI_CLPRU_VERSION)
- # undef HEDLEY_TI_CLPRU_VERSION
- #endif
- #if defined(__TI_COMPILER_VERSION__) && defined(__PRU__)
- # define HEDLEY_TI_CLPRU_VERSION HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))
- #endif
- #if defined(HEDLEY_TI_CLPRU_VERSION_CHECK)
- # undef HEDLEY_TI_CLPRU_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TI_CLPRU_VERSION)
- # define HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (HEDLEY_TI_CLPRU_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_CRAY_VERSION)
- # undef HEDLEY_CRAY_VERSION
- #endif
- #if defined(_CRAYC)
- # if defined(_RELEASE_PATCHLEVEL)
- # define HEDLEY_CRAY_VERSION HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)
- # else
- # define HEDLEY_CRAY_VERSION HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)
- # endif
- #endif
- #if defined(HEDLEY_CRAY_VERSION_CHECK)
- # undef HEDLEY_CRAY_VERSION_CHECK
- #endif
- #if defined(HEDLEY_CRAY_VERSION)
- # define HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (HEDLEY_CRAY_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_IAR_VERSION)
- # undef HEDLEY_IAR_VERSION
- #endif
- #if defined(__IAR_SYSTEMS_ICC__)
- # if __VER__ > 1000
- # define HEDLEY_IAR_VERSION HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))
- # else
- # define HEDLEY_IAR_VERSION HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0)
- # endif
- #endif
- #if defined(HEDLEY_IAR_VERSION_CHECK)
- # undef HEDLEY_IAR_VERSION_CHECK
- #endif
- #if defined(HEDLEY_IAR_VERSION)
- # define HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (HEDLEY_IAR_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_TINYC_VERSION)
- # undef HEDLEY_TINYC_VERSION
- #endif
- #if defined(__TINYC__)
- # define HEDLEY_TINYC_VERSION HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
- #endif
- #if defined(HEDLEY_TINYC_VERSION_CHECK)
- # undef HEDLEY_TINYC_VERSION_CHECK
- #endif
- #if defined(HEDLEY_TINYC_VERSION)
- # define HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (HEDLEY_TINYC_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_DMC_VERSION)
- # undef HEDLEY_DMC_VERSION
- #endif
- #if defined(__DMC__)
- # define HEDLEY_DMC_VERSION HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)
- #endif
- #if defined(HEDLEY_DMC_VERSION_CHECK)
- # undef HEDLEY_DMC_VERSION_CHECK
- #endif
- #if defined(HEDLEY_DMC_VERSION)
- # define HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (HEDLEY_DMC_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_COMPCERT_VERSION)
- # undef HEDLEY_COMPCERT_VERSION
- #endif
- #if defined(__COMPCERT_VERSION__)
- # define HEDLEY_COMPCERT_VERSION HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)
- #endif
- #if defined(HEDLEY_COMPCERT_VERSION_CHECK)
- # undef HEDLEY_COMPCERT_VERSION_CHECK
- #endif
- #if defined(HEDLEY_COMPCERT_VERSION)
- # define HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (HEDLEY_COMPCERT_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_PELLES_VERSION)
- # undef HEDLEY_PELLES_VERSION
- #endif
- #if defined(__POCC__)
- # define HEDLEY_PELLES_VERSION HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)
- #endif
- #if defined(HEDLEY_PELLES_VERSION_CHECK)
- # undef HEDLEY_PELLES_VERSION_CHECK
- #endif
- #if defined(HEDLEY_PELLES_VERSION)
- # define HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (HEDLEY_PELLES_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_MCST_LCC_VERSION)
- # undef HEDLEY_MCST_LCC_VERSION
- #endif
- #if defined(__LCC__) && defined(__LCC_MINOR__)
- # define HEDLEY_MCST_LCC_VERSION HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__)
- #endif
- #if defined(HEDLEY_MCST_LCC_VERSION_CHECK)
- # undef HEDLEY_MCST_LCC_VERSION_CHECK
- #endif
- #if defined(HEDLEY_MCST_LCC_VERSION)
- # define HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (HEDLEY_MCST_LCC_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_GCC_VERSION)
- # undef HEDLEY_GCC_VERSION
- #endif
- #if \
- defined(HEDLEY_GNUC_VERSION) && \
- !defined(__clang__) && \
- !defined(HEDLEY_INTEL_VERSION) && \
- !defined(HEDLEY_PGI_VERSION) && \
- !defined(HEDLEY_ARM_VERSION) && \
- !defined(HEDLEY_CRAY_VERSION) && \
- !defined(HEDLEY_TI_VERSION) && \
- !defined(HEDLEY_TI_ARMCL_VERSION) && \
- !defined(HEDLEY_TI_CL430_VERSION) && \
- !defined(HEDLEY_TI_CL2000_VERSION) && \
- !defined(HEDLEY_TI_CL6X_VERSION) && \
- !defined(HEDLEY_TI_CL7X_VERSION) && \
- !defined(HEDLEY_TI_CLPRU_VERSION) && \
- !defined(__COMPCERT__) && \
- !defined(HEDLEY_MCST_LCC_VERSION)
- # define HEDLEY_GCC_VERSION HEDLEY_GNUC_VERSION
- #endif
- #if defined(HEDLEY_GCC_VERSION_CHECK)
- # undef HEDLEY_GCC_VERSION_CHECK
- #endif
- #if defined(HEDLEY_GCC_VERSION)
- # define HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (HEDLEY_GCC_VERSION >= HEDLEY_VERSION_ENCODE(major, minor, patch))
- #else
- # define HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)
- #endif
- #if defined(HEDLEY_HAS_ATTRIBUTE)
- # undef HEDLEY_HAS_ATTRIBUTE
- #endif
- #if \
- defined(__has_attribute) && \
- ( \
- (!defined(HEDLEY_IAR_VERSION) || HEDLEY_IAR_VERSION_CHECK(8,5,9)) \
- )
- # define HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)
- #else
- # define HEDLEY_HAS_ATTRIBUTE(attribute) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_ATTRIBUTE)
- # undef HEDLEY_GNUC_HAS_ATTRIBUTE
- #endif
- #if defined(__has_attribute)
- # define HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_HAS_ATTRIBUTE(attribute)
- #else
- # define HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_ATTRIBUTE)
- # undef HEDLEY_GCC_HAS_ATTRIBUTE
- #endif
- #if defined(__has_attribute)
- # define HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_HAS_ATTRIBUTE(attribute)
- #else
- # define HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_CPP_ATTRIBUTE)
- # undef HEDLEY_HAS_CPP_ATTRIBUTE
- #endif
- #if \
- defined(__has_cpp_attribute) && \
- defined(__cplusplus) && \
- (!defined(HEDLEY_SUNPRO_VERSION) || HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))
- # define HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)
- #else
- # define HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)
- #endif
- #if defined(HEDLEY_HAS_CPP_ATTRIBUTE_NS)
- # undef HEDLEY_HAS_CPP_ATTRIBUTE_NS
- #endif
- #if !defined(__cplusplus) || !defined(__has_cpp_attribute)
- # define HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
- #elif \
- !defined(HEDLEY_PGI_VERSION) && \
- !defined(HEDLEY_IAR_VERSION) && \
- (!defined(HEDLEY_SUNPRO_VERSION) || HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \
- (!defined(HEDLEY_MSVC_VERSION) || HEDLEY_MSVC_VERSION_CHECK(19,20,0))
- # define HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)
- #else
- # define HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)
- # undef HEDLEY_GNUC_HAS_CPP_ATTRIBUTE
- #endif
- #if defined(__has_cpp_attribute) && defined(__cplusplus)
- # define HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
- #else
- # define HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_CPP_ATTRIBUTE)
- # undef HEDLEY_GCC_HAS_CPP_ATTRIBUTE
- #endif
- #if defined(__has_cpp_attribute) && defined(__cplusplus)
- # define HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)
- #else
- # define HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_BUILTIN)
- # undef HEDLEY_HAS_BUILTIN
- #endif
- #if defined(__has_builtin)
- # define HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)
- #else
- # define HEDLEY_HAS_BUILTIN(builtin) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_BUILTIN)
- # undef HEDLEY_GNUC_HAS_BUILTIN
- #endif
- #if defined(__has_builtin)
- # define HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
- #else
- # define HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_BUILTIN)
- # undef HEDLEY_GCC_HAS_BUILTIN
- #endif
- #if defined(__has_builtin)
- # define HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)
- #else
- # define HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_FEATURE)
- # undef HEDLEY_HAS_FEATURE
- #endif
- #if defined(__has_feature)
- # define HEDLEY_HAS_FEATURE(feature) __has_feature(feature)
- #else
- # define HEDLEY_HAS_FEATURE(feature) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_FEATURE)
- # undef HEDLEY_GNUC_HAS_FEATURE
- #endif
- #if defined(__has_feature)
- # define HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
- #else
- # define HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_FEATURE)
- # undef HEDLEY_GCC_HAS_FEATURE
- #endif
- #if defined(__has_feature)
- # define HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)
- #else
- # define HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_EXTENSION)
- # undef HEDLEY_HAS_EXTENSION
- #endif
- #if defined(__has_extension)
- # define HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)
- #else
- # define HEDLEY_HAS_EXTENSION(extension) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_EXTENSION)
- # undef HEDLEY_GNUC_HAS_EXTENSION
- #endif
- #if defined(__has_extension)
- # define HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
- #else
- # define HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_EXTENSION)
- # undef HEDLEY_GCC_HAS_EXTENSION
- #endif
- #if defined(__has_extension)
- # define HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)
- #else
- # define HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_DECLSPEC_ATTRIBUTE)
- # undef HEDLEY_HAS_DECLSPEC_ATTRIBUTE
- #endif
- #if defined(__has_declspec_attribute)
- # define HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)
- #else
- # define HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)
- # undef HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE
- #endif
- #if defined(__has_declspec_attribute)
- # define HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
- #else
- # define HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)
- # undef HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE
- #endif
- #if defined(__has_declspec_attribute)
- # define HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)
- #else
- # define HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_HAS_WARNING)
- # undef HEDLEY_HAS_WARNING
- #endif
- #if defined(__has_warning)
- # define HEDLEY_HAS_WARNING(warning) __has_warning(warning)
- #else
- # define HEDLEY_HAS_WARNING(warning) (0)
- #endif
- #if defined(HEDLEY_GNUC_HAS_WARNING)
- # undef HEDLEY_GNUC_HAS_WARNING
- #endif
- #if defined(__has_warning)
- # define HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
- #else
- # define HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_GCC_HAS_WARNING)
- # undef HEDLEY_GCC_HAS_WARNING
- #endif
- #if defined(__has_warning)
- # define HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)
- #else
- # define HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if \
- (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
- defined(__clang__) || \
- HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
- HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \
- HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \
- HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \
- (HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR))
- # define HEDLEY_PRAGMA(value) _Pragma(#value)
- #elif HEDLEY_MSVC_VERSION_CHECK(15,0,0)
- # define HEDLEY_PRAGMA(value) __pragma(value)
- #else
- # define HEDLEY_PRAGMA(value)
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_PUSH)
- # undef HEDLEY_DIAGNOSTIC_PUSH
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_POP)
- # undef HEDLEY_DIAGNOSTIC_POP
- #endif
- #if defined(__clang__)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop")
- #elif HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
- #elif HEDLEY_GCC_VERSION_CHECK(4,6,0)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))
- # define HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))
- #elif HEDLEY_ARM_VERSION_CHECK(5,6,0)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("push")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("pop")
- #elif \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop")
- #elif HEDLEY_PELLES_VERSION_CHECK(2,90,0)
- # define HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")
- # define HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")
- #else
- # define HEDLEY_DIAGNOSTIC_PUSH
- # define HEDLEY_DIAGNOSTIC_POP
- #endif
- /* HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for
- HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_
- #endif
- #if defined(__cplusplus)
- # if HEDLEY_HAS_WARNING("-Wc++98-compat")
- # if HEDLEY_HAS_WARNING("-Wc++17-extensions")
- # if HEDLEY_HAS_WARNING("-Wc++1z-extensions")
- # define HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
- _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \
- _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \
- xpr \
- HEDLEY_DIAGNOSTIC_POP
- # else
- # define HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
- _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \
- xpr \
- HEDLEY_DIAGNOSTIC_POP
- # endif
- # else
- # define HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \
- xpr \
- HEDLEY_DIAGNOSTIC_POP
- # endif
- # endif
- #endif
- #if !defined(HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)
- # define HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x
- #endif
- #if defined(HEDLEY_CONST_CAST)
- # undef HEDLEY_CONST_CAST
- #endif
- #if defined(__cplusplus)
- # define HEDLEY_CONST_CAST(T, expr) (const_cast<T>(expr))
- #elif \
- HEDLEY_HAS_WARNING("-Wcast-qual") || \
- HEDLEY_GCC_VERSION_CHECK(4,6,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \
- HEDLEY_DIAGNOSTIC_PUSH \
- HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \
- ((T) (expr)); \
- HEDLEY_DIAGNOSTIC_POP \
- }))
- #else
- # define HEDLEY_CONST_CAST(T, expr) ((T) (expr))
- #endif
- #if defined(HEDLEY_REINTERPRET_CAST)
- # undef HEDLEY_REINTERPRET_CAST
- #endif
- #if defined(__cplusplus)
- # define HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast<T>(expr))
- #else
- # define HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr))
- #endif
- #if defined(HEDLEY_STATIC_CAST)
- # undef HEDLEY_STATIC_CAST
- #endif
- #if defined(__cplusplus)
- # define HEDLEY_STATIC_CAST(T, expr) (static_cast<T>(expr))
- #else
- # define HEDLEY_STATIC_CAST(T, expr) ((T) (expr))
- #endif
- #if defined(HEDLEY_CPP_CAST)
- # undef HEDLEY_CPP_CAST
- #endif
- #if defined(__cplusplus)
- # if HEDLEY_HAS_WARNING("-Wold-style-cast")
- # define HEDLEY_CPP_CAST(T, expr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \
- ((T) (expr)) \
- HEDLEY_DIAGNOSTIC_POP
- # elif HEDLEY_IAR_VERSION_CHECK(8,3,0)
- # define HEDLEY_CPP_CAST(T, expr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("diag_suppress=Pe137") \
- HEDLEY_DIAGNOSTIC_POP
- # else
- # define HEDLEY_CPP_CAST(T, expr) ((T) (expr))
- # endif
- #else
- # define HEDLEY_CPP_CAST(T, expr) (expr)
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
- #endif
- #if HEDLEY_HAS_WARNING("-Wdeprecated-declarations")
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
- #elif HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)")
- #elif HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786))
- #elif HEDLEY_PGI_VERSION_CHECK(20,7,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445")
- #elif HEDLEY_PGI_VERSION_CHECK(17,10,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")
- #elif HEDLEY_GCC_VERSION_CHECK(4,3,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
- #elif HEDLEY_MSVC_VERSION_CHECK(15,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))
- #elif HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")
- #elif \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718")
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215")
- #elif HEDLEY_PELLES_VERSION_CHECK(2,90,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)")
- #else
- # define HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
- #endif
- #if HEDLEY_HAS_WARNING("-Wunknown-pragmas")
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")
- #elif HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")
- #elif HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161))
- #elif HEDLEY_PGI_VERSION_CHECK(17,10,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")
- #elif HEDLEY_GCC_VERSION_CHECK(4,3,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")
- #elif HEDLEY_MSVC_VERSION_CHECK(15,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))
- #elif \
- HEDLEY_TI_VERSION_CHECK(16,9,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
- #elif HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")
- #elif HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161")
- #else
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
- #endif
- #if HEDLEY_HAS_WARNING("-Wunknown-attributes")
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")
- #elif HEDLEY_GCC_VERSION_CHECK(4,6,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
- #elif HEDLEY_INTEL_VERSION_CHECK(17,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)")
- #elif HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292))
- #elif HEDLEY_MSVC_VERSION_CHECK(19,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))
- #elif HEDLEY_PGI_VERSION_CHECK(20,7,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098")
- #elif HEDLEY_PGI_VERSION_CHECK(17,10,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")
- #elif \
- HEDLEY_TI_VERSION_CHECK(18,1,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173")
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097")
- #elif HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")
- #else
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
- #endif
- #if HEDLEY_HAS_WARNING("-Wcast-qual")
- # define HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")
- #elif HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)")
- #elif HEDLEY_GCC_VERSION_CHECK(3,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")
- #else
- # define HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
- #endif
- #if defined(HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION)
- # undef HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION
- #endif
- #if HEDLEY_HAS_WARNING("-Wunused-function")
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"")
- #elif HEDLEY_GCC_VERSION_CHECK(3,4,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
- #elif HEDLEY_MSVC_VERSION_CHECK(1,0,0)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505))
- #elif HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142")
- #else
- # define HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION
- #endif
- #if defined(HEDLEY_DEPRECATED)
- # undef HEDLEY_DEPRECATED
- #endif
- #if defined(HEDLEY_DEPRECATED_FOR)
- # undef HEDLEY_DEPRECATED_FOR
- #endif
- #if \
- HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since))
- # define HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
- #elif \
- (HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(HEDLEY_IAR_VERSION)) || \
- HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \
- HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
- HEDLEY_TI_VERSION_CHECK(18,1,0) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since)))
- # define HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))
- #elif defined(__cplusplus) && (__cplusplus >= 201402L)
- # define HEDLEY_DEPRECATED(since) HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])
- # define HEDLEY_DEPRECATED_FOR(since, replacement) HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])
- #elif \
- HEDLEY_HAS_ATTRIBUTE(deprecated) || \
- HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \
- HEDLEY_IAR_VERSION_CHECK(8,10,0)
- # define HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))
- # define HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
- HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_DEPRECATED(since) __declspec(deprecated)
- # define HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_DEPRECATED(since) _Pragma("deprecated")
- # define HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated")
- #else
- # define HEDLEY_DEPRECATED(since)
- # define HEDLEY_DEPRECATED_FOR(since, replacement)
- #endif
- #if defined(HEDLEY_UNAVAILABLE)
- # undef HEDLEY_UNAVAILABLE
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(warning) || \
- HEDLEY_GCC_VERSION_CHECK(4,3,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))
- #else
- # define HEDLEY_UNAVAILABLE(available_since)
- #endif
- #if defined(HEDLEY_WARN_UNUSED_RESULT)
- # undef HEDLEY_WARN_UNUSED_RESULT
- #endif
- #if defined(HEDLEY_WARN_UNUSED_RESULT_MSG)
- # undef HEDLEY_WARN_UNUSED_RESULT_MSG
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \
- HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- (HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
- HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
- # define HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__))
- #elif (HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L)
- # define HEDLEY_WARN_UNUSED_RESULT HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
- # define HEDLEY_WARN_UNUSED_RESULT_MSG(msg) HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]])
- #elif HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard)
- # define HEDLEY_WARN_UNUSED_RESULT HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
- # define HEDLEY_WARN_UNUSED_RESULT_MSG(msg) HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])
- #elif defined(_Check_return_) /* SAL */
- # define HEDLEY_WARN_UNUSED_RESULT _Check_return_
- # define HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_
- #else
- # define HEDLEY_WARN_UNUSED_RESULT
- # define HEDLEY_WARN_UNUSED_RESULT_MSG(msg)
- #endif
- #if defined(HEDLEY_SENTINEL)
- # undef HEDLEY_SENTINEL
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(sentinel) || \
- HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_ARM_VERSION_CHECK(5,4,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))
- #else
- # define HEDLEY_SENTINEL(position)
- #endif
- #if defined(HEDLEY_NO_RETURN)
- # undef HEDLEY_NO_RETURN
- #endif
- #if HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_NO_RETURN __noreturn
- #elif \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_NO_RETURN __attribute__((__noreturn__))
- #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
- # define HEDLEY_NO_RETURN _Noreturn
- #elif defined(__cplusplus) && (__cplusplus >= 201103L)
- # define HEDLEY_NO_RETURN HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])
- #elif \
- HEDLEY_HAS_ATTRIBUTE(noreturn) || \
- HEDLEY_GCC_VERSION_CHECK(3,2,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_IAR_VERSION_CHECK(8,10,0)
- # define HEDLEY_NO_RETURN __attribute__((__noreturn__))
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
- # define HEDLEY_NO_RETURN _Pragma("does_not_return")
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_NO_RETURN __declspec(noreturn)
- #elif HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus)
- # define HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;")
- #elif HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
- # define HEDLEY_NO_RETURN __attribute((noreturn))
- #elif HEDLEY_PELLES_VERSION_CHECK(9,0,0)
- # define HEDLEY_NO_RETURN __declspec(noreturn)
- #else
- # define HEDLEY_NO_RETURN
- #endif
- #if defined(HEDLEY_NO_ESCAPE)
- # undef HEDLEY_NO_ESCAPE
- #endif
- #if HEDLEY_HAS_ATTRIBUTE(noescape)
- # define HEDLEY_NO_ESCAPE __attribute__((__noescape__))
- #else
- # define HEDLEY_NO_ESCAPE
- #endif
- #if defined(HEDLEY_UNREACHABLE)
- # undef HEDLEY_UNREACHABLE
- #endif
- #if defined(HEDLEY_UNREACHABLE_RETURN)
- # undef HEDLEY_UNREACHABLE_RETURN
- #endif
- #if defined(HEDLEY_ASSUME)
- # undef HEDLEY_ASSUME
- #endif
- #if \
- HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_ASSUME(expr) __assume(expr)
- #elif HEDLEY_HAS_BUILTIN(__builtin_assume)
- # define HEDLEY_ASSUME(expr) __builtin_assume(expr)
- #elif \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0)
- # if defined(__cplusplus)
- # define HEDLEY_ASSUME(expr) std::_nassert(expr)
- # else
- # define HEDLEY_ASSUME(expr) _nassert(expr)
- # endif
- #endif
- #if \
- (HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(HEDLEY_ARM_VERSION))) || \
- HEDLEY_GCC_VERSION_CHECK(4,5,0) || \
- HEDLEY_PGI_VERSION_CHECK(18,10,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_IBM_VERSION_CHECK(13,1,5) || \
- HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_UNREACHABLE() __builtin_unreachable()
- #elif defined(HEDLEY_ASSUME)
- # define HEDLEY_UNREACHABLE() HEDLEY_ASSUME(0)
- #endif
- #if !defined(HEDLEY_ASSUME)
- # if defined(HEDLEY_UNREACHABLE)
- # define HEDLEY_ASSUME(expr) HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (HEDLEY_UNREACHABLE(), 1)))
- # else
- # define HEDLEY_ASSUME(expr) HEDLEY_STATIC_CAST(void, expr)
- # endif
- #endif
- #if defined(HEDLEY_UNREACHABLE)
- # if \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0)
- # define HEDLEY_UNREACHABLE_RETURN(value) return (HEDLEY_STATIC_CAST(void, HEDLEY_ASSUME(0)), (value))
- # else
- # define HEDLEY_UNREACHABLE_RETURN(value) HEDLEY_UNREACHABLE()
- # endif
- #else
- # define HEDLEY_UNREACHABLE_RETURN(value) return (value)
- #endif
- #if !defined(HEDLEY_UNREACHABLE)
- # define HEDLEY_UNREACHABLE() HEDLEY_ASSUME(0)
- #endif
- HEDLEY_DIAGNOSTIC_PUSH
- #if HEDLEY_HAS_WARNING("-Wpedantic")
- # pragma clang diagnostic ignored "-Wpedantic"
- #endif
- #if HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus)
- # pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
- #endif
- #if HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0)
- # if defined(__clang__)
- # pragma clang diagnostic ignored "-Wvariadic-macros"
- # elif defined(HEDLEY_GCC_VERSION)
- # pragma GCC diagnostic ignored "-Wvariadic-macros"
- # endif
- #endif
- #if defined(HEDLEY_NON_NULL)
- # undef HEDLEY_NON_NULL
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(nonnull) || \
- HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0)
- # define HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
- #else
- # define HEDLEY_NON_NULL(...)
- #endif
- HEDLEY_DIAGNOSTIC_POP
- #if defined(HEDLEY_PRINTF_FORMAT)
- # undef HEDLEY_PRINTF_FORMAT
- #endif
- #if defined(__MINGW32__) && HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)
- # define HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))
- #elif defined(__MINGW32__) && HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)
- # define HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))
- #elif \
- HEDLEY_HAS_ATTRIBUTE(format) || \
- HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_ARM_VERSION_CHECK(5,6,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))
- #elif HEDLEY_PELLES_VERSION_CHECK(6,0,0)
- # define HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))
- #else
- # define HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)
- #endif
- #if defined(HEDLEY_CONSTEXPR)
- # undef HEDLEY_CONSTEXPR
- #endif
- #if defined(__cplusplus)
- # if __cplusplus >= 201103L
- # define HEDLEY_CONSTEXPR HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)
- # endif
- #endif
- #if !defined(HEDLEY_CONSTEXPR)
- # define HEDLEY_CONSTEXPR
- #endif
- #if defined(HEDLEY_PREDICT)
- # undef HEDLEY_PREDICT
- #endif
- #if defined(HEDLEY_LIKELY)
- # undef HEDLEY_LIKELY
- #endif
- #if defined(HEDLEY_UNLIKELY)
- # undef HEDLEY_UNLIKELY
- #endif
- #if defined(HEDLEY_UNPREDICTABLE)
- # undef HEDLEY_UNPREDICTABLE
- #endif
- #if HEDLEY_HAS_BUILTIN(__builtin_unpredictable)
- # define HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr))
- #endif
- #if \
- (HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(HEDLEY_PGI_VERSION) && !defined(HEDLEY_INTEL_VERSION)) || \
- HEDLEY_GCC_VERSION_CHECK(9,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability))
- # define HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability))
- # define HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability))
- # define HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 )
- # define HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 )
- #elif \
- (HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(HEDLEY_INTEL_CL_VERSION)) || \
- HEDLEY_GCC_VERSION_CHECK(3,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- (HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \
- HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_PREDICT(expr, expected, probability) \
- (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (HEDLEY_STATIC_CAST(void, expected), (expr)))
- # define HEDLEY_PREDICT_TRUE(expr, probability) \
- (__extension__ ({ \
- double hedley_probability_ = (probability); \
- ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \
- }))
- # define HEDLEY_PREDICT_FALSE(expr, probability) \
- (__extension__ ({ \
- double hedley_probability_ = (probability); \
- ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \
- }))
- # define HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)
- # define HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
- #else
- # define HEDLEY_PREDICT(expr, expected, probability) (HEDLEY_STATIC_CAST(void, expected), (expr))
- # define HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))
- # define HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))
- # define HEDLEY_LIKELY(expr) (!!(expr))
- # define HEDLEY_UNLIKELY(expr) (!!(expr))
- #endif
- #if !defined(HEDLEY_UNPREDICTABLE)
- # define HEDLEY_UNPREDICTABLE(expr) HEDLEY_PREDICT(expr, 1, 0.5)
- #endif
- #if defined(HEDLEY_MALLOC)
- # undef HEDLEY_MALLOC
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(malloc) || \
- HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_MALLOC __attribute__((__malloc__))
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
- # define HEDLEY_MALLOC _Pragma("returns_new_memory")
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_MALLOC __declspec(restrict)
- #else
- # define HEDLEY_MALLOC
- #endif
- #if defined(HEDLEY_PURE)
- # undef HEDLEY_PURE
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(pure) || \
- HEDLEY_GCC_VERSION_CHECK(2,96,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_PURE __attribute__((__pure__))
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
- # define HEDLEY_PURE _Pragma("does_not_write_global_data")
- #elif defined(__cplusplus) && \
- ( \
- HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \
- )
- # define HEDLEY_PURE _Pragma("FUNC_IS_PURE;")
- #else
- # define HEDLEY_PURE
- #endif
- #if defined(HEDLEY_CONST)
- # undef HEDLEY_CONST
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(const) || \
- HEDLEY_GCC_VERSION_CHECK(2,5,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_CONST __attribute__((__const__))
- #elif \
- HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)
- # define HEDLEY_CONST _Pragma("no_side_effect")
- #else
- # define HEDLEY_CONST HEDLEY_PURE
- #endif
- #if defined(HEDLEY_RESTRICT)
- # undef HEDLEY_RESTRICT
- #endif
- #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus)
- # define HEDLEY_RESTRICT restrict
- #elif \
- HEDLEY_GCC_VERSION_CHECK(3,1,0) || \
- HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_PGI_VERSION_CHECK(17,10,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- (HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \
- HEDLEY_IAR_VERSION_CHECK(8,0,0) || \
- defined(__clang__) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_RESTRICT __restrict
- #elif HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus)
- # define HEDLEY_RESTRICT _Restrict
- #else
- # define HEDLEY_RESTRICT
- #endif
- #if defined(HEDLEY_INLINE)
- # undef HEDLEY_INLINE
- #endif
- #if \
- (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
- (defined(__cplusplus) && (__cplusplus >= 199711L))
- # define HEDLEY_INLINE inline
- #elif \
- defined(HEDLEY_GCC_VERSION) || \
- HEDLEY_ARM_VERSION_CHECK(6,2,0)
- # define HEDLEY_INLINE __inline__
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_INLINE __inline
- #else
- # define HEDLEY_INLINE
- #endif
- #if defined(HEDLEY_ALWAYS_INLINE)
- # undef HEDLEY_ALWAYS_INLINE
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(always_inline) || \
- HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \
- HEDLEY_IAR_VERSION_CHECK(8,10,0)
- # define HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) HEDLEY_INLINE
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_ALWAYS_INLINE __forceinline
- #elif defined(__cplusplus) && \
- ( \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \
- )
- # define HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;")
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_ALWAYS_INLINE _Pragma("inline=forced")
- #else
- # define HEDLEY_ALWAYS_INLINE HEDLEY_INLINE
- #endif
- #if defined(HEDLEY_NEVER_INLINE)
- # undef HEDLEY_NEVER_INLINE
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(noinline) || \
- HEDLEY_GCC_VERSION_CHECK(4,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(10,1,0) || \
- HEDLEY_TI_VERSION_CHECK(15,12,0) || \
- (HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \
- (HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \
- (HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \
- HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \
- HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \
- HEDLEY_IAR_VERSION_CHECK(8,10,0)
- # define HEDLEY_NEVER_INLINE __attribute__((__noinline__))
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_NEVER_INLINE __declspec(noinline)
- #elif HEDLEY_PGI_VERSION_CHECK(10,2,0)
- # define HEDLEY_NEVER_INLINE _Pragma("noinline")
- #elif HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus)
- # define HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;")
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_NEVER_INLINE _Pragma("inline=never")
- #elif HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)
- # define HEDLEY_NEVER_INLINE __attribute((noinline))
- #elif HEDLEY_PELLES_VERSION_CHECK(9,0,0)
- # define HEDLEY_NEVER_INLINE __declspec(noinline)
- #else
- # define HEDLEY_NEVER_INLINE
- #endif
- #if defined(HEDLEY_PRIVATE)
- # undef HEDLEY_PRIVATE
- #endif
- #if defined(HEDLEY_PUBLIC)
- # undef HEDLEY_PUBLIC
- #endif
- #if defined(HEDLEY_IMPORT)
- # undef HEDLEY_IMPORT
- #endif
- #if defined(_WIN32) || defined(__CYGWIN__)
- # define HEDLEY_PRIVATE
- # define HEDLEY_PUBLIC __declspec(dllexport)
- # define HEDLEY_IMPORT __declspec(dllimport)
- #else
- # if \
- HEDLEY_HAS_ATTRIBUTE(visibility) || \
- HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
- HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
- ( \
- defined(__TI_EABI__) && \
- ( \
- (HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \
- ) \
- ) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_PRIVATE __attribute__((__visibility__("hidden")))
- # define HEDLEY_PUBLIC __attribute__((__visibility__("default")))
- # else
- # define HEDLEY_PRIVATE
- # define HEDLEY_PUBLIC
- # endif
- # define HEDLEY_IMPORT extern
- #endif
- #if defined(HEDLEY_NO_THROW)
- # undef HEDLEY_NO_THROW
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(nothrow) || \
- HEDLEY_GCC_VERSION_CHECK(3,3,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_NO_THROW __attribute__((__nothrow__))
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0)
- # define HEDLEY_NO_THROW __declspec(nothrow)
- #else
- # define HEDLEY_NO_THROW
- #endif
- #if defined(HEDLEY_FALL_THROUGH)
- # undef HEDLEY_FALL_THROUGH
- #endif
- #if defined(HEDLEY_INTEL_VERSION)
- # define HEDLEY_FALL_THROUGH
- #elif \
- HEDLEY_HAS_ATTRIBUTE(fallthrough) || \
- HEDLEY_GCC_VERSION_CHECK(7,0,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))
- #elif HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)
- # define HEDLEY_FALL_THROUGH HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])
- #elif HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)
- # define HEDLEY_FALL_THROUGH HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])
- #elif defined(__fallthrough) /* SAL */
- # define HEDLEY_FALL_THROUGH __fallthrough
- #else
- # define HEDLEY_FALL_THROUGH
- #endif
- #if defined(HEDLEY_RETURNS_NON_NULL)
- # undef HEDLEY_RETURNS_NON_NULL
- #endif
- #if \
- HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \
- HEDLEY_GCC_VERSION_CHECK(4,9,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))
- #elif defined(_Ret_notnull_) /* SAL */
- # define HEDLEY_RETURNS_NON_NULL _Ret_notnull_
- #else
- # define HEDLEY_RETURNS_NON_NULL
- #endif
- #if defined(HEDLEY_ARRAY_PARAM)
- # undef HEDLEY_ARRAY_PARAM
- #endif
- #if \
- defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
- !defined(__STDC_NO_VLA__) && \
- !defined(__cplusplus) && \
- !defined(HEDLEY_PGI_VERSION) && \
- !defined(HEDLEY_TINYC_VERSION)
- # define HEDLEY_ARRAY_PARAM(name) (name)
- #else
- # define HEDLEY_ARRAY_PARAM(name)
- #endif
- #if defined(HEDLEY_IS_CONSTANT)
- # undef HEDLEY_IS_CONSTANT
- #endif
- #if defined(HEDLEY_REQUIRE_CONSTEXPR)
- # undef HEDLEY_REQUIRE_CONSTEXPR
- #endif
- /* HEDLEY_IS_CONSTEXPR_ is for
- HEDLEY INTERNAL USE ONLY. API subject to change without notice. */
- #if defined(HEDLEY_IS_CONSTEXPR_)
- # undef HEDLEY_IS_CONSTEXPR_
- #endif
- #if \
- HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \
- HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \
- HEDLEY_ARM_VERSION_CHECK(4,1,0) || \
- HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
- HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \
- (HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \
- HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
- HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10)
- # define HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)
- #endif
- #if !defined(__cplusplus)
- # if \
- HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \
- HEDLEY_GCC_VERSION_CHECK(3,4,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- HEDLEY_IBM_VERSION_CHECK(13,1,0) || \
- HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(5,4,0) || \
- HEDLEY_TINYC_VERSION_CHECK(0,9,24)
- # if defined(__INTPTR_TYPE__)
- # define HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)
- # else
- # include <stdint.h>
- # define HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)
- # endif
- # elif \
- ( \
- defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \
- !defined(HEDLEY_SUNPRO_VERSION) && \
- !defined(HEDLEY_PGI_VERSION) && \
- !defined(HEDLEY_IAR_VERSION)) || \
- (HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(HEDLEY_IAR_VERSION)) || \
- HEDLEY_GCC_VERSION_CHECK(4,9,0) || \
- HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \
- HEDLEY_IBM_VERSION_CHECK(12,1,0) || \
- HEDLEY_ARM_VERSION_CHECK(5,3,0)
- # if defined(__INTPTR_TYPE__)
- # define HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)
- # else
- # include <stdint.h>
- # define HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)
- # endif
- # elif \
- defined(HEDLEY_GCC_VERSION) || \
- defined(HEDLEY_INTEL_VERSION) || \
- defined(HEDLEY_TINYC_VERSION) || \
- defined(HEDLEY_TI_ARMCL_VERSION) || \
- HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \
- defined(HEDLEY_TI_CL2000_VERSION) || \
- defined(HEDLEY_TI_CL6X_VERSION) || \
- defined(HEDLEY_TI_CL7X_VERSION) || \
- defined(HEDLEY_TI_CLPRU_VERSION) || \
- defined(__clang__)
- # define HEDLEY_IS_CONSTEXPR_(expr) ( \
- sizeof(void) != \
- sizeof(*( \
- 1 ? \
- ((void*) ((expr) * 0L) ) : \
- ((struct { char v[sizeof(void) * 2]; } *) 1) \
- ) \
- ) \
- )
- # endif
- #endif
- #if defined(HEDLEY_IS_CONSTEXPR_)
- # if !defined(HEDLEY_IS_CONSTANT)
- # define HEDLEY_IS_CONSTANT(expr) HEDLEY_IS_CONSTEXPR_(expr)
- # endif
- # define HEDLEY_REQUIRE_CONSTEXPR(expr) (HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))
- #else
- # if !defined(HEDLEY_IS_CONSTANT)
- # define HEDLEY_IS_CONSTANT(expr) (0)
- # endif
- # define HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)
- #endif
- #if defined(HEDLEY_BEGIN_C_DECLS)
- # undef HEDLEY_BEGIN_C_DECLS
- #endif
- #if defined(HEDLEY_END_C_DECLS)
- # undef HEDLEY_END_C_DECLS
- #endif
- #if defined(HEDLEY_C_DECL)
- # undef HEDLEY_C_DECL
- #endif
- #if defined(__cplusplus)
- # define HEDLEY_BEGIN_C_DECLS extern "C" {
- # define HEDLEY_END_C_DECLS }
- # define HEDLEY_C_DECL extern "C"
- #else
- # define HEDLEY_BEGIN_C_DECLS
- # define HEDLEY_END_C_DECLS
- # define HEDLEY_C_DECL
- #endif
- #if defined(HEDLEY_STATIC_ASSERT)
- # undef HEDLEY_STATIC_ASSERT
- #endif
- #if \
- !defined(__cplusplus) && ( \
- (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \
- (HEDLEY_HAS_FEATURE(c_static_assert) && !defined(HEDLEY_INTEL_CL_VERSION)) || \
- HEDLEY_GCC_VERSION_CHECK(6,0,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \
- defined(_Static_assert) \
- )
- # define HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)
- #elif \
- (defined(__cplusplus) && (__cplusplus >= 201103L)) || \
- HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_STATIC_ASSERT(expr, message) HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))
- #else
- # define HEDLEY_STATIC_ASSERT(expr, message)
- #endif
- #if defined(HEDLEY_NULL)
- # undef HEDLEY_NULL
- #endif
- #if defined(__cplusplus)
- # if __cplusplus >= 201103L
- # define HEDLEY_NULL HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)
- # elif defined(NULL)
- # define HEDLEY_NULL NULL
- # else
- # define HEDLEY_NULL HEDLEY_STATIC_CAST(void*, 0)
- # endif
- #elif defined(NULL)
- # define HEDLEY_NULL NULL
- #else
- # define HEDLEY_NULL ((void*) 0)
- #endif
- #if defined(HEDLEY_MESSAGE)
- # undef HEDLEY_MESSAGE
- #endif
- #if HEDLEY_HAS_WARNING("-Wunknown-pragmas")
- # define HEDLEY_MESSAGE(msg) \
- HEDLEY_DIAGNOSTIC_PUSH \
- HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
- HEDLEY_PRAGMA(message msg) \
- HEDLEY_DIAGNOSTIC_POP
- #elif \
- HEDLEY_GCC_VERSION_CHECK(4,4,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_MESSAGE(msg) HEDLEY_PRAGMA(message msg)
- #elif HEDLEY_CRAY_VERSION_CHECK(5,0,0)
- # define HEDLEY_MESSAGE(msg) HEDLEY_PRAGMA(_CRI message msg)
- #elif HEDLEY_IAR_VERSION_CHECK(8,0,0)
- # define HEDLEY_MESSAGE(msg) HEDLEY_PRAGMA(message(msg))
- #elif HEDLEY_PELLES_VERSION_CHECK(2,0,0)
- # define HEDLEY_MESSAGE(msg) HEDLEY_PRAGMA(message(msg))
- #else
- # define HEDLEY_MESSAGE(msg)
- #endif
- #if defined(HEDLEY_WARNING)
- # undef HEDLEY_WARNING
- #endif
- #if HEDLEY_HAS_WARNING("-Wunknown-pragmas")
- # define HEDLEY_WARNING(msg) \
- HEDLEY_DIAGNOSTIC_PUSH \
- HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \
- HEDLEY_PRAGMA(clang warning msg) \
- HEDLEY_DIAGNOSTIC_POP
- #elif \
- HEDLEY_GCC_VERSION_CHECK(4,8,0) || \
- HEDLEY_PGI_VERSION_CHECK(18,4,0) || \
- HEDLEY_INTEL_VERSION_CHECK(13,0,0)
- # define HEDLEY_WARNING(msg) HEDLEY_PRAGMA(GCC warning msg)
- #elif \
- HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_WARNING(msg) HEDLEY_PRAGMA(message(msg))
- #else
- # define HEDLEY_WARNING(msg) HEDLEY_MESSAGE(msg)
- #endif
- #if defined(HEDLEY_REQUIRE)
- # undef HEDLEY_REQUIRE
- #endif
- #if defined(HEDLEY_REQUIRE_MSG)
- # undef HEDLEY_REQUIRE_MSG
- #endif
- #if HEDLEY_HAS_ATTRIBUTE(diagnose_if)
- # if HEDLEY_HAS_WARNING("-Wgcc-compat")
- # define HEDLEY_REQUIRE(expr) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
- __attribute__((diagnose_if(!(expr), #expr, "error"))) \
- HEDLEY_DIAGNOSTIC_POP
- # define HEDLEY_REQUIRE_MSG(expr,msg) \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \
- __attribute__((diagnose_if(!(expr), msg, "error"))) \
- HEDLEY_DIAGNOSTIC_POP
- # else
- # define HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error")))
- # define HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error")))
- # endif
- #else
- # define HEDLEY_REQUIRE(expr)
- # define HEDLEY_REQUIRE_MSG(expr,msg)
- #endif
- #if defined(HEDLEY_FLAGS)
- # undef HEDLEY_FLAGS
- #endif
- #if HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion"))
- # define HEDLEY_FLAGS __attribute__((__flag_enum__))
- #else
- # define HEDLEY_FLAGS
- #endif
- #if defined(HEDLEY_FLAGS_CAST)
- # undef HEDLEY_FLAGS_CAST
- #endif
- #if HEDLEY_INTEL_VERSION_CHECK(19,0,0)
- # define HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \
- HEDLEY_DIAGNOSTIC_PUSH \
- _Pragma("warning(disable:188)") \
- ((T) (expr)); \
- HEDLEY_DIAGNOSTIC_POP \
- }))
- #else
- # define HEDLEY_FLAGS_CAST(T, expr) HEDLEY_STATIC_CAST(T, expr)
- #endif
- #if defined(HEDLEY_EMPTY_BASES)
- # undef HEDLEY_EMPTY_BASES
- #endif
- #if \
- (HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \
- HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0)
- # define HEDLEY_EMPTY_BASES __declspec(empty_bases)
- #else
- # define HEDLEY_EMPTY_BASES
- #endif
- /* Remaining macros are deprecated. */
- #if defined(HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)
- # undef HEDLEY_GCC_NOT_CLANG_VERSION_CHECK
- #endif
- #if defined(__clang__)
- # define HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)
- #else
- # define HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) HEDLEY_GCC_VERSION_CHECK(major,minor,patch)
- #endif
- #if defined(HEDLEY_CLANG_HAS_ATTRIBUTE)
- # undef HEDLEY_CLANG_HAS_ATTRIBUTE
- #endif
- #define HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) HEDLEY_HAS_ATTRIBUTE(attribute)
- #if defined(HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)
- # undef HEDLEY_CLANG_HAS_CPP_ATTRIBUTE
- #endif
- #define HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) HEDLEY_HAS_CPP_ATTRIBUTE(attribute)
- #if defined(HEDLEY_CLANG_HAS_BUILTIN)
- # undef HEDLEY_CLANG_HAS_BUILTIN
- #endif
- #define HEDLEY_CLANG_HAS_BUILTIN(builtin) HEDLEY_HAS_BUILTIN(builtin)
- #if defined(HEDLEY_CLANG_HAS_FEATURE)
- # undef HEDLEY_CLANG_HAS_FEATURE
- #endif
- #define HEDLEY_CLANG_HAS_FEATURE(feature) HEDLEY_HAS_FEATURE(feature)
- #if defined(HEDLEY_CLANG_HAS_EXTENSION)
- # undef HEDLEY_CLANG_HAS_EXTENSION
- #endif
- #define HEDLEY_CLANG_HAS_EXTENSION(extension) HEDLEY_HAS_EXTENSION(extension)
- #if defined(HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)
- # undef HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE
- #endif
- #define HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)
- #if defined(HEDLEY_CLANG_HAS_WARNING)
- # undef HEDLEY_CLANG_HAS_WARNING
- #endif
- #define HEDLEY_CLANG_HAS_WARNING(warning) HEDLEY_HAS_WARNING(warning)
- #endif /* !defined(HEDLEY_VERSION) || (HEDLEY_VERSION < X) */
|