Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor to allow MSVC without #define NOMINMAX #905

Merged
merged 1 commit into from
Jun 28, 2020

Conversation

PhilipDeegan
Copy link
Contributor

@PhilipDeegan PhilipDeegan commented Jun 25, 2020

fix for #904

reference: microsoft/cppwinrt#479

rhs = num;
return true;
}
}
return false;
}


Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stray extra newline?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh yes one moment

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@jbeder jbeder merged commit 27d8a0e into jbeder:master Jun 28, 2020
JonLavi added a commit to Esri/yaml-cpp that referenced this pull request Sep 8, 2021
* Add YAML_CPP_INSTALL option for disabling install target (jbeder#624) (jbeder#625)

- Option defaults to ON and setting it to OFF, disables install
  target generation

* Don't stomp on build flags (jbeder#635)

Let CMake handle the default optimizations for various configurations. We don't need to override them. In fact, overriding them makes it impossible for users to override them themselves.

* Some small changes as a result of using a static analyzer (jbeder#643)

* Removed an expression which is always true
* The second expression (ch is space) is removed because the first one contains space 0x20
* nextEmptyLine is always false so it is removed from the expression

* Fix float precision (jbeder#649)

The issue is that numbers like
2.01 or 3.01 can not be precisely represented with binary floating point
numbers.

This replaces all occurrences of 'std::numeric_limits<T>::digits10 + 1' with
'std::numeric_limits<T>::max_digits10'.

Background:
Using 'std::numeric_limits<T>::digits10 + 1' is not precise enough.
Converting a 'float' into a 'string' and back to a 'float' will not always
produce the original 'float' value. To guarantee that the 'string'
representation has sufficient precision the value
'std::numeric_limits<T>::max_digits10' has to be used.

* Fix GCC-types flags appended on Clang-cl (jbeder#659)

* Fix warning C4127 on Visual Studio (jbeder#672)

Splitting the condition of the if statement containing `constant expression` eliminates warnings in Visual Studio with /W4.

* Fix ninja build error. (jbeder#677)

NDK now uses ninja for building but yaml-cpp would emit the “ninja: error: build.ninja:326: bad $-escape (literal $ must be written as $$)” error due to syntax error in the generated build.ninja file. Related issue: jbeder#630

* Add optional OnAnchor method to EventHandler (jbeder#530)

ref jbeder#110

* Apply formatting/style tweaks to comply with compile time diagnostics for g++ and clang++ (jbeder#686)

* Add compilation flags: -Wshadow -Weffc++ -pedantic -pedantic-errors
* Delete implicit copy & move constructors & assignment operators
  in classes with pointer data members.
* An exception to the above: Add default copy & move constructors &
  assignment operators for the Binary class.
* Convert boolean RegEx operators to binary operators.
* Initialize all members in all classes in ctors.
* Let default ctor delegate to the converting ctor in
  Binary and RegEx
* Don't change any tests except regex_test (as a result of the change
  to binary operators).

Note: https://bugzilla.redhat.com/show_bug.cgi?id=1544675 makes
-Weffc++ report a false positive in "include/yaml-cpp/node/impl.h".

* Add MSVC Debugger Visualizer config for YAML::Node (jbeder#693)

* Disallow moving for the Parser.

It wouldn't have compiled anyways, since the Scanner and Directive objects inside it are incomplete types at the time of the move definitions.

* Improve error messages on operator[] or as<> (jbeder#656)

Invalid access via operator[] or as<> will now print the offending key, if possible.

For example:

a:
  x: 1
  y: 2

node["a"]["z"].as<int>()

will say that the key "z" was invalid.

* Make sure output of NaN, Infinity and -Infinity is identical on all platforms (jbeder#717)

Specifically, printing `.nan`, `.inf`, and `-.inf`, respectively, as per the spec section 10.2.1.4.

* Use VERSION on the CMake project (jbeder#733)

This sets the other variables:

 https://cmake.org/cmake/help/latest/command/project.html

* Set C++ standard options in CMake per-target instead of globally (jbeder#735)

Setting CMAKE_CXX_STANDARD and CMAKE_CXX_STANDARD_REQUIRED directly is problematic when including yaml-cpp as a subproject.

The proper way is to set these per-target.

* CMake: Prefix options with "YAML" and hide platform-specific options (jbeder#734)

* CMake: Prefix options with "YAML" and hide platform-specific options

When including yaml-cpp as a subproject, some option names can conflict with other projects.

(1) Make sure the yaml-cpp options are prefixed with YAML
(2) Hide platform-specific options when possible to avoid cluttering the cmake option list

* Update docs for change from BUILD_SHARED_LIBS to YAML_BUILD_SHARED_LIBS

* Static analysis fix: replace 0 and NULL with nullptr (jbeder#738)

* Remove extraneous conversion from string -> c_str -> string (jbeder#739)

* Fix shared lib build with new YAML_BUILD_SHARED_LIBS option (jbeder#737)

* Update version to 0.6.3.

* Refactor CMake to use more modern paradigms (jbeder#741)

Remove 2.6-isms
Remove 2.8-isms
Bump CMake minimum version to 3.4

Disable some options when used as a subdirectory

Use `CONFIGURE_DEPENDS` with `file(GLOB)` when possible

Backport CMake 3.15's MSVC_RUNTIME_LIBRARY setting.
Set all compile options as generator expressions.
Set all find-package files to be installed to the correct file.

Remove `export(PACKAGE)`, as this has been deprecated.
Remove fat binary support
Remove manual setting of iPhone settings. These should be set by parent
projects.
Remove use of ExternalProject for a local use
Conditionally remove format target unless clang-format is found

* Add bazel Support (jbeder#724)

Example of how someone might consume yaml-cpp with bazel:

cc_binary(
    name = "example",
    srcs = ["example.cc"],
    deps = ["@com_github_jbeder_yaml_cpp//:yaml-cpp"],
)

* Fix `DEBUG_POSTFIX` property (jbeder#746)

The generator expressions here are actually unnecessary, now that I think about it.

This should fix jbeder#745

* CMake: Remove unused option YAML_APPLE_UNIVERSAL_BIN (jbeder#744)

* Use cassert instead of old assert.h (jbeder#750)

* Modernize: Use "default" for destructors and copy constructors (jbeder#751)

* Pass std::string by const ref (jbeder#749)

* Modernization: Use "override" when overriding base class methods (jbeder#753)

* Modernize: Use "using" instead of "typedef" (jbeder#754)

* Replace node's YAML_CPP_OPERATOR_BOOL macro with an explicit bool operator (jbeder#755)

* Fix CMake 3.10 and below compatibility (jbeder#763)

Add empty list of sources to add_library and add_executable.

* Modernize: Use range-based for loops for readability (jbeder#762)

Also run clang-format on these files as requested

* Add documentation to readme (jbeder#768)

* Default YAML_BUILD_SHARED_LIBS to BUILD_SHARED_LIBS

:bug: Fixes jbeder#748 (jbeder#770)

* Show test output on CI in Travis (jbeder#777)



* Showing test output only on failure

* Test commit to see the failed test

* Now making sure that the tests pass with no output

* Fix -Wmisleading-indentation warning when using gcc >= 6. (jbeder#779)

This happens whenever in a macro you use some "if" block, and don't use curly braces {},
as the macro is expanded on a single line, not on several lines. So just add the missing
curly braces to please gcc.

In file included from /remote/users/mlamesch/CloneFromPlatinum/yamlcpp/osp/Yamlcpp/18-0-0-5/include/yaml-cpp/yaml.h:18,
                 from src/TestYaml.cpp:2:
/remote/users/mlamesch/CloneFromPlatinum/yamlcpp/osp/Yamlcpp/18-0-0-5/include/yaml-cpp/node/convert.h: In static member function static bool YAML::convert<int>::decode(const YAML::Node&, int&):
/remote/users/mlamesch/CloneFromPlatinum/yamlcpp/osp/Yamlcpp/18-0-0-5/include/yaml-cpp/node/convert.h:139:1: error: this if clause does not guard... [-Werror=misleading-indentation]
 YAML_DEFINE_CONVERT_STREAMABLE_SIGNED(int);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Adapt label postfix to fix build with Visual Studio (jbeder#782)

* Remove redundant checks and add more unit tests (jbeder#783)

* Small readability improvements in Parser

Also add a test for a parser with no data

* Use de-facto standard CMake namespace convention (jbeder#792)

Change the namespace from yaml::yaml to yaml-cpp::yaml-cpp.

* Change NULL to nullptr (jbeder#805)

* Fix reading empty token stack with a node with properties but no scalar.

E.g. `!2`.

* Move the YAML_CPP_NOEXCEPT macro to include/yaml-cpp/noexcept.h (jbeder#813)

This is in preparation for other patches that will make use of the
macro. The patch also removes #undef:ing the macro after its been
used to not make the header inclusion order critical. Otherwise,
the new header would always have to be the last of the yaml-cpp
headers to be included.

* Make SettingChange and StreamCharSourcemove constructors and assignment operators noexcept (jbeder#808)

The explicitly defaulted or implemented move constructors and assignment
operators are made "noexcept".

Bugfix:
* src/stream.cpp Stream::Stream() char_traits::int_type intro[4] is
  now aggregate-initialized (to zero) to avoid UB.

Minor changes:
* Using std::isinf() and std::signbit() instead of comparing for
  equality with infinity.
* src/streamcharsource.h: Added #include "stream.h".
* src/stream.h: Forward declaring "class StreamCharSource".
* Some implicit casting changed into static_cast's.

Signed-off-by: Ted Lyngmo <[email protected]>

* Add IsNull() check in test after reassignment (jbeder#814)

* Fix Node::size() after removing node from sequence (jbeder#820)

* Fix storing inf and NaN (jbeder#817)

* Allow including yaml-cpp as system headers (jbeder#829)

* Split conversion call that uses std::signbit with unsupported parameters with enable_if (jbeder#824)

* Update Google Test to v1.10.0 (jbeder#840)

This commit updates the version of Google Test from 1.8 to 1.10.

* Remove uses of std::iterator (deprecated in C++17) (jbeder#839)

* Pass a mark to BadSubscript exception (jbeder#843)

It's clearly related to an existing node, so it can have a mark and give
an error location.

* Maintain order of nodes in sequences (jbeder#668)

* Add NodeTest EqualRepresentationAfterMoveAssignment (jbeder#816)

Add check that a move assigned Node gets the same representation as the
moved-from Node had before the move.

* Update travis config to use updated versions of OS and compilers. (jbeder#845)

This fixes the linux/gcc error building Google Test with gcc 4.7:

https://travis-ci.org/github/jbeder/yaml-cpp/jobs/668233706

* Fix 'comparison object must be invocable as const' (jbeder#846)

* Fix stack overflow (jbeder#807)

Fix stack overflow in HandleNode by explicitly limiting the depth of recursion.

* Include wiki content into a doc folder (jbeder#850)

* Copied Tutorial from Google Code wiki.

* Initial Home page

* Copied How To Parse A Document from Google Code wiki

* Updated How To Parse A Document (markdown)

* Updated How To Parse A Document (markdown)

* Updated How To Parse A Document (Old API) (markdown)

* Copied How To Emit YAML from Google Code wiki

* Copied Breaking Changes from Google Code wiki

* Copied Strings from Google Code wiki

* Updated Strings (markdown)

* Updated Home (markdown)

* Fix typo.

* Updated Breaking Changes (markdown)

* Updated How To Parse A Document (Old API) (markdown)

* Updated Breaking Changes (markdown)

* Move wiki content to docs/

* Improve markdown and add colored code syntax

Co-authored-by: Jesse Beder <[email protected]>

* Rename "Home" to "index" in the doc (jbeder#851)

This will allow hosting as Github Pages.

* Set theme jekyll-theme-slate

* Add Qt wrapper gist (jbeder#853)

Add Qt wrapper gist to README as a third party contribution

* Fix clang format (jbeder#854)

Fix invocation of clang-format in CMakeLists and apply clang-format.

* Make debug postfix optional (jbeder#856)

Library debug postfix might not be suitable for cross platform project, and usually require extra work of link against prebuilt yaml-cpp.

Generally, Xcode project output library to these directories:
    Debug
    Release
    Debug-iphoneos
    Release-iphoneos
    Debug-iphonesimulator
    Release-iphonesimulator

Another Xcode project usually configured its build setting as follow, and expects library name to be same between Release and Debug
    LIBRARY_SEARCH_PATHS=$(CONFIGURATION)$(EFFECT_PLATFORM_NAME)
    OTHER_LDFLAGS= $(inherited) -lyaml-cpp

* implement convert for standard library containers allowing for custom allocators (jbeder#855)

* Add filename to the BadFile exception (jbeder#858)

The BadFile exception which is thrown when failing to open a file now
contains the filename.

* Supplement test cases for 2.19 ~ 2.22 schema tags. (jbeder#857)

Add test cases for the event handler for schema tags; does not include test cases for Node because specialized tag handling is not implemented yet.

* Throw an exception when trying to parse a negative number as an unsigned.

Fixing issue 859.

* Fix crash when parsing `{x:` (jbeder#865)

* Change CMakeLists to honor option "MSVC shared Runtimes" (jbeder#867)

* Spelling (jbeder#870)

* spelling: differently

* spelling: irrelevant

* spelling: specified

* Add tests for some interfaces of emitter (jbeder#875)

* Support as<uint8_t>/as<int8_t>.

Fix issue 844/848.

* [clang-tidy] do not use return after else (jbeder#892)

Found with readability-else-after-return

Signed-off-by: Rosen Penev <[email protected]>

* manual algorithm conversions (jbeder#891)

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] convert to range loops (jbeder#889)

Found with modernize-loop-convert

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use = default (jbeder#887)

Found with modernize-use-equals-default

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use override (jbeder#885)

Found with modernize-use-override

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] replace typedef with using (jbeder#886)

Found with modernize-use-using

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use emplace_back (jbeder#880)

Found with modernize-use-emplace

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use raw strings for easier readability (jbeder#882)

Found with modernize-raw-string-literal

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use bool literals (jbeder#881)

Found with modernize-use-bool-literals

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] fix inconsistent declaration (jbeder#884)

Found with readability-inconsistent-declaration-parameter-name

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use braced initialization list (jbeder#883)

Found with modernize-return-braced-init-list

Signed-off-by: Rosen Penev <[email protected]>

* partially fix clang compilation (jbeder#893)

* partially fix clang compilation

Missing header and mistaken algorithm usage.

Also removed it name from range loops. It's not correct.

Signed-off-by: Rosen Penev <[email protected]>

* run through clang's -Wrange-loop-analysis

Some range loops should not use references as they need to copy.

Signed-off-by: Rosen Penev <[email protected]>

* manual range loop conversions

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use empty method (jbeder#895)

Found with readability-container-size-empty

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] convert several functions to use references (jbeder#894)

Found with performance-unnecessary-value-param

Signed-off-by: Rosen Penev <[email protected]>

* [clang-tidy] use auto (jbeder#888)

Found with modernize-use-auto

Signed-off-by: Rosen Penev <[email protected]>

* fix issue752: generate right long keys (jbeder#879)

* fix issue752: generate right long keys

* Improve the readability of test cases

* update to raw string literal

* tag_null (jbeder#897)

* rm unusued typedef (jbeder#901)

* Refactor to allow MSVC without #define NOMINMAX (jbeder#905)

* Support kinds of emitter format-setting for YAML::Null. (jbeder#906)

* Support kinds of emitter format-setting for YAML::Null.

* update the code and test cases

* add the comment //fallthrough

* remove the wrong swap file. (jbeder#907)

* Fix YAML::Newline in a sequence or map.

Inside of a sequence or map, `YAML::Newline` wouldn't reset the collection state, which would cause behavior like this:

```
nodeA:   
    k: [{i: 0},
 {i:1},
  ]NodeB:
    k: [{i: 0},
 {i:1},
  ]
```

* Parse colon in plain scalar correctly when in a flow collection

Fixes jbeder#740.

* fix bug from issue298:Emitter stylings settings overridden by node settings. (jbeder#915)

* Enable CMP0091 to use MSVC_RUNTIME_LIBRARY (jbeder#913)

Per https://cmake.org/cmake/help/latest/policy/CMP0091.html, we need to
enable policy CMP0091 if we want to make use of MSVC_RUNTIME_LIBRARY
and/or CMAKE_MSVC_RUNTIME_LIBRARY.  Fixes issue jbeder#912.

* Add support for JSON-compatible string escapes (jbeder#485)

For completeness I've implemented escaping for characters outside the
basic multilingual plane, but it doesn't get used (as there's no
EscapeAsAsciiJson emitter option implemented).

* Fix compilation for Qt-projects (jbeder#918)

Not use 'emit' as variable name, in Qt Framework it reserved word

* Add the support to parsing a null value as `std::string`.

Fixes jbeder#590.

* Handle a key with length over 1024 as a long key. (jbeder#916)

Fixes jbeder#501

* Properly allow a trailing tab character on a block scalar (jbeder#919)

Fixes jbeder#917

* Default initialize node's member variable (jbeder#923)

* Reduce std::string copies (jbeder#924)

- Don't eagerly convert key to std::string
- Make const char* keys streamable when exception is thrown
- Don't create a temporary string when comparing a const char* key

* Fix runtime exceptions in Visual Studio environment. (jbeder#926)

* Add the AppVeyor configuration file (jbeder#927)

* fix issue743: handle the empty content of flow sep/map correctly during emitting. (jbeder#921)

* fix issue743: handle the empty content of flow sep/map correctly during emitting.

* handle the empty Tag/Anchor properly.

* delete comment

* Emit the correct Alias on the key (jbeder#908) (jbeder#929)

* fix warning of level 4: (jbeder#971)

convert.h line130 : warning C4244 conversation from int to T possible loss of data

* Prevent trailing spaces when emitting literal strings (jbeder#1005)

* Update version to 0.7.0.

* Update node impl.h for GCC unused variable warning (jbeder#981)

Removed the variable name in the defaulted function to make GCC happy.

* Bump minimum cmake versions in gtest to eliminate cmake deprecation warnings. (jbeder#1012)

* Add assert to enable compilation with libcxx + gcc (jbeder#947)

* Include name of anchor in invalid anchor error (jbeder#1015)

* Added UE-Wrapper link to Readme (jbeder#1024)

* fixup: restore entry to gitignore

Co-authored-by: Lassi Hämäläinen <[email protected]>
Co-authored-by: Joel Frederico <[email protected]>
Co-authored-by: Alexander Anokhin <[email protected]>
Co-authored-by: Simon Gene Gottlieb <[email protected]>
Co-authored-by: pent0 <[email protected]>
Co-authored-by: tt4g <[email protected]>
Co-authored-by: Olli Wang <[email protected]>
Co-authored-by: caryoscelus <[email protected]>
Co-authored-by: Ted Lyngmo <[email protected]>
Co-authored-by: peterchen-cp <[email protected]>
Co-authored-by: Jesse Beder <[email protected]>
Co-authored-by: bedapisl <[email protected]>
Co-authored-by: Jeppe Blicher Tarp <[email protected]>
Co-authored-by: Andy Maloney <[email protected]>
Co-authored-by: Isabella Muerte <[email protected]>
Co-authored-by: Ezekiel Warren <[email protected]>
Co-authored-by: Fatih YAZICI <[email protected]>
Co-authored-by: Rasmus <[email protected]>
Co-authored-by: carmeli-tamir <[email protected]>
Co-authored-by: Romain Geissler @ Amadeus <[email protected]>
Co-authored-by: Mike Egger <[email protected]>
Co-authored-by: Igor [hyperxor] <[email protected]>
Co-authored-by: Carlos Gomes Martinho <[email protected]>
Co-authored-by: JeffWegher <[email protected]>
Co-authored-by: Anton Onishchenko <[email protected]>
Co-authored-by: Néstor Subirón <[email protected]>
Co-authored-by: Dekken <[email protected]>
Co-authored-by: Romain Deterre <[email protected]>
Co-authored-by: Victor Mataré <[email protected]>
Co-authored-by: Maxim Okhotskiy <[email protected]>
Co-authored-by: Tindy X <[email protected]>
Co-authored-by: Alan Griffiths <[email protected]>
Co-authored-by: Martin Delille <[email protected]>
Co-authored-by: Jesse Beder <[email protected]>
Co-authored-by: Ian Taylor <[email protected]>
Co-authored-by: deflinhec <[email protected]>
Co-authored-by: Chen <[email protected]>
Co-authored-by: Chen <[email protected]>
Co-authored-by: Raúl Gutiérrez Segalés <[email protected]>
Co-authored-by: Hans-Peter Gygax <[email protected]>
Co-authored-by: Josh Soref <[email protected]>
Co-authored-by: Rosen Penev <[email protected]>
Co-authored-by: Raffaello Bertini <[email protected]>
Co-authored-by: Tom Collins <[email protected]>
Co-authored-by: Oliver Hamlet <[email protected]>
Co-authored-by: Pavel Karelin <[email protected]>
Co-authored-by: Kajetan Świerk <[email protected]>
Co-authored-by: t.t <[email protected]>
Co-authored-by: theamarin <[email protected]>
Co-authored-by: JBPennington <[email protected]>
Co-authored-by: jbeach <[email protected]>
Co-authored-by: mjvankampen <[email protected]>
Co-authored-by: Snow Pettersen <[email protected]>
Co-authored-by: jwindgassen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants