mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-10 04:51:17 +00:00
Compare commits
1 Commits
revert-104
...
revert-984
Author | SHA1 | Date | |
---|---|---|---|
![]() |
54e63e3f8c |
40
.github/workflows/build.yml
vendored
40
.github/workflows/build.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
name: Github PR
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ master ]
|
|
||||||
workflow_dispatch:
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Build static
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
mkdir -p build && cd build
|
|
||||||
cmake ..
|
|
||||||
cmake --build . --parallel 4
|
|
||||||
|
|
||||||
- name: Test static
|
|
||||||
shell: bash
|
|
||||||
run: cd build && ctest --output-on-failure
|
|
||||||
|
|
||||||
- name: Build shared
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
rm -rf build && mkdir -p build && cd build
|
|
||||||
cmake .. -DYAML_BUILD_SHARED_LIBS=ON
|
|
||||||
cmake --build . --parallel 4
|
|
||||||
|
|
||||||
# tests are failing for unknown reasons
|
|
||||||
- if: matrix.os == 'ubuntu-latest'
|
|
||||||
name: Test shared
|
|
||||||
shell: bash
|
|
||||||
run: cd build && ctest --output-on-failure
|
|
||||||
# test all ASAP
|
|
46
README.md
46
README.md
@@ -1,46 +1,50 @@
|
|||||||
# yaml-cpp [](https://travis-ci.org/jbeder/yaml-cpp) [](https://codedocs.xyz/jbeder/yaml-cpp/)
|
# yaml-cpp [](https://travis-ci.org/jbeder/yaml-cpp) [](https://codedocs.xyz/jbeder/yaml-cpp/)
|
||||||
|
|
||||||
`yaml-cpp` is a [YAML](http://www.yaml.org/) parser and emitter in C++ matching the [YAML 1.2 spec](http://www.yaml.org/spec/1.2/spec.html).
|
yaml-cpp is a [YAML](http://www.yaml.org/) parser and emitter in C++ matching the [YAML 1.2 spec](http://www.yaml.org/spec/1.2/spec.html).
|
||||||
|
|
||||||
## Usage
|
To get a feel for how it can be used, see the [Tutorial](https://github.com/jbeder/yaml-cpp/wiki/Tutorial) or [How to Emit YAML](https://github.com/jbeder/yaml-cpp/wiki/How-To-Emit-YAML). For the old API (version < 0.5.0), see [How To Parse A Document](https://github.com/jbeder/yaml-cpp/wiki/How-To-Parse-A-Document-(Old-API)).
|
||||||
|
|
||||||
See [Tutorial](https://github.com/jbeder/yaml-cpp/wiki/Tutorial) and [How to Emit YAML](https://github.com/jbeder/yaml-cpp/wiki/How-To-Emit-YAML) for reference. For the old API (until 0.5.0), see [How To Parse A Document](https://github.com/jbeder/yaml-cpp/wiki/How-To-Parse-A-Document-(Old-API)).
|
# Problems? #
|
||||||
|
|
||||||
## Any Problems?
|
|
||||||
|
|
||||||
If you find a bug, post an [issue](https://github.com/jbeder/yaml-cpp/issues)! If you have questions about how to use yaml-cpp, please post it on http://stackoverflow.com and tag it [`yaml-cpp`](http://stackoverflow.com/questions/tagged/yaml-cpp).
|
If you find a bug, post an [issue](https://github.com/jbeder/yaml-cpp/issues)! If you have questions about how to use yaml-cpp, please post it on http://stackoverflow.com and tag it [`yaml-cpp`](http://stackoverflow.com/questions/tagged/yaml-cpp).
|
||||||
|
|
||||||
## How to Build
|
# How to Build #
|
||||||
|
|
||||||
`yaml-cpp` uses [CMake](http://www.cmake.org) to support cross-platform building. Install [CMake](http://www.cmake.org) _(Resources -> Download)_ before proceeding. The basic steps to build are:
|
yaml-cpp uses [CMake](http://www.cmake.org) to support cross-platform building. The basic steps to build are:
|
||||||
|
|
||||||
**Note:** If you don't use the provided installer for your platform, make sure that you add `CMake`'s bin folder to your path.
|
1. Download and install [CMake](http://www.cmake.org) (Resources -> Download).
|
||||||
|
|
||||||
#### 1. Navigate into the source directory, create build folder and run `CMake`:
|
**Note:** If you don't use the provided installer for your platform, make sure that you add CMake's bin folder to your path.
|
||||||
|
|
||||||
```sh
|
2. Navigate into the source directory, and type:
|
||||||
|
|
||||||
|
```
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake [-G generator] [-YAML_BUILD_SHARED_LIBS=on|OFF] ..
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* The `generator` option is the build system you'd like to use. Run `cmake` without arguments to see a full list of available generators.
|
3. Run CMake. The basic syntax is:
|
||||||
* On Windows, you might use "Visual Studio 12 2013" (VS 2013 32-bits), or "Visual Studio 14 2015 Win64" (VS 2015 64-bits).
|
|
||||||
* On OS X, you might use "Xcode".
|
|
||||||
* On a UNIX-like system, omit the option (for a Makefile).
|
|
||||||
|
|
||||||
* `yaml-cpp` builds a static library by default, you may want to build a shared library by specifying `-YAML_BUILD_SHARED_LIBS=ON`.
|
```
|
||||||
|
cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=ON|OFF] ..
|
||||||
|
```
|
||||||
|
|
||||||
|
* The `generator` is whatever type of build system you'd like to use. To see a full list of generators on your platform, just run `cmake` (with no arguments). For example:
|
||||||
|
* On Windows, you might use "Visual Studio 12 2013" to generate a Visual Studio 2013 solution or "Visual Studio 14 2015 Win64" to generate a 64-bit Visual Studio 2015 solution.
|
||||||
|
* On OS X, you might use "Xcode" to generate an Xcode project
|
||||||
|
* On a UNIX-y system, simply omit the option to generate a makefile
|
||||||
|
|
||||||
|
* yaml-cpp defaults to building a static library, but you may build a shared library by specifying `-DYAML_BUILD_SHARED_LIBS=ON`.
|
||||||
|
|
||||||
* For more options on customizing the build, see the [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) file.
|
* For more options on customizing the build, see the [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) file.
|
||||||
|
|
||||||
#### 2. Build it!
|
4. Build it!
|
||||||
* The command you'll need to run depends on the generator you chose earlier.
|
|
||||||
|
|
||||||
**Note:** To clean up, just remove the `build` directory.
|
5. To clean up, just remove the `build` directory.
|
||||||
|
|
||||||
## Recent Releases
|
# Recent Release #
|
||||||
|
|
||||||
[yaml-cpp 0.6.0](https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cpp-0.6.0) released! This release requires C++11, and no longer depends on Boost.
|
[yaml-cpp 0.6.0](https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cpp-0.6.0) has been released! This release requires C++11, and no longer depends on Boost.
|
||||||
|
|
||||||
[yaml-cpp 0.3.0](https://github.com/jbeder/yaml-cpp/releases/tag/release-0.3.0) is still available if you want the old API.
|
[yaml-cpp 0.3.0](https://github.com/jbeder/yaml-cpp/releases/tag/release-0.3.0) is still available if you want the old API.
|
||||||
|
|
||||||
|
@@ -169,7 +169,7 @@ class node {
|
|||||||
using nodes = std::set<node*, less>;
|
using nodes = std::set<node*, less>;
|
||||||
nodes m_dependencies;
|
nodes m_dependencies;
|
||||||
size_t m_index;
|
size_t m_index;
|
||||||
static YAML_CPP_API std::atomic<size_t> m_amount;
|
static std::atomic<size_t> m_amount;
|
||||||
};
|
};
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
} // namespace YAML
|
} // namespace YAML
|
||||||
|
@@ -79,7 +79,7 @@ std::vector<unsigned char> DecodeBase64(const std::string &input) {
|
|||||||
// skip newlines
|
// skip newlines
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
unsigned char d = decoding[static_cast<unsigned char>(input[i])];
|
unsigned char d = decoding[static_cast<unsigned>(input[i])];
|
||||||
if (d == 255)
|
if (d == 255)
|
||||||
return ret_type();
|
return ret_type();
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
namespace YAML {
|
namespace YAML {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
YAML_CPP_API std::atomic<size_t> node::m_amount{0};
|
std::atomic<size_t> node::m_amount{0};
|
||||||
|
|
||||||
const std::string& node_data::empty_scalar() {
|
const std::string& node_data::empty_scalar() {
|
||||||
static const std::string svalue;
|
static const std::string svalue;
|
||||||
|
@@ -1,14 +0,0 @@
|
|||||||
#include "gtest/gtest.h"
|
|
||||||
#include <yaml-cpp/binary.h>
|
|
||||||
|
|
||||||
TEST(BinaryTest, DecodingSimple) {
|
|
||||||
std::string input{90, 71, 86, 104, 90, 71, 74, 108, 90, 87, 89, 61};
|
|
||||||
const std::vector<unsigned char> &result = YAML::DecodeBase64(input);
|
|
||||||
EXPECT_EQ(std::string(result.begin(), result.end()), "deadbeef");
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(BinaryTest, DecodingNoCrashOnNegative) {
|
|
||||||
std::string input{-58, -1, -99, 109};
|
|
||||||
const std::vector<unsigned char> &result = YAML::DecodeBase64(input);
|
|
||||||
EXPECT_TRUE(result.empty());
|
|
||||||
}
|
|
@@ -5,6 +5,19 @@
|
|||||||
#include "yaml-cpp/eventhandler.h"
|
#include "yaml-cpp/eventhandler.h"
|
||||||
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
|
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
|
||||||
|
|
||||||
|
struct Params {
|
||||||
|
bool hasFile;
|
||||||
|
std::string fileName;
|
||||||
|
};
|
||||||
|
|
||||||
|
Params ParseArgs(int argc, char** argv) {
|
||||||
|
Params p;
|
||||||
|
|
||||||
|
std::vector<std::string> args(argv + 1, argv + argc);
|
||||||
|
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
class NullEventHandler : public YAML::EventHandler {
|
class NullEventHandler : public YAML::EventHandler {
|
||||||
public:
|
public:
|
||||||
void OnDocumentStart(const YAML::Mark&) override {}
|
void OnDocumentStart(const YAML::Mark&) override {}
|
||||||
@@ -34,6 +47,8 @@ void parse(std::istream& input) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
Params p = ParseArgs(argc, argv);
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
std::ifstream fin;
|
std::ifstream fin;
|
||||||
fin.open(argv[1]);
|
fin.open(argv[1]);
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
prefix=@CMAKE_INSTALL_PREFIX@
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
exec_prefix=${prefix}
|
exec_prefix=${prefix}
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
|
|
||||||
Name: Yaml-cpp
|
Name: Yaml-cpp
|
||||||
Description: A YAML parser and emitter for C++
|
Description: A YAML parser and emitter for C++
|
||||||
|
Reference in New Issue
Block a user