mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-29 10:59:29 +01:00
Merge branch 'claws/readme_overhaul'
This commit is contained in:
commit
143b90af3e
146
README.md
146
README.md
@ -1,73 +1,133 @@
|
|||||||
MessagePack for C/C++
|
# Msgpack for C/C++
|
||||||
=====================
|
|
||||||
Binary-based efficient object serialization library.
|
It's like JSON but small and fast.
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Overview
|
||||||
|
|
||||||
Download latest package from [releases of MessagePack](http://sourceforge.net/projects/msgpack/files/) and extract it.
|
MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.
|
||||||
|
|
||||||
On UNIX-like platform, run ./configure && make && sudo make install:
|
|
||||||
|
|
||||||
$ ./configure
|
|
||||||
$ make
|
|
||||||
$ sudo make install
|
|
||||||
|
|
||||||
On Windows, open msgpack_vc8.vcproj or msgpack_vc2008 file and build it using batch build. DLLs are built on lib folder,
|
|
||||||
and the headers are built on include folder.
|
|
||||||
|
|
||||||
To use the library in your program, include msgpack.hpp header and link "msgpack" library.
|
|
||||||
|
|
||||||
|
|
||||||
## Example
|
## License
|
||||||
|
|
||||||
|
Msgpack is Copyright (C) 2008-2010 FURUHASHI Sadayuki and licensed under the Apache License, Version 2.0 (the "License"). For details see the `COPYING` file in this directory.
|
||||||
|
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
The source for msgpack-c is held at [msgpack-c](https://github.com/msgpack/msgpack-c) github.com site.
|
||||||
|
|
||||||
|
To report an issue, use the [msgpack-c issue tracker](https://github.com/msgpack/msgpack-c/issues) at github.com.
|
||||||
|
|
||||||
|
|
||||||
|
## Using Msgpack
|
||||||
|
|
||||||
|
### Building and Installing
|
||||||
|
|
||||||
|
#### Install from git repository
|
||||||
|
|
||||||
|
You will need gcc (4.1.0 or higher), autotools.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ git clone https://github.com/msgpack/msgpack-c.git
|
||||||
|
$ cd msgpack-c
|
||||||
|
$ ./bootstrap
|
||||||
|
$ ./configure
|
||||||
|
$ make
|
||||||
|
$ sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Install from package
|
||||||
|
|
||||||
|
##### UNIX-like platform with ./configure
|
||||||
|
|
||||||
|
On typical UNIX-like platforms, download source package from [Releases](https://github.com/msgpack/msgpack-c/releases) and run `./configure && make && make install`. Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ wget https://github.com/msgpack/msgpack-c/releases/download/cpp-0.5.8/msgpack-0.5.8.tar.gz
|
||||||
|
$ tar zxvf msgpack-0.5.8.tar.gz
|
||||||
|
$ cd msgpack-0.5.8
|
||||||
|
$ ./configure
|
||||||
|
$ make
|
||||||
|
$ sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
|
##### FreeBSD with Ports Collection
|
||||||
|
|
||||||
|
On FreeBSD, you can use Ports Collection. Install [net/msgpack](http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/msgpack/) package.
|
||||||
|
|
||||||
|
##### Gentoo Linux with Portage
|
||||||
|
|
||||||
|
On Gentoo Linux, you can use emerge. Install [dev-libs/msgpack](http://gentoo-portage.com/dev-libs/msgpack) package.
|
||||||
|
|
||||||
|
##### Mac OS X with MacPorts
|
||||||
|
|
||||||
|
On Mac OS X, you can install MessagePack for C using MacPorts.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo port install msgpack
|
||||||
|
```
|
||||||
|
|
||||||
|
You might need to run `sudo port selfupdate` before installing to update the package repository.
|
||||||
|
|
||||||
|
You can also install via Homebrew.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ sudo brew install msgpack
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
##### Windows
|
||||||
|
|
||||||
|
On Windows, download source package from [here](https://sourceforge.net/projects/msgpack/files/) and extract it. Open `msgpack_vc8.vcproj` or msgpack_vc2008 file and build it using batch build. It builds libraries in `lib/` folder and header files in `include/` folder.
|
||||||
|
|
||||||
|
You can build using command line as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
> vcbuild msgpack_vc2008.vcproj
|
||||||
|
> dir lib % DLL files are here
|
||||||
|
> dir include % header files are here
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Linking with an Application
|
||||||
|
|
||||||
|
Include `msgpack.hpp` (or `msgpack.h` for C) in your application and link with libmsgpack. Here is a typical gcc link command:
|
||||||
|
|
||||||
|
gcc -lmsgpack myapp.c -o myapp
|
||||||
|
|
||||||
|
|
||||||
|
### Code Example
|
||||||
```CPP
|
```CPP
|
||||||
#include <msgpack.hpp>
|
#include <msgpack.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
// This is target object.
|
// This is target object.
|
||||||
std::vector<std::string> target;
|
std::vector<std::string> target;
|
||||||
target.push_back("Hello,");
|
target.push_back("Hello,");
|
||||||
target.push_back("World!");
|
target.push_back("World!");
|
||||||
|
|
||||||
// Serialize it.
|
// Serialize it.
|
||||||
msgpack::sbuffer sbuf; // simple buffer
|
msgpack::sbuffer sbuf; // simple buffer
|
||||||
msgpack::pack(&sbuf, target);
|
msgpack::pack(&sbuf, target);
|
||||||
|
|
||||||
// Deserialize the serialized data.
|
// Deserialize the serialized data.
|
||||||
msgpack::unpacked msg; // includes memory pool and deserialized object
|
msgpack::unpacked msg; // includes memory pool and deserialized object
|
||||||
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
|
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
|
||||||
msgpack::object obj = msg.get();
|
msgpack::object obj = msg.get();
|
||||||
|
|
||||||
// Print the deserialized object to stdout.
|
// Print the deserialized object to stdout.
|
||||||
std::cout << obj << std::endl; // ["Hello," "World!"]
|
std::cout << obj << std::endl; // ["Hello," "World!"]
|
||||||
|
|
||||||
// Convert the deserialized object to staticaly typed object.
|
// Convert the deserialized object to staticaly typed object.
|
||||||
std::vector<std::string> result;
|
std::vector<std::string> result;
|
||||||
obj.convert(&result);
|
obj.convert(&result);
|
||||||
|
|
||||||
// If the type is mismatched, it throws msgpack::type_error.
|
// If the type is mismatched, it throws msgpack::type_error.
|
||||||
obj.as<int>(); // type is mismatched, msgpack::type_error is thrown
|
obj.as<int>(); // type is mismatched, msgpack::type_error is thrown
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
### Quickstart Guides
|
||||||
|
|
||||||
See [QuickStart for C](QUICKSTART-C.md) and [QuickStart for C++](QUICKSTART-CPP.md) for other example codes.
|
For more detailed examples see [QuickStart for C](QUICKSTART-C.md) and [QuickStart for C++](QUICKSTART-CPP.md).
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Copyright (C) 2008-2010 FURUHASHI Sadayuki
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
See also NOTICE file.
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user