Merge from head up to r262415.
This commit is contained in:
commit
892620150f
@ -38,6 +38,11 @@
|
||||
# xargs -n1 | sort | uniq -d;
|
||||
# done
|
||||
|
||||
# 20140223: Remove libyaml
|
||||
OLD_FILES+=usr/lib/private/libyaml.a
|
||||
OLD_FILES+=usr/lib/private/libyaml.so
|
||||
OLD_FILES+=usr/lib/private/libyaml.so.1
|
||||
OLD_FILES+=usr/lib/private/libyaml_p.a
|
||||
# 20140216: new clang import which bumps version from 3.3 to 3.4.
|
||||
OLD_FILES+=usr/bin/llvm-prof
|
||||
OLD_FILES+=usr/bin/llvm-ranlib
|
||||
|
@ -24,8 +24,6 @@
|
||||
* Use is subject to license terms.
|
||||
*/
|
||||
|
||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
||||
|
||||
/*
|
||||
* ASSERTION:
|
||||
* Checks that setting "bufresize" to "auto" will cause buffer
|
||||
@ -34,14 +32,8 @@
|
||||
* SECTION: Buffers and Buffering/Buffer Resizing Policy;
|
||||
* Options and Tunables/bufsize;
|
||||
* Options and Tunables/bufresize
|
||||
*
|
||||
* NOTES:
|
||||
* We use the undocumented "preallocate" option to make sure dtrace(1M)
|
||||
* has enough space in its heap to allocate a buffer as large as the
|
||||
* kernel's trace buffer.
|
||||
*/
|
||||
|
||||
#pragma D option preallocate=100t
|
||||
#pragma D option bufresize=auto
|
||||
#pragma D option bufsize=100t
|
||||
|
||||
|
@ -24,8 +24,6 @@
|
||||
* Use is subject to license terms.
|
||||
*/
|
||||
|
||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
||||
|
||||
/*
|
||||
* ASSERTION:
|
||||
* Checks that setting "bufresize" to "auto" will cause buffer
|
||||
@ -34,14 +32,8 @@
|
||||
* SECTION: Buffers and Buffering/Buffer Resizing Policy;
|
||||
* Options and Tunables/aggsize;
|
||||
* Options and Tunables/bufresize
|
||||
*
|
||||
* NOTES:
|
||||
* We use the undocumented "preallocate" option to make sure dtrace(1M)
|
||||
* has enough space in its heap to allocate a buffer as large as the
|
||||
* kernel's trace buffer.
|
||||
*/
|
||||
|
||||
#pragma D option preallocate=100t
|
||||
#pragma D option bufresize=auto
|
||||
#pragma D option aggsize=100t
|
||||
|
||||
|
@ -24,8 +24,6 @@
|
||||
* Use is subject to license terms.
|
||||
*/
|
||||
|
||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
||||
|
||||
/*
|
||||
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||
*/
|
||||
@ -906,30 +904,6 @@ dt_options_load(dtrace_hdl_t *dtp)
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static int
|
||||
dt_opt_preallocate(dtrace_hdl_t *dtp, const char *arg, uintptr_t option)
|
||||
{
|
||||
dtrace_optval_t size;
|
||||
void *p;
|
||||
|
||||
if (arg == NULL || dt_optval_parse(arg, &size) != 0)
|
||||
return (dt_set_errno(dtp, EDT_BADOPTVAL));
|
||||
|
||||
if (size > SIZE_MAX)
|
||||
size = SIZE_MAX;
|
||||
|
||||
if ((p = dt_zalloc(dtp, size)) == NULL) {
|
||||
do {
|
||||
size /= 2;
|
||||
} while ((p = dt_zalloc(dtp, size)) == NULL);
|
||||
}
|
||||
|
||||
dt_free(dtp, p);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
typedef struct dt_option {
|
||||
const char *o_name;
|
||||
int (*o_func)(dtrace_hdl_t *, const char *, uintptr_t);
|
||||
@ -968,7 +942,6 @@ static const dt_option_t _dtrace_ctoptions[] = {
|
||||
{ "linktype", dt_opt_linktype },
|
||||
{ "nolibs", dt_opt_cflags, DTRACE_C_NOLIBS },
|
||||
{ "pgmax", dt_opt_pgmax },
|
||||
{ "preallocate", dt_opt_preallocate },
|
||||
{ "pspec", dt_opt_cflags, DTRACE_C_PSPEC },
|
||||
{ "setenv", dt_opt_setenv, 1 },
|
||||
{ "stdc", dt_opt_stdc },
|
||||
|
3
contrib/libucl/.gitignore
vendored
Normal file
3
contrib/libucl/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
.cproject
|
||||
.project
|
||||
.settings
|
79
contrib/libucl/Makefile
Normal file
79
contrib/libucl/Makefile
Normal file
@ -0,0 +1,79 @@
|
||||
CC ?= gcc
|
||||
DESTDIR ?= /usr/local
|
||||
LD ?= gcc
|
||||
C_COMMON_FLAGS ?= -fPIC -Wall -W -Wno-unused-parameter -Wno-pointer-sign -I./include -I./uthash -I./src
|
||||
MAJOR_VERSION = 0
|
||||
MINOR_VERSION = 2
|
||||
PATCH_VERSION = 8
|
||||
VERSION = "$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_VERSION)"
|
||||
SONAME = libucl.so
|
||||
SONAME_FULL = $(SONAME).$(MAJOR_VERSION)
|
||||
OBJDIR ?= .obj
|
||||
TESTDIR ?= tests
|
||||
SRCDIR ?= src
|
||||
INCLUDEDIR ?= include
|
||||
MKDIR ?= mkdir
|
||||
INSTALL ?= install
|
||||
RM ?= rm
|
||||
RMDIR ?= rmdir
|
||||
LN ?= ln
|
||||
LD_SHARED_FLAGS ?= -Wl,-soname,$(SONAME) -shared -lm
|
||||
LD_UCL_FLAGS ?= -L$(OBJDIR) -Wl,-rpath,$(OBJDIR) -lucl
|
||||
LD_ADD ?= -lrt
|
||||
COPT_FLAGS ?= -g -O0
|
||||
HDEPS = $(SRCDIR)/ucl_hash.h $(SRCDIR)/ucl_chartable.h $(SRCDIR)/ucl_internal.h $(INCLUDEDIR)/ucl.h $(SRCDIR)/xxhash.h
|
||||
OBJECTS = $(OBJDIR)/ucl_hash.o $(OBJDIR)/ucl_util.o $(OBJDIR)/ucl_parser.o $(OBJDIR)/ucl_emitter.o $(OBJDIR)/xxhash.o
|
||||
|
||||
all: $(OBJDIR) $(OBJDIR)/$(SONAME)
|
||||
|
||||
$(OBJDIR)/$(SONAME): $(OBJDIR)/$(SONAME_FULL)
|
||||
$(LN) -sf $(SONAME_FULL) $(OBJDIR)/$(SONAME)
|
||||
|
||||
$(OBJDIR)/$(SONAME_FULL): $(OBJECTS)
|
||||
$(CC) -o $(OBJDIR)/$(SONAME_FULL) $(OBJECTS) $(LD_SHARED_FLAGS) $(LDFLAGS) $(SSL_LIBS) $(FETCH_LIBS)
|
||||
|
||||
$(OBJDIR):
|
||||
@$(MKDIR) -p $(OBJDIR)
|
||||
|
||||
# Compile rules
|
||||
$(OBJDIR)/ucl_util.o: $(SRCDIR)/ucl_util.c $(HDEPS)
|
||||
$(CC) -o $(OBJDIR)/ucl_util.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_util.c
|
||||
$(OBJDIR)/ucl_parser.o: $(SRCDIR)/ucl_parser.c $(HDEPS)
|
||||
$(CC) -o $(OBJDIR)/ucl_parser.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_parser.c
|
||||
$(OBJDIR)/ucl_emitter.o: $(SRCDIR)/ucl_emitter.c $(HDEPS)
|
||||
$(CC) -o $(OBJDIR)/ucl_emitter.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_emitter.c
|
||||
$(OBJDIR)/ucl_hash.o: $(SRCDIR)/ucl_hash.c $(HDEPS)
|
||||
$(CC) -o $(OBJDIR)/ucl_hash.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_hash.c
|
||||
$(OBJDIR)/xxhash.o: $(SRCDIR)/xxhash.c $(HDEPS)
|
||||
$(CC) -o $(OBJDIR)/xxhash.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/xxhash.c
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJDIR)/*.o $(OBJDIR)/$(SONAME_FULL) $(OBJDIR)/$(SONAME) $(OBJDIR)/chargen $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/objdump $(OBJDIR)/test_generate
|
||||
$(RMDIR) $(OBJDIR)
|
||||
|
||||
# Utils
|
||||
|
||||
chargen: utils/chargen.c $(OBJDIR)/$(SONAME)
|
||||
$(CC) -o $(OBJDIR)/chargen $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) utils/chargen.c
|
||||
objdump: utils/objdump.c $(OBJDIR)/$(SONAME)
|
||||
$(CC) -o $(OBJDIR)/objdump $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) utils/objdump.c $(LD_UCL_FLAGS)
|
||||
|
||||
# Tests
|
||||
|
||||
test: $(OBJDIR) $(OBJDIR)/$(SONAME) $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/test_generate
|
||||
|
||||
run-test: test
|
||||
TEST_DIR=$(TESTDIR) $(TESTDIR)/run_tests.sh $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/test_generate
|
||||
|
||||
$(OBJDIR)/test_basic: $(TESTDIR)/test_basic.c $(OBJDIR)/$(SONAME)
|
||||
$(CC) -o $(OBJDIR)/test_basic $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_basic.c $(LD_UCL_FLAGS)
|
||||
$(OBJDIR)/test_speed: $(TESTDIR)/test_speed.c $(OBJDIR)/$(SONAME)
|
||||
$(CC) -o $(OBJDIR)/test_speed $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_speed.c $(LD_UCL_FLAGS) $(LD_ADD)
|
||||
$(OBJDIR)/test_generate: $(TESTDIR)/test_generate.c $(OBJDIR)/$(SONAME)
|
||||
$(CC) -o $(OBJDIR)/test_generate $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_generate.c $(LD_UCL_FLAGS) $(LD_ADD)
|
||||
|
||||
install: $(OBJDIR)/$(SONAME)
|
||||
$(INSTALL) -m0755 $(SONAME) $(DESTDIR)/lib/$(SONAME)
|
||||
$(INSTALL) -m0644 include/ucl.h $(DESTDIR)/include/ucl.h
|
||||
|
||||
.PHONY: clean $(OBJDIR)
|
300
contrib/libucl/README.md
Normal file
300
contrib/libucl/README.md
Normal file
@ -0,0 +1,300 @@
|
||||
## Introduction
|
||||
|
||||
This document describes the main features and principles of the configuration
|
||||
language called `UCL` - universal configuration language.
|
||||
|
||||
If you are looking for the libucl API documentation you can find it at [this page](doc/api.md).
|
||||
|
||||
## Basic structure
|
||||
|
||||
UCL is heavily infused by `nginx` configuration as the example of a convenient configuration
|
||||
system. However, UCL is fully compatible with `JSON` format and is able to parse json files.
|
||||
For example, you can write the same configuration in the following ways:
|
||||
|
||||
* in nginx like:
|
||||
|
||||
```nginx
|
||||
param = value;
|
||||
section {
|
||||
param = value;
|
||||
param1 = value1;
|
||||
flag = true;
|
||||
number = 10k;
|
||||
time = 0.2s;
|
||||
string = "something";
|
||||
subsection {
|
||||
host = {
|
||||
host = "hostname";
|
||||
port = 900;
|
||||
}
|
||||
host = {
|
||||
host = "hostname";
|
||||
port = 901;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
* or in JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"param": "value",
|
||||
"param1": "value1",
|
||||
"flag": true,
|
||||
"subsection": {
|
||||
"host": [
|
||||
{
|
||||
"host": "hostname",
|
||||
"port": 900
|
||||
},
|
||||
{
|
||||
"host": "hostname",
|
||||
"port": 901
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Improvements to the json notation.
|
||||
|
||||
There are various things that make ucl configuration more convenient for editing than strict json:
|
||||
|
||||
### General syntax sugar
|
||||
|
||||
* Braces are not necessary to enclose a top object: it is automatically treated as an object:
|
||||
|
||||
```json
|
||||
"key": "value"
|
||||
```
|
||||
is equal to:
|
||||
```json
|
||||
{"key": "value"}
|
||||
```
|
||||
|
||||
* There is no requirement of quotes for strings and keys, moreover, `:` may be replaced `=` or even be skipped for objects:
|
||||
|
||||
```nginx
|
||||
key = value;
|
||||
section {
|
||||
key = value;
|
||||
}
|
||||
```
|
||||
is equal to:
|
||||
```json
|
||||
{
|
||||
"key": "value",
|
||||
"section": {
|
||||
"key": "value"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
* No commas mess: you can safely place a comma or semicolon for the last element in an array or an object:
|
||||
|
||||
```json
|
||||
{
|
||||
"key1": "value",
|
||||
"key2": "value",
|
||||
}
|
||||
```
|
||||
### Automatic arrays creation
|
||||
|
||||
* Non-unique keys in an object are allowed and are automatically converted to the arrays internally:
|
||||
|
||||
```json
|
||||
{
|
||||
"key": "value1",
|
||||
"key": "value2"
|
||||
}
|
||||
```
|
||||
is converted to:
|
||||
```json
|
||||
{
|
||||
"key": ["value1", "value2"]
|
||||
}
|
||||
```
|
||||
|
||||
### Named keys hierarchy
|
||||
|
||||
UCL accepts named keys and organize them into objects hierarchy internally. Here is an example of this process:
|
||||
```nginx
|
||||
section "blah" {
|
||||
key = value;
|
||||
}
|
||||
section foo {
|
||||
key = value;
|
||||
}
|
||||
```
|
||||
|
||||
is converted to the following object:
|
||||
|
||||
```nginx
|
||||
section {
|
||||
blah {
|
||||
key = value;
|
||||
}
|
||||
foo {
|
||||
key = value;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Plain definitions may be more complex and contain more than a single level of nested objects:
|
||||
|
||||
```nginx
|
||||
section "blah" "foo" {
|
||||
key = value;
|
||||
}
|
||||
```
|
||||
|
||||
is presented as:
|
||||
|
||||
```nginx
|
||||
section {
|
||||
blah {
|
||||
foo {
|
||||
key = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Convenient numbers and booleans
|
||||
|
||||
* Numbers can have suffixes to specify standard multipliers:
|
||||
+ `[kKmMgG]` - standard 10 base multipliers (so `1k` is translated to 1000)
|
||||
+ `[kKmMgG]b` - 2 power multipliers (so `1kb` is translated to 1024)
|
||||
+ `[s|min|d|w|y]` - time multipliers, all time values are translated to float number of seconds, for example `10min` is translated to 600.0 and `10ms` is translated to 0.01
|
||||
* Hexadecimal integers can be used by `0x` prefix, for example `key = 0xff`. However, floating point values can use decimal base only.
|
||||
* Booleans can be specified as `true` or `yes` or `on` and `false` or `no` or `off`.
|
||||
* It is still possible to treat numbers and booleans as strings by enclosing them in double quotes.
|
||||
|
||||
## General improvements
|
||||
|
||||
### Commments
|
||||
|
||||
UCL supports different style of comments:
|
||||
|
||||
* single line: `#`
|
||||
* multiline: `/* ... */`
|
||||
|
||||
Multiline comments may be nested:
|
||||
```c
|
||||
# Sample single line comment
|
||||
/*
|
||||
some comment
|
||||
/* nested comment */
|
||||
end of comment
|
||||
*/
|
||||
```
|
||||
|
||||
### Macros support
|
||||
|
||||
UCL supports external macros both multiline and single line ones:
|
||||
```nginx
|
||||
.macro "sometext";
|
||||
.macro {
|
||||
Some long text
|
||||
....
|
||||
};
|
||||
```
|
||||
There are two internal macros provided by UCL:
|
||||
|
||||
* `include` - read a file `/path/to/file` or an url `http://example.com/file` and include it to the current place of
|
||||
UCL configuration;
|
||||
* `try\_include` - try to read a file or url and include it but do not create a fatal error if a file or url is not accessible;
|
||||
* `includes` - read a file or an url like the previous macro, but fetch and check the signature file (which is obtained
|
||||
by `.sig` suffix appending).
|
||||
|
||||
Public keys which are used for the last command are specified by the concrete UCL user.
|
||||
|
||||
### Variables support
|
||||
|
||||
UCL supports variables in input. Variables are registered by a user of the UCL parser and can be presented in the following forms:
|
||||
|
||||
* `${VARIABLE}`
|
||||
* `$VARIABLE`
|
||||
|
||||
UCL currently does not support nested variables. To escape variables one could use double dollar signs:
|
||||
|
||||
* `$${VARIABLE}` is converted to `${VARIABLE}`
|
||||
* `$$VARIABLE` is converted to `$VARIABLE`
|
||||
|
||||
However, if no valid variables are found in a string, no expansion will be performed (and `$$` thus remains unchanged). This may be a subject
|
||||
to change in future libucl releases.
|
||||
|
||||
### Multiline strings
|
||||
|
||||
UCL can handle multiline strings as well as single line ones. It uses shell/perl like notation for such objects:
|
||||
```
|
||||
key = <<EOD
|
||||
some text
|
||||
splitted to
|
||||
lines
|
||||
EOD
|
||||
```
|
||||
|
||||
In this example `key` will be interpreted as the following string: `some text\nsplitted to\nlines`.
|
||||
Here are some rules for this syntax:
|
||||
|
||||
* Multiline terminator must start just after `<<` symbols and it must consist of capital letters only (e.g. `<<eof` or `<< EOF` won't work);
|
||||
* Terminator must end with a single newline character (and no spaces are allowed between terminator and newline character);
|
||||
* To finish multiline string you need to include a terminator string just after newline and followed by a newline (no spaces or other characters are allowed as well);
|
||||
* The initial and the final newlines are not inserted to the resulting string, but you can still specify newlines at the begin and at the end of a value, for example:
|
||||
|
||||
```
|
||||
key <<EOD
|
||||
|
||||
some
|
||||
text
|
||||
|
||||
EOD
|
||||
```
|
||||
|
||||
## Emitter
|
||||
|
||||
Each UCL object can be serialized to one of the three supported formats:
|
||||
|
||||
* `JSON` - canonic json notation (with spaces indented structure);
|
||||
* `Compacted JSON` - compact json notation (without spaces or newlines);
|
||||
* `Configuration` - nginx like notation;
|
||||
* `YAML` - yaml inlined notation.
|
||||
|
||||
## Performance
|
||||
|
||||
Are UCL parser and emitter fast enough? Well, there are some numbers.
|
||||
I got a 19Mb file that consist of ~700 thousands lines of json (obtained via
|
||||
http://www.json-generator.com/). Then I checked jansson library that performs json
|
||||
parsing and emitting and compared it with UCL. Here are results:
|
||||
|
||||
```
|
||||
jansson: parsed json in 1.3899 seconds
|
||||
jansson: emitted object in 0.2609 seconds
|
||||
|
||||
ucl: parsed input in 0.6649 seconds
|
||||
ucl: emitted config in 0.2423 seconds
|
||||
ucl: emitted json in 0.2329 seconds
|
||||
ucl: emitted compact json in 0.1811 seconds
|
||||
ucl: emitted yaml in 0.2489 seconds
|
||||
```
|
||||
|
||||
So far, UCL seems to be significantly faster than jansson on parsing and slightly faster on emitting. Moreover,
|
||||
UCL compiled with optimizations (-O3) performs significantly faster:
|
||||
```
|
||||
ucl: parsed input in 0.3002 seconds
|
||||
ucl: emitted config in 0.1174 seconds
|
||||
ucl: emitted json in 0.1174 seconds
|
||||
ucl: emitted compact json in 0.0991 seconds
|
||||
ucl: emitted yaml in 0.1354 seconds
|
||||
```
|
||||
|
||||
You can do your own benchmarks by running `make test` in libucl top directory.
|
||||
|
||||
## Conclusion
|
||||
|
||||
UCL has clear design that should be very convenient for reading and writing. At the same time it is compatible with
|
||||
JSON language and therefore can be used as a simple JSON parser. Macroes logic provides an ability to extend configuration
|
||||
language (for example by including some lua code) and comments allows to disable or enable the parts of a configuration
|
||||
quickly.
|
263
contrib/libucl/doc/api.md
Normal file
263
contrib/libucl/doc/api.md
Normal file
@ -0,0 +1,263 @@
|
||||
Synopsis
|
||||
========
|
||||
|
||||
`#include <ucl.h>`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Libucl is a parser and `C` API to parse and generate `ucl` objects. Libucl consist of several groups of functions:
|
||||
|
||||
### Parser functions
|
||||
Used to parse `ucl` files and provide interface to extract `ucl` object
|
||||
|
||||
### Emitting functions
|
||||
Convert `ucl` objects to some textual or binary representation.
|
||||
|
||||
### Conversion functions
|
||||
Help to convert `ucl` objects to C types
|
||||
|
||||
### Generation functions
|
||||
Allow creating of `ucl` objects from C types
|
||||
|
||||
### Iteration functions
|
||||
Iterate over `ucl` objects
|
||||
|
||||
### Utility functions
|
||||
Provide basic utilities to manage `ucl` objects
|
||||
|
||||
# Parser functions
|
||||
|
||||
Parser functions operates with `struct ucl_parser`.
|
||||
|
||||
### ucl_parser_new
|
||||
|
||||
~~~C
|
||||
struct ucl_parser* ucl_parser_new (int flags);
|
||||
~~~
|
||||
|
||||
Creates new parser with the specified flags:
|
||||
|
||||
- `UCL_PARSER_KEY_LOWERCASE` - lowercase keys parsed
|
||||
- `UCL_PARSER_ZEROCOPY` - try to use zero-copy mode when reading files (in zero-copy mode text chunk being parsed without copying strings so it should exist till any object parsed is used)
|
||||
|
||||
### ucl_parser_register_macro
|
||||
|
||||
~~~C
|
||||
void ucl_parser_register_macro (struct ucl_parser *parser,
|
||||
const char *macro, ucl_macro_handler handler, void* ud);
|
||||
~~~
|
||||
|
||||
Register new macro with name .`macro` parsed by handler `handler` that accepts opaque data pointer `ud`. Macro handler should be of the following type:
|
||||
|
||||
~~~C
|
||||
bool (*ucl_macro_handler) (const unsigned char *data,
|
||||
size_t len, void* ud);`
|
||||
~~~
|
||||
|
||||
Handler function accepts macro text `data` of length `len` and the opaque pointer `ud`. If macro is parsed successfully the handler should return `true`. `false` indicates parsing failure and the parser can be terminated.
|
||||
|
||||
### ucl_parser_register_variable
|
||||
|
||||
~~~C
|
||||
void ucl_parser_register_variable (struct ucl_parser *parser,
|
||||
const char *var, const char *value);
|
||||
~~~
|
||||
|
||||
Register new variable $`var` that should be replaced by the parser to the `value` string.
|
||||
|
||||
### ucl_parser_add_chunk
|
||||
|
||||
~~~C
|
||||
bool ucl_parser_add_chunk (struct ucl_parser *parser,
|
||||
const unsigned char *data, size_t len);
|
||||
~~~
|
||||
|
||||
Add new text chunk with `data` of length `len` to the parser. At the moment, `libucl` parser is not a streamlined parser and chunk *must* contain the *valid* ucl object. For example, this object should be valid:
|
||||
|
||||
~~~json
|
||||
{ "var": "value" }
|
||||
~~~
|
||||
|
||||
while this one won't be parsed correctly:
|
||||
|
||||
~~~json
|
||||
{ "var":
|
||||
~~~
|
||||
|
||||
This limitation may possible be removed in future.
|
||||
|
||||
### ucl_parser_add_file
|
||||
|
||||
~~~C
|
||||
bool ucl_parser_add_file (struct ucl_parser *parser,
|
||||
const char *filename);
|
||||
~~~
|
||||
|
||||
Load file `filename` and parse it with the specified `parser`. This function uses `mmap` call to load file, therefore, it should not be `shrinked` during parsing. Otherwise, `libucl` can cause memory corruption and terminate the calling application. This function is also used by the internal handler of `include` macro, hence, this macro has the same limitation.
|
||||
|
||||
### ucl_parser_get_object
|
||||
|
||||
~~~C
|
||||
ucl_object_t* ucl_parser_get_object (struct ucl_parser *parser);
|
||||
~~~
|
||||
|
||||
If the `ucl` data has been parsed correctly this function returns the top object for the parser. Otherwise, this function returns the `NULL` pointer. The reference count for `ucl` object returned is increased by one, therefore, a caller should decrease reference by using `ucl_object_unref` to free object after usage.
|
||||
|
||||
### ucl_parser_get_error
|
||||
|
||||
~~~C
|
||||
const char *ucl_parser_get_error(struct ucl_parser *parser);
|
||||
~~~
|
||||
|
||||
Returns the constant error string for the parser object. If no error occurred during parsing a `NULL` object is returned. A caller should not try to free or modify this string.
|
||||
|
||||
### ucl_parser_free
|
||||
|
||||
~~~C
|
||||
void ucl_parser_free (struct ucl_parser *parser);
|
||||
~~~
|
||||
|
||||
Frees memory occupied by the parser object. The reference count for top object is decreased as well, however if the function `ucl_parser_get_object` was called previously then the top object won't be freed.
|
||||
|
||||
### ucl_pubkey_add
|
||||
|
||||
~~~C
|
||||
bool ucl_pubkey_add (struct ucl_parser *parser,
|
||||
const unsigned char *key, size_t len);
|
||||
~~~
|
||||
|
||||
This function adds a public key from text blob `key` of length `len` to the `parser` object. This public key should be in the `PEM` format and can be used by `.includes` macro for checking signatures of files included. `Openssl` support should be enabled to make this function working. If a key cannot be added (e.g. due to format error) or `openssl` was not linked to `libucl` then this function returns `false`.
|
||||
|
||||
### ucl_parser_set_filevars
|
||||
|
||||
~~~C
|
||||
bool ucl_parser_set_filevars (struct ucl_parser *parser,
|
||||
const char *filename, bool need_expand);
|
||||
~~~
|
||||
|
||||
Add the standard file variables to the `parser` based on the `filename` specified:
|
||||
|
||||
- `$FILENAME` - a filename of `ucl` input
|
||||
- `$CURDIR` - a current directory of the input
|
||||
|
||||
For example, if a `filename` param is `../something.conf` then the variables will have the following values:
|
||||
|
||||
- `$FILENAME` - "../something.conf"
|
||||
- `$CURDIR` - ".."
|
||||
|
||||
if `need_expand` parameter is `true` then all relative paths are expanded using `realpath` call. In this example if `..` is `/etc/dir` then variables will have these values:
|
||||
|
||||
- `$FILENAME` - "/etc/something.conf"
|
||||
- `$CURDIR` - "/etc"
|
||||
|
||||
## Parser usage example
|
||||
|
||||
The following example loads, parses and extracts `ucl` object from stdin using `libucl` parser functions (the length of input is limited to 8K):
|
||||
|
||||
~~~C
|
||||
char inbuf[8192];
|
||||
struct ucl_parser *parser = NULL;
|
||||
int ret = 0, r = 0;
|
||||
ucl_object_t *obj = NULL;
|
||||
FILE *in;
|
||||
|
||||
in = stdin;
|
||||
parser = ucl_parser_new (0);
|
||||
while (!feof (in) && r < (int)sizeof (inbuf)) {
|
||||
r += fread (inbuf + r, 1, sizeof (inbuf) - r, in);
|
||||
}
|
||||
ucl_parser_add_chunk (parser, inbuf, r);
|
||||
fclose (in);
|
||||
|
||||
if (ucl_parser_get_error (parser)) {
|
||||
printf ("Error occured: %s\n", ucl_parser_get_error (parser));
|
||||
ret = 1;
|
||||
}
|
||||
else {
|
||||
obj = ucl_parser_get_object (parser);
|
||||
}
|
||||
|
||||
if (parser != NULL) {
|
||||
ucl_parser_free (parser);
|
||||
}
|
||||
if (obj != NULL) {
|
||||
ucl_object_unref (obj);
|
||||
}
|
||||
return ret;
|
||||
~~~
|
||||
|
||||
# Emitting functions
|
||||
|
||||
Libucl can transform UCL objects to a number of tectual formats:
|
||||
|
||||
- configuration (`UCL_EMIT_CONFIG`) - nginx like human readable configuration file where implicit arrays are transformed to the duplicate keys
|
||||
- compact json: `UCL_EMIT_JSON_COMPACT` - single line valid json without spaces
|
||||
- formatted json: `UCL_EMIT_JSON` - pretty formatted JSON with newlines and spaces
|
||||
- compact yaml: `UCL_EMIT_YAML` - compact YAML output
|
||||
|
||||
Moreover, libucl API allows to select a custom set of emitting functions allowing
|
||||
efficent and zero-copy output of libucl objects. Libucl uses the following structure to support this feature:
|
||||
|
||||
~~~C
|
||||
struct ucl_emitter_functions {
|
||||
/** Append a single character */
|
||||
int (*ucl_emitter_append_character) (unsigned char c, size_t nchars, void *ud);
|
||||
/** Append a string of a specified length */
|
||||
int (*ucl_emitter_append_len) (unsigned const char *str, size_t len, void *ud);
|
||||
/** Append a 64 bit integer */
|
||||
int (*ucl_emitter_append_int) (int64_t elt, void *ud);
|
||||
/** Append floating point element */
|
||||
int (*ucl_emitter_append_double) (double elt, void *ud);
|
||||
/** Opaque userdata pointer */
|
||||
void *ud;
|
||||
};
|
||||
~~~
|
||||
|
||||
This structure defines the following callbacks:
|
||||
|
||||
- `ucl_emitter_append_character` - a function that is called to append `nchars` characters equal to `c`
|
||||
- `ucl_emitter_append_len` - used to append a string of length `len` starting from pointer `str`
|
||||
- `ucl_emitter_append_int` - this function applies to integer numbers
|
||||
- `ucl_emitter_append_double` - this function is intended to output floating point variable
|
||||
|
||||
The set of these functions could be used to output text formats of `UCL` objects to different structures or streams.
|
||||
|
||||
Libucl provides the following functions for emitting UCL objects:
|
||||
|
||||
### ucl_object_emit
|
||||
|
||||
~~~C
|
||||
unsigned char *ucl_object_emit (ucl_object_t *obj, enum ucl_emitter emit_type);
|
||||
~~~
|
||||
|
||||
Allocate a string that is suitable to fit the underlying UCL object `obj` and fill it with the textual representation of the object `obj` according to style `emit_type`. The caller should free the returned string after using.
|
||||
|
||||
### ucl_object_emit_full
|
||||
|
||||
~~~C
|
||||
bool ucl_object_emit_full (ucl_object_t *obj, enum ucl_emitter emit_type,
|
||||
struct ucl_emitter_functions *emitter);
|
||||
~~~
|
||||
|
||||
This function is similar to the previous with the exception that it accepts the additional argument `emitter` that defines the concrete set of output functions. This emit function could be useful for custom structures or streams emitters (including C++ ones, for example).
|
||||
|
||||
# Conversion functions
|
||||
|
||||
Conversion functions are used to convert UCL objects to primitive types, such as strings, numbers or boolean values. There are two types of conversion functions:
|
||||
|
||||
- safe: try to convert an ucl object to a primitive type and fail if such a conversion is not possible
|
||||
- unsafe: return primitive type without additional checks, if the object cannot be converted then some reasonable default is returned (NULL for strings and 0 for numbers)
|
||||
|
||||
Also there is a single `ucl_object_tostring_forced` function that converts any UCL object (including compound types - arrays and objects) to a string representation. For compound and numeric types this function performs emitting to a compact json format actually.
|
||||
|
||||
Here is a list of all conversion functions:
|
||||
|
||||
- `ucl_object_toint` - returns `int64_t` of UCL object
|
||||
- `ucl_object_todouble` - returns `double` of UCL object
|
||||
- `ucl_object_toboolean` - returns `bool` of UCL object
|
||||
- `ucl_object_tostring` - returns `const char *` of UCL object (this string is NULL terminated)
|
||||
- `ucl_object_tolstring` - returns `const char *` and `size_t` len of UCL object (string can be not NULL terminated)
|
||||
- `ucl_object_tostring_forced` - returns string representation of any UCL object
|
||||
|
||||
Strings returned by these pointers are associated with the UCL object and exist over its lifetime. A caller should not free this memory.
|
1045
contrib/libucl/include/ucl.h
Normal file
1045
contrib/libucl/include/ucl.h
Normal file
File diff suppressed because it is too large
Load Diff
267
contrib/libucl/src/ucl_chartable.h
Normal file
267
contrib/libucl/src/ucl_chartable.h
Normal file
@ -0,0 +1,267 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef UCL_CHARTABLE_H_
|
||||
#define UCL_CHARTABLE_H_
|
||||
|
||||
#include "ucl_internal.h"
|
||||
|
||||
static const unsigned int ucl_chartable[255] = {
|
||||
UCL_CHARACTER_VALUE_END, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE,
|
||||
UCL_CHARACTER_WHITESPACE|UCL_CHARACTER_WHITESPACE_UNSAFE|UCL_CHARACTER_KEY_SEP|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE,
|
||||
UCL_CHARACTER_WHITESPACE_UNSAFE|UCL_CHARACTER_VALUE_END|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE,
|
||||
UCL_CHARACTER_WHITESPACE_UNSAFE,
|
||||
UCL_CHARACTER_WHITESPACE_UNSAFE|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE,
|
||||
UCL_CHARACTER_WHITESPACE_UNSAFE|UCL_CHARACTER_VALUE_END|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_WHITESPACE|UCL_CHARACTER_WHITESPACE_UNSAFE|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_KEY_SEP|UCL_CHARACTER_UCL_UNSAFE /* */,
|
||||
UCL_CHARACTER_VALUE_STR /* ! */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_ESCAPE|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE /* " */,
|
||||
UCL_CHARACTER_VALUE_END /* # */, UCL_CHARACTER_VALUE_STR /* $ */,
|
||||
UCL_CHARACTER_VALUE_STR /* % */, UCL_CHARACTER_VALUE_STR /* & */,
|
||||
UCL_CHARACTER_VALUE_STR /* ' */, UCL_CHARACTER_VALUE_STR /* ( */,
|
||||
UCL_CHARACTER_VALUE_STR /* ) */, UCL_CHARACTER_VALUE_STR /* * */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* + */,
|
||||
UCL_CHARACTER_VALUE_END /* , */,
|
||||
UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* - */,
|
||||
UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* . */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_ESCAPE /* / */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 0 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 1 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 2 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 3 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 4 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 5 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 6 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 7 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 8 */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT_START|UCL_CHARACTER_VALUE_DIGIT /* 9 */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_KEY_SEP|UCL_CHARACTER_UCL_UNSAFE /* : */,
|
||||
UCL_CHARACTER_VALUE_END /* ; */, UCL_CHARACTER_VALUE_STR /* < */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_KEY_SEP|UCL_CHARACTER_UCL_UNSAFE /* = */,
|
||||
UCL_CHARACTER_VALUE_STR /* > */, UCL_CHARACTER_VALUE_STR /* ? */,
|
||||
UCL_CHARACTER_VALUE_STR /* @ */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* A */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* B */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* C */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* D */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* E */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* F */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* G */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* H */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* I */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* J */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* K */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* L */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* M */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* N */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* O */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* P */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* Q */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* R */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* S */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* T */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* U */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* V */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* W */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* X */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* Y */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* Z */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_UCL_UNSAFE /* [ */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_ESCAPE|UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_UCL_UNSAFE /* \ */,
|
||||
UCL_CHARACTER_VALUE_END /* ] */, UCL_CHARACTER_VALUE_STR /* ^ */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR /* _ */,
|
||||
UCL_CHARACTER_VALUE_STR /* ` */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* a */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* b */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* c */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* d */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* e */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* f */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* g */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* h */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* i */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* j */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* k */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* l */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* m */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* n */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* o */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* p */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* q */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* r */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* s */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* t */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT|UCL_CHARACTER_ESCAPE /* u */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* v */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* w */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* x */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* y */,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_VALUE_DIGIT /* z */,
|
||||
UCL_CHARACTER_VALUE_STR|UCL_CHARACTER_UCL_UNSAFE /* { */,
|
||||
UCL_CHARACTER_VALUE_STR /* | */, UCL_CHARACTER_VALUE_END /* } */,
|
||||
UCL_CHARACTER_VALUE_STR /* ~ */, UCL_CHARACTER_DENIED,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR,
|
||||
UCL_CHARACTER_KEY_START|UCL_CHARACTER_KEY|UCL_CHARACTER_VALUE_STR
|
||||
};
|
||||
|
||||
static inline bool
|
||||
ucl_test_character (unsigned char c, int type_flags)
|
||||
{
|
||||
return (ucl_chartable[c] & type_flags) != 0;
|
||||
}
|
||||
|
||||
#endif /* UCL_CHARTABLE_H_ */
|
829
contrib/libucl/src/ucl_emitter.c
Normal file
829
contrib/libucl/src/ucl_emitter.c
Normal file
@ -0,0 +1,829 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#include "ucl.h"
|
||||
#include "ucl_internal.h"
|
||||
#include "ucl_chartable.h"
|
||||
|
||||
/**
|
||||
* @file rcl_emitter.c
|
||||
* Serialise UCL object to various of output formats
|
||||
*/
|
||||
|
||||
|
||||
static void ucl_obj_write_json (ucl_object_t *obj,
|
||||
struct ucl_emitter_functions *func,
|
||||
unsigned int tabs,
|
||||
bool start_tabs,
|
||||
bool compact);
|
||||
static void ucl_elt_write_json (ucl_object_t *obj,
|
||||
struct ucl_emitter_functions *func,
|
||||
unsigned int tabs,
|
||||
bool start_tabs,
|
||||
bool compact);
|
||||
static void ucl_elt_write_config (ucl_object_t *obj,
|
||||
struct ucl_emitter_functions *func,
|
||||
unsigned int tabs,
|
||||
bool start_tabs,
|
||||
bool is_top,
|
||||
bool expand_array);
|
||||
static void ucl_elt_write_yaml (ucl_object_t *obj,
|
||||
struct ucl_emitter_functions *func,
|
||||
unsigned int tabs,
|
||||
bool start_tabs,
|
||||
bool compact,
|
||||
bool expand_array);
|
||||
static void ucl_elt_array_write_yaml (ucl_object_t *obj,
|
||||
struct ucl_emitter_functions *func,
|
||||
unsigned int tabs,
|
||||
bool start_tabs,
|
||||
bool is_top);
|
||||
|
||||
/**
|
||||
* Add tabulation to the output buffer
|
||||
* @param buf target buffer
|
||||
* @param tabs number of tabs to add
|
||||
*/
|
||||
static inline void
|
||||
ucl_add_tabs (struct ucl_emitter_functions *func, unsigned int tabs, bool compact)
|
||||
{
|
||||
if (!compact) {
|
||||
func->ucl_emitter_append_character (' ', tabs * 4, func->ud);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialise string
|
||||
* @param str string to emit
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_string_write_json (const char *str, size_t size,
|
||||
struct ucl_emitter_functions *func)
|
||||
{
|
||||
const char *p = str, *c = str;
|
||||
size_t len = 0;
|
||||
|
||||
func->ucl_emitter_append_character ('"', 1, func->ud);
|
||||
while (size) {
|
||||
if (ucl_test_character (*p, UCL_CHARACTER_JSON_UNSAFE)) {
|
||||
if (len > 0) {
|
||||
func->ucl_emitter_append_len (c, len, func->ud);
|
||||
}
|
||||
switch (*p) {
|
||||
case '\n':
|
||||
func->ucl_emitter_append_len ("\\n", 2, func->ud);
|
||||
break;
|
||||
case '\r':
|
||||
func->ucl_emitter_append_len ("\\r", 2, func->ud);
|
||||
break;
|
||||
case '\b':
|
||||
func->ucl_emitter_append_len ("\\b", 2, func->ud);
|
||||
break;
|
||||
case '\t':
|
||||
func->ucl_emitter_append_len ("\\t", 2, func->ud);
|
||||
break;
|
||||
case '\f':
|
||||
func->ucl_emitter_append_len ("\\f", 2, func->ud);
|
||||
break;
|
||||
case '\\':
|
||||
func->ucl_emitter_append_len ("\\\\", 2, func->ud);
|
||||
break;
|
||||
case '"':
|
||||
func->ucl_emitter_append_len ("\\\"", 2, func->ud);
|
||||
break;
|
||||
}
|
||||
len = 0;
|
||||
c = ++p;
|
||||
}
|
||||
else {
|
||||
p ++;
|
||||
len ++;
|
||||
}
|
||||
size --;
|
||||
}
|
||||
if (len > 0) {
|
||||
func->ucl_emitter_append_len (c, len, func->ud);
|
||||
}
|
||||
func->ucl_emitter_append_character ('"', 1, func->ud);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single object to the buffer
|
||||
* @param obj object to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_obj_write_json (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool compact)
|
||||
{
|
||||
ucl_object_t *cur;
|
||||
ucl_hash_iter_t it = NULL;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character ('{', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("{\n", 2, func->ud);
|
||||
}
|
||||
while ((cur = ucl_hash_iterate (obj->value.ov, &it))) {
|
||||
ucl_add_tabs (func, tabs + 1, compact);
|
||||
if (cur->keylen > 0) {
|
||||
ucl_elt_string_write_json (cur->key, cur->keylen, func);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("null", 4, func->ud);
|
||||
}
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character (':', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len (": ", 2, func->ud);
|
||||
}
|
||||
ucl_obj_write_json (cur, func, tabs + 1, false, compact);
|
||||
if (ucl_hash_iter_has_next (it)) {
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character (',', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len (",\n", 2, func->ud);
|
||||
}
|
||||
}
|
||||
else if (!compact) {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
}
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
func->ucl_emitter_append_character ('}', 1, func->ud);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single array to the buffer
|
||||
* @param obj array to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_array_write_json (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool compact)
|
||||
{
|
||||
ucl_object_t *cur = obj;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character ('[', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("[\n", 2, func->ud);
|
||||
}
|
||||
while (cur) {
|
||||
ucl_elt_write_json (cur, func, tabs + 1, true, compact);
|
||||
if (cur->next != NULL) {
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character (',', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len (",\n", 2, func->ud);
|
||||
}
|
||||
}
|
||||
else if (!compact) {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
cur = cur->next;
|
||||
}
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
func->ucl_emitter_append_character (']', 1, func->ud);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit a single element
|
||||
* @param obj object
|
||||
* @param buf buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_write_json (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool compact)
|
||||
{
|
||||
bool flag;
|
||||
|
||||
switch (obj->type) {
|
||||
case UCL_INT:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
func->ucl_emitter_append_int (ucl_object_toint (obj), func->ud);
|
||||
break;
|
||||
case UCL_FLOAT:
|
||||
case UCL_TIME:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
func->ucl_emitter_append_double (ucl_object_todouble (obj), func->ud);
|
||||
break;
|
||||
case UCL_BOOLEAN:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
flag = ucl_object_toboolean (obj);
|
||||
if (flag) {
|
||||
func->ucl_emitter_append_len ("true", 4, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("false", 5, func->ud);
|
||||
}
|
||||
break;
|
||||
case UCL_STRING:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
ucl_elt_string_write_json (obj->value.sv, obj->len, func);
|
||||
break;
|
||||
case UCL_NULL:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
func->ucl_emitter_append_len ("null", 4, func->ud);
|
||||
break;
|
||||
case UCL_OBJECT:
|
||||
ucl_elt_obj_write_json (obj, func, tabs, start_tabs, compact);
|
||||
break;
|
||||
case UCL_ARRAY:
|
||||
ucl_elt_array_write_json (obj->value.av, func, tabs, start_tabs, compact);
|
||||
break;
|
||||
case UCL_USERDATA:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single object to the buffer
|
||||
* @param obj object
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_obj_write_json (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool compact)
|
||||
{
|
||||
ucl_object_t *cur;
|
||||
bool is_array = (obj->next != NULL);
|
||||
|
||||
if (is_array) {
|
||||
/* This is an array actually */
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
}
|
||||
|
||||
if (compact) {
|
||||
func->ucl_emitter_append_character ('[', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("[\n", 2, func->ud);
|
||||
}
|
||||
cur = obj;
|
||||
while (cur != NULL) {
|
||||
ucl_elt_write_json (cur, func, tabs + 1, true, compact);
|
||||
if (cur->next) {
|
||||
func->ucl_emitter_append_character (',', 1, func->ud);
|
||||
}
|
||||
if (!compact) {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
cur = cur->next;
|
||||
}
|
||||
ucl_add_tabs (func, tabs, compact);
|
||||
func->ucl_emitter_append_character (']', 1, func->ud);
|
||||
}
|
||||
else {
|
||||
ucl_elt_write_json (obj, func, tabs, start_tabs, compact);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit an object to json
|
||||
* @param obj object
|
||||
* @return json output (should be freed after using)
|
||||
*/
|
||||
static void
|
||||
ucl_object_emit_json (ucl_object_t *obj, bool compact, struct ucl_emitter_functions *func)
|
||||
{
|
||||
ucl_obj_write_json (obj, func, 0, false, compact);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single object to the buffer
|
||||
* @param obj object to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_obj_write_config (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top)
|
||||
{
|
||||
ucl_object_t *cur, *cur_obj;
|
||||
ucl_hash_iter_t it = NULL;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, is_top);
|
||||
}
|
||||
if (!is_top) {
|
||||
func->ucl_emitter_append_len ("{\n", 2, func->ud);
|
||||
}
|
||||
|
||||
while ((cur = ucl_hash_iterate (obj->value.ov, &it))) {
|
||||
LL_FOREACH (cur, cur_obj) {
|
||||
ucl_add_tabs (func, tabs + 1, is_top);
|
||||
if (cur_obj->flags & UCL_OBJECT_NEED_KEY_ESCAPE) {
|
||||
ucl_elt_string_write_json (cur_obj->key, cur_obj->keylen, func);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len (cur_obj->key, cur_obj->keylen, func->ud);
|
||||
}
|
||||
if (cur_obj->type != UCL_OBJECT && cur_obj->type != UCL_ARRAY) {
|
||||
func->ucl_emitter_append_len (" = ", 3, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_character (' ', 1, func->ud);
|
||||
}
|
||||
ucl_elt_write_config (cur_obj, func,
|
||||
is_top ? tabs : tabs + 1,
|
||||
false, false, false);
|
||||
if (cur_obj->type != UCL_OBJECT && cur_obj->type != UCL_ARRAY) {
|
||||
func->ucl_emitter_append_len (";\n", 2, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ucl_add_tabs (func, tabs, is_top);
|
||||
if (!is_top) {
|
||||
func->ucl_emitter_append_character ('}', 1, func->ud);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single array to the buffer
|
||||
* @param obj array to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_array_write_config (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top)
|
||||
{
|
||||
ucl_object_t *cur = obj;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
|
||||
func->ucl_emitter_append_len ("[\n", 2, func->ud);
|
||||
while (cur) {
|
||||
ucl_elt_write_config (cur, func, tabs + 1, true, false, false);
|
||||
func->ucl_emitter_append_len (",\n", 2, func->ud);
|
||||
cur = cur->next;
|
||||
}
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
func->ucl_emitter_append_character (']', 1, func->ud);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit a single element
|
||||
* @param obj object
|
||||
* @param buf buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_write_config (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top, bool expand_array)
|
||||
{
|
||||
bool flag;
|
||||
|
||||
if (expand_array && obj->next != NULL) {
|
||||
ucl_elt_array_write_config (obj, func, tabs, start_tabs, is_top);
|
||||
}
|
||||
else {
|
||||
switch (obj->type) {
|
||||
case UCL_INT:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_int (ucl_object_toint (obj), func->ud);
|
||||
break;
|
||||
case UCL_FLOAT:
|
||||
case UCL_TIME:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_double (ucl_object_todouble (obj), func->ud);
|
||||
break;
|
||||
case UCL_BOOLEAN:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
flag = ucl_object_toboolean (obj);
|
||||
if (flag) {
|
||||
func->ucl_emitter_append_len ("true", 4, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("false", 5, func->ud);
|
||||
}
|
||||
break;
|
||||
case UCL_STRING:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
ucl_elt_string_write_json (obj->value.sv, obj->len, func);
|
||||
break;
|
||||
case UCL_NULL:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_len ("null", 4, func->ud);
|
||||
break;
|
||||
case UCL_OBJECT:
|
||||
ucl_elt_obj_write_config (obj, func, tabs, start_tabs, is_top);
|
||||
break;
|
||||
case UCL_ARRAY:
|
||||
ucl_elt_array_write_config (obj->value.av, func, tabs, start_tabs, is_top);
|
||||
break;
|
||||
case UCL_USERDATA:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit an object to rcl
|
||||
* @param obj object
|
||||
* @return rcl output (should be freed after using)
|
||||
*/
|
||||
static void
|
||||
ucl_object_emit_config (ucl_object_t *obj, struct ucl_emitter_functions *func)
|
||||
{
|
||||
ucl_elt_write_config (obj, func, 0, false, true, true);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ucl_obj_write_yaml (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs)
|
||||
{
|
||||
bool is_array = (obj->next != NULL);
|
||||
|
||||
if (is_array) {
|
||||
ucl_elt_array_write_yaml (obj, func, tabs, start_tabs, false);
|
||||
}
|
||||
else {
|
||||
ucl_elt_write_yaml (obj, func, tabs, start_tabs, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single object to the buffer
|
||||
* @param obj object to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_obj_write_yaml (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top)
|
||||
{
|
||||
ucl_object_t *cur;
|
||||
ucl_hash_iter_t it = NULL;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, is_top);
|
||||
}
|
||||
if (!is_top) {
|
||||
func->ucl_emitter_append_len ("{\n", 2, func->ud);
|
||||
}
|
||||
|
||||
while ((cur = ucl_hash_iterate (obj->value.ov, &it))) {
|
||||
ucl_add_tabs (func, tabs + 1, is_top);
|
||||
if (cur->keylen > 0) {
|
||||
ucl_elt_string_write_json (cur->key, cur->keylen, func);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("null", 4, func->ud);
|
||||
}
|
||||
func->ucl_emitter_append_len (": ", 2, func->ud);
|
||||
ucl_obj_write_yaml (cur, func, is_top ? tabs : tabs + 1, false);
|
||||
if (ucl_hash_iter_has_next(it)) {
|
||||
if (!is_top) {
|
||||
func->ucl_emitter_append_len (",\n", 2, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_character ('\n', 1, func->ud);
|
||||
}
|
||||
}
|
||||
|
||||
ucl_add_tabs (func, tabs, is_top);
|
||||
if (!is_top) {
|
||||
func->ucl_emitter_append_character ('}', 1, func->ud);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a single array to the buffer
|
||||
* @param obj array to write
|
||||
* @param buf target buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_array_write_yaml (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top)
|
||||
{
|
||||
ucl_object_t *cur = obj;
|
||||
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
|
||||
func->ucl_emitter_append_len ("[\n", 2, func->ud);
|
||||
while (cur) {
|
||||
ucl_elt_write_yaml (cur, func, tabs + 1, true, false, false);
|
||||
func->ucl_emitter_append_len (",\n", 2, func->ud);
|
||||
cur = cur->next;
|
||||
}
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
func->ucl_emitter_append_character (']', 1, func->ud);
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit a single element
|
||||
* @param obj object
|
||||
* @param buf buffer
|
||||
*/
|
||||
static void
|
||||
ucl_elt_write_yaml (ucl_object_t *obj, struct ucl_emitter_functions *func,
|
||||
unsigned int tabs, bool start_tabs, bool is_top, bool expand_array)
|
||||
{
|
||||
bool flag;
|
||||
|
||||
if (expand_array && obj->next != NULL ) {
|
||||
ucl_elt_array_write_yaml (obj, func, tabs, start_tabs, is_top);
|
||||
}
|
||||
else {
|
||||
switch (obj->type) {
|
||||
case UCL_INT:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_int (ucl_object_toint (obj), func->ud);
|
||||
break;
|
||||
case UCL_FLOAT:
|
||||
case UCL_TIME:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_double (ucl_object_todouble (obj), func->ud);
|
||||
break;
|
||||
case UCL_BOOLEAN:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
flag = ucl_object_toboolean (obj);
|
||||
if (flag) {
|
||||
func->ucl_emitter_append_len ("true", 4, func->ud);
|
||||
}
|
||||
else {
|
||||
func->ucl_emitter_append_len ("false", 5, func->ud);
|
||||
}
|
||||
break;
|
||||
case UCL_STRING:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
ucl_elt_string_write_json (obj->value.sv, obj->len, func);
|
||||
break;
|
||||
case UCL_NULL:
|
||||
if (start_tabs) {
|
||||
ucl_add_tabs (func, tabs, false);
|
||||
}
|
||||
func->ucl_emitter_append_len ("null", 4, func->ud);
|
||||
break;
|
||||
case UCL_OBJECT:
|
||||
ucl_elt_obj_write_yaml (obj, func, tabs, start_tabs, is_top);
|
||||
break;
|
||||
case UCL_ARRAY:
|
||||
ucl_elt_array_write_yaml (obj->value.av, func, tabs, start_tabs, is_top);
|
||||
break;
|
||||
case UCL_USERDATA:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit an object to rcl
|
||||
* @param obj object
|
||||
* @return rcl output (should be freed after using)
|
||||
*/
|
||||
static void
|
||||
ucl_object_emit_yaml (ucl_object_t *obj, struct ucl_emitter_functions *func)
|
||||
{
|
||||
ucl_elt_write_yaml (obj, func, 0, false, true, true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Generic utstring output
|
||||
*/
|
||||
static int
|
||||
ucl_utstring_append_character (unsigned char c, size_t len, void *ud)
|
||||
{
|
||||
UT_string *buf = ud;
|
||||
|
||||
if (len == 1) {
|
||||
utstring_append_c (buf, c);
|
||||
}
|
||||
else {
|
||||
utstring_reserve (buf, len);
|
||||
memset (&buf->d[buf->i], c, len);
|
||||
buf->i += len;
|
||||
buf->d[buf->i] = '\0';
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ucl_utstring_append_len (const unsigned char *str, size_t len, void *ud)
|
||||
{
|
||||
UT_string *buf = ud;
|
||||
|
||||
utstring_append_len (buf, str, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ucl_utstring_append_int (int64_t val, void *ud)
|
||||
{
|
||||
UT_string *buf = ud;
|
||||
|
||||
utstring_printf (buf, "%jd", (intmax_t)val);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ucl_utstring_append_double (double val, void *ud)
|
||||
{
|
||||
UT_string *buf = ud;
|
||||
const double delta = 0.0000001;
|
||||
|
||||
if (val == (double)(int)val) {
|
||||
utstring_printf (buf, "%.1lf", val);
|
||||
}
|
||||
else if (fabs (val - (double)(int)val) < delta) {
|
||||
/* Write at maximum precision */
|
||||
utstring_printf (buf, "%.*lg", DBL_DIG, val);
|
||||
}
|
||||
else {
|
||||
utstring_printf (buf, "%lf", val);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
unsigned char *
|
||||
ucl_object_emit (ucl_object_t *obj, enum ucl_emitter emit_type)
|
||||
{
|
||||
UT_string *buf = NULL;
|
||||
unsigned char *res = NULL;
|
||||
struct ucl_emitter_functions func = {
|
||||
.ucl_emitter_append_character = ucl_utstring_append_character,
|
||||
.ucl_emitter_append_len = ucl_utstring_append_len,
|
||||
.ucl_emitter_append_int = ucl_utstring_append_int,
|
||||
.ucl_emitter_append_double = ucl_utstring_append_double
|
||||
};
|
||||
|
||||
if (obj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
utstring_new (buf);
|
||||
func.ud = buf;
|
||||
|
||||
if (buf != NULL) {
|
||||
if (emit_type == UCL_EMIT_JSON) {
|
||||
ucl_object_emit_json (obj, false, &func);
|
||||
}
|
||||
else if (emit_type == UCL_EMIT_JSON_COMPACT) {
|
||||
ucl_object_emit_json (obj, true, &func);
|
||||
}
|
||||
else if (emit_type == UCL_EMIT_YAML) {
|
||||
ucl_object_emit_yaml (obj, &func);
|
||||
}
|
||||
else {
|
||||
ucl_object_emit_config (obj, &func);
|
||||
}
|
||||
|
||||
res = utstring_body (buf);
|
||||
free (buf);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool
|
||||
ucl_object_emit_full (ucl_object_t *obj, enum ucl_emitter emit_type,
|
||||
struct ucl_emitter_functions *emitter)
|
||||
{
|
||||
if (emit_type == UCL_EMIT_JSON) {
|
||||
ucl_object_emit_json (obj, false, emitter);
|
||||
}
|
||||
else if (emit_type == UCL_EMIT_JSON_COMPACT) {
|
||||
ucl_object_emit_json (obj, true, emitter);
|
||||
}
|
||||
else if (emit_type == UCL_EMIT_YAML) {
|
||||
ucl_object_emit_yaml (obj, emitter);
|
||||
}
|
||||
else {
|
||||
ucl_object_emit_config (obj, emitter);
|
||||
}
|
||||
|
||||
/* XXX: need some error checks here */
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
unsigned char *
|
||||
ucl_object_emit_single_json (ucl_object_t *obj)
|
||||
{
|
||||
UT_string *buf = NULL;
|
||||
unsigned char *res = NULL;
|
||||
|
||||
if (obj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
utstring_new (buf);
|
||||
|
||||
if (buf != NULL) {
|
||||
switch (obj->type) {
|
||||
case UCL_OBJECT:
|
||||
ucl_utstring_append_len ("object", 6, buf);
|
||||
break;
|
||||
case UCL_ARRAY:
|
||||
ucl_utstring_append_len ("array", 5, buf);
|
||||
break;
|
||||
case UCL_INT:
|
||||
ucl_utstring_append_int (obj->value.iv, buf);
|
||||
break;
|
||||
case UCL_FLOAT:
|
||||
case UCL_TIME:
|
||||
ucl_utstring_append_double (obj->value.dv, buf);
|
||||
break;
|
||||
case UCL_NULL:
|
||||
ucl_utstring_append_len ("null", 4, buf);
|
||||
break;
|
||||
case UCL_BOOLEAN:
|
||||
if (obj->value.iv) {
|
||||
ucl_utstring_append_len ("true", 4, buf);
|
||||
}
|
||||
else {
|
||||
ucl_utstring_append_len ("false", 5, buf);
|
||||
}
|
||||
break;
|
||||
case UCL_STRING:
|
||||
ucl_utstring_append_len (obj->value.sv, obj->len, buf);
|
||||
break;
|
||||
case UCL_USERDATA:
|
||||
ucl_utstring_append_len ("userdata", 8, buf);
|
||||
break;
|
||||
}
|
||||
res = utstring_body (buf);
|
||||
free (buf);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
120
contrib/libucl/src/ucl_hash.c
Normal file
120
contrib/libucl/src/ucl_hash.c
Normal file
@ -0,0 +1,120 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "ucl_hash.h"
|
||||
#include "utlist.h"
|
||||
|
||||
ucl_hash_t*
|
||||
ucl_hash_create (void)
|
||||
{
|
||||
ucl_hash_t *new;
|
||||
|
||||
new = UCL_ALLOC (sizeof (ucl_hash_t));
|
||||
if (new != NULL) {
|
||||
new->buckets = NULL;
|
||||
}
|
||||
return new;
|
||||
}
|
||||
|
||||
void ucl_hash_destroy (ucl_hash_t* hashlin, ucl_hash_free_func *func)
|
||||
{
|
||||
ucl_hash_node_t *elt, *tmp;
|
||||
|
||||
HASH_ITER (hh, hashlin->buckets, elt, tmp) {
|
||||
HASH_DELETE (hh, hashlin->buckets, elt);
|
||||
if (func) {
|
||||
func (elt->data);
|
||||
}
|
||||
UCL_FREE (sizeof (ucl_hash_node_t), elt);
|
||||
}
|
||||
UCL_FREE (sizeof (ucl_hash_t), hashlin);
|
||||
}
|
||||
|
||||
void
|
||||
ucl_hash_insert (ucl_hash_t* hashlin, ucl_object_t *obj, const char *key, unsigned keylen)
|
||||
{
|
||||
ucl_hash_node_t *node;
|
||||
|
||||
node = UCL_ALLOC (sizeof (ucl_hash_node_t));
|
||||
node->data = obj;
|
||||
HASH_ADD_KEYPTR (hh, hashlin->buckets, key, keylen, node);
|
||||
}
|
||||
|
||||
void*
|
||||
ucl_hash_iterate (ucl_hash_t *hashlin, ucl_hash_iter_t *iter)
|
||||
{
|
||||
ucl_hash_node_t *elt = *iter;
|
||||
|
||||
if (elt == NULL) {
|
||||
if (hashlin == NULL || hashlin->buckets == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
elt = hashlin->buckets;
|
||||
if (elt == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else if (elt == hashlin->buckets) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*iter = elt->hh.next ? elt->hh.next : hashlin->buckets;
|
||||
return elt->data;
|
||||
}
|
||||
|
||||
bool
|
||||
ucl_hash_iter_has_next (ucl_hash_iter_t iter)
|
||||
{
|
||||
ucl_hash_node_t *elt = iter;
|
||||
|
||||
return (elt == NULL || elt->hh.prev != NULL);
|
||||
}
|
||||
|
||||
|
||||
ucl_object_t*
|
||||
ucl_hash_search (ucl_hash_t* hashlin, const char *key, unsigned keylen)
|
||||
{
|
||||
ucl_hash_node_t *found;
|
||||
|
||||
if (hashlin == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
HASH_FIND (hh, hashlin->buckets, key, keylen, found);
|
||||
|
||||
if (found) {
|
||||
return found->data;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
ucl_hash_delete (ucl_hash_t* hashlin, ucl_object_t *obj)
|
||||
{
|
||||
ucl_hash_node_t *found;
|
||||
|
||||
HASH_FIND (hh, hashlin->buckets, obj->key, obj->keylen, found);
|
||||
|
||||
if (found) {
|
||||
HASH_DELETE (hh, hashlin->buckets, found);
|
||||
}
|
||||
}
|
91
contrib/libucl/src/ucl_hash.h
Normal file
91
contrib/libucl/src/ucl_hash.h
Normal file
@ -0,0 +1,91 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __UCL_HASH_H
|
||||
#define __UCL_HASH_H
|
||||
|
||||
#include "ucl.h"
|
||||
#include "uthash.h"
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
typedef struct ucl_hash_node_s
|
||||
{
|
||||
ucl_object_t *data;
|
||||
UT_hash_handle hh;
|
||||
} ucl_hash_node_t;
|
||||
|
||||
typedef int ucl_hash_cmp_func (const void* void_a, const void* void_b);
|
||||
typedef void ucl_hash_free_func (void *ptr);
|
||||
typedef void* ucl_hash_iter_t;
|
||||
|
||||
|
||||
/**
|
||||
* Linear chained hashtable.
|
||||
*/
|
||||
typedef struct ucl_hash_struct
|
||||
{
|
||||
ucl_hash_node_t *buckets; /**< array of hash buckets. One list for each hash modulus. */
|
||||
} ucl_hash_t;
|
||||
|
||||
|
||||
/**
|
||||
* Initializes the hashtable.
|
||||
*/
|
||||
ucl_hash_t* ucl_hash_create (void);
|
||||
|
||||
/**
|
||||
* Deinitializes the hashtable.
|
||||
*/
|
||||
void ucl_hash_destroy (ucl_hash_t* hashlin, ucl_hash_free_func *func);
|
||||
|
||||
/**
|
||||
* Inserts an element in the the hashtable.
|
||||
*/
|
||||
void ucl_hash_insert (ucl_hash_t* hashlin, ucl_object_t *obj, const char *key, unsigned keylen);
|
||||
|
||||
/**
|
||||
* Delete an element from the the hashtable.
|
||||
*/
|
||||
void ucl_hash_delete (ucl_hash_t* hashlin, ucl_object_t *obj);
|
||||
|
||||
/**
|
||||
* Searches an element in the hashtable.
|
||||
*/
|
||||
ucl_object_t* ucl_hash_search (ucl_hash_t* hashlin, const char *key, unsigned keylen);
|
||||
|
||||
|
||||
/**
|
||||
* Iterate over hash table
|
||||
* @param hashlin hash
|
||||
* @param iter iterator (must be NULL on first iteration)
|
||||
* @return the next object
|
||||
*/
|
||||
void* ucl_hash_iterate (ucl_hash_t *hashlin, ucl_hash_iter_t *iter);
|
||||
|
||||
/**
|
||||
* Check whether an iterator has next element
|
||||
*/
|
||||
bool ucl_hash_iter_has_next (ucl_hash_iter_t iter);
|
||||
|
||||
#endif
|
292
contrib/libucl/src/ucl_internal.h
Normal file
292
contrib/libucl/src/ucl_internal.h
Normal file
@ -0,0 +1,292 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef UCL_INTERNAL_H_
|
||||
#define UCL_INTERNAL_H_
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#include <limits.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "utlist.h"
|
||||
#include "utstring.h"
|
||||
#include "uthash.h"
|
||||
#include "ucl.h"
|
||||
#include "ucl_hash.h"
|
||||
#include "xxhash.h"
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
#include <openssl/evp.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @file rcl_internal.h
|
||||
* Internal structures and functions of UCL library
|
||||
*/
|
||||
|
||||
#define UCL_MAX_RECURSION 16
|
||||
#define UCL_TRASH_KEY 0
|
||||
#define UCL_TRASH_VALUE 1
|
||||
|
||||
enum ucl_parser_state {
|
||||
UCL_STATE_INIT = 0,
|
||||
UCL_STATE_OBJECT,
|
||||
UCL_STATE_ARRAY,
|
||||
UCL_STATE_KEY,
|
||||
UCL_STATE_VALUE,
|
||||
UCL_STATE_AFTER_VALUE,
|
||||
UCL_STATE_ARRAY_VALUE,
|
||||
UCL_STATE_SCOMMENT,
|
||||
UCL_STATE_MCOMMENT,
|
||||
UCL_STATE_MACRO_NAME,
|
||||
UCL_STATE_MACRO,
|
||||
UCL_STATE_ERROR
|
||||
};
|
||||
|
||||
enum ucl_character_type {
|
||||
UCL_CHARACTER_DENIED = 0,
|
||||
UCL_CHARACTER_KEY = 1,
|
||||
UCL_CHARACTER_KEY_START = 1 << 1,
|
||||
UCL_CHARACTER_WHITESPACE = 1 << 2,
|
||||
UCL_CHARACTER_WHITESPACE_UNSAFE = 1 << 3,
|
||||
UCL_CHARACTER_VALUE_END = 1 << 4,
|
||||
UCL_CHARACTER_VALUE_STR = 1 << 5,
|
||||
UCL_CHARACTER_VALUE_DIGIT = 1 << 6,
|
||||
UCL_CHARACTER_VALUE_DIGIT_START = 1 << 7,
|
||||
UCL_CHARACTER_ESCAPE = 1 << 8,
|
||||
UCL_CHARACTER_KEY_SEP = 1 << 9,
|
||||
UCL_CHARACTER_JSON_UNSAFE = 1 << 10,
|
||||
UCL_CHARACTER_UCL_UNSAFE = 1 << 11
|
||||
};
|
||||
|
||||
struct ucl_macro {
|
||||
char *name;
|
||||
ucl_macro_handler handler;
|
||||
void* ud;
|
||||
UT_hash_handle hh;
|
||||
};
|
||||
|
||||
struct ucl_stack {
|
||||
ucl_object_t *obj;
|
||||
struct ucl_stack *next;
|
||||
int level;
|
||||
};
|
||||
|
||||
struct ucl_chunk {
|
||||
const unsigned char *begin;
|
||||
const unsigned char *end;
|
||||
const unsigned char *pos;
|
||||
size_t remain;
|
||||
unsigned int line;
|
||||
unsigned int column;
|
||||
struct ucl_chunk *next;
|
||||
};
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
struct ucl_pubkey {
|
||||
EVP_PKEY *key;
|
||||
struct ucl_pubkey *next;
|
||||
};
|
||||
#else
|
||||
struct ucl_pubkey {
|
||||
struct ucl_pubkey *next;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct ucl_variable {
|
||||
char *var;
|
||||
char *value;
|
||||
size_t var_len;
|
||||
size_t value_len;
|
||||
struct ucl_variable *next;
|
||||
};
|
||||
|
||||
struct ucl_parser {
|
||||
enum ucl_parser_state state;
|
||||
enum ucl_parser_state prev_state;
|
||||
unsigned int recursion;
|
||||
int flags;
|
||||
ucl_object_t *top_obj;
|
||||
ucl_object_t *cur_obj;
|
||||
struct ucl_macro *macroes;
|
||||
struct ucl_stack *stack;
|
||||
struct ucl_chunk *chunks;
|
||||
struct ucl_pubkey *keys;
|
||||
struct ucl_variable *variables;
|
||||
UT_string *err;
|
||||
};
|
||||
|
||||
/**
|
||||
* Unescape json string inplace
|
||||
* @param str
|
||||
*/
|
||||
size_t ucl_unescape_json_string (char *str, size_t len);
|
||||
|
||||
/**
|
||||
* Handle include macro
|
||||
* @param data include data
|
||||
* @param len length of data
|
||||
* @param ud user data
|
||||
* @param err error ptr
|
||||
* @return
|
||||
*/
|
||||
bool ucl_include_handler (const unsigned char *data, size_t len, void* ud);
|
||||
|
||||
bool ucl_try_include_handler (const unsigned char *data, size_t len, void* ud);
|
||||
|
||||
/**
|
||||
* Handle includes macro
|
||||
* @param data include data
|
||||
* @param len length of data
|
||||
* @param ud user data
|
||||
* @param err error ptr
|
||||
* @return
|
||||
*/
|
||||
bool ucl_includes_handler (const unsigned char *data, size_t len, void* ud);
|
||||
|
||||
size_t ucl_strlcpy (char *dst, const char *src, size_t siz);
|
||||
size_t ucl_strlcpy_unsafe (char *dst, const char *src, size_t siz);
|
||||
size_t ucl_strlcpy_tolower (char *dst, const char *src, size_t siz);
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
static inline void
|
||||
ucl_create_err (UT_string **err, const char *fmt, ...)
|
||||
__attribute__ (( format( printf, 2, 3) ));
|
||||
#endif
|
||||
|
||||
static inline void
|
||||
ucl_create_err (UT_string **err, const char *fmt, ...)
|
||||
|
||||
{
|
||||
if (*err == NULL) {
|
||||
utstring_new (*err);
|
||||
va_list ap;
|
||||
va_start (ap, fmt);
|
||||
utstring_printf_va (*err, fmt, ap);
|
||||
va_end (ap);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a given string contains a boolean value
|
||||
* @param obj object to set
|
||||
* @param start start of a string
|
||||
* @param len length of a string
|
||||
* @return true if a string is a boolean value
|
||||
*/
|
||||
static inline bool
|
||||
ucl_maybe_parse_boolean (ucl_object_t *obj, const unsigned char *start, size_t len)
|
||||
{
|
||||
const unsigned char *p = start;
|
||||
bool ret = false, val = false;
|
||||
|
||||
if (len == 5) {
|
||||
if ((p[0] == 'f' || p[0] == 'F') && strncasecmp (p, "false", 5) == 0) {
|
||||
ret = true;
|
||||
val = false;
|
||||
}
|
||||
}
|
||||
else if (len == 4) {
|
||||
if ((p[0] == 't' || p[0] == 'T') && strncasecmp (p, "true", 4) == 0) {
|
||||
ret = true;
|
||||
val = true;
|
||||
}
|
||||
}
|
||||
else if (len == 3) {
|
||||
if ((p[0] == 'y' || p[0] == 'Y') && strncasecmp (p, "yes", 3) == 0) {
|
||||
ret = true;
|
||||
val = true;
|
||||
}
|
||||
else if ((p[0] == 'o' || p[0] == 'O') && strncasecmp (p, "off", 3) == 0) {
|
||||
ret = true;
|
||||
val = false;
|
||||
}
|
||||
}
|
||||
else if (len == 2) {
|
||||
if ((p[0] == 'n' || p[0] == 'N') && strncasecmp (p, "no", 2) == 0) {
|
||||
ret = true;
|
||||
val = false;
|
||||
}
|
||||
else if ((p[0] == 'o' || p[0] == 'O') && strncasecmp (p, "on", 2) == 0) {
|
||||
ret = true;
|
||||
val = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
obj->type = UCL_BOOLEAN;
|
||||
obj->value.iv = val;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check numeric string
|
||||
* @param obj object to set if a string is numeric
|
||||
* @param start start of string
|
||||
* @param end end of string
|
||||
* @param pos position where parsing has stopped
|
||||
* @param allow_double allow parsing of floating point values
|
||||
* @return 0 if string is numeric and error code (EINVAL or ERANGE) in case of conversion error
|
||||
*/
|
||||
int ucl_maybe_parse_number (ucl_object_t *obj,
|
||||
const char *start, const char *end, const char **pos, bool allow_double, bool number_bytes);
|
||||
|
||||
|
||||
static inline ucl_object_t *
|
||||
ucl_hash_search_obj (ucl_hash_t* hashlin, ucl_object_t *obj)
|
||||
{
|
||||
return (ucl_object_t *)ucl_hash_search (hashlin, obj->key, obj->keylen);
|
||||
}
|
||||
|
||||
static inline ucl_hash_t *
|
||||
ucl_hash_insert_object (ucl_hash_t *hashlin, ucl_object_t *obj) UCL_WARN_UNUSED_RESULT;
|
||||
|
||||
static inline ucl_hash_t *
|
||||
ucl_hash_insert_object (ucl_hash_t *hashlin, ucl_object_t *obj)
|
||||
{
|
||||
if (hashlin == NULL) {
|
||||
hashlin = ucl_hash_create ();
|
||||
}
|
||||
ucl_hash_insert (hashlin, obj, obj->key, obj->keylen);
|
||||
|
||||
return hashlin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Emit a single object to string
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
unsigned char * ucl_object_emit_single_json (ucl_object_t *obj);
|
||||
|
||||
#endif /* UCL_INTERNAL_H_ */
|
1872
contrib/libucl/src/ucl_parser.c
Normal file
1872
contrib/libucl/src/ucl_parser.c
Normal file
File diff suppressed because it is too large
Load Diff
1157
contrib/libucl/src/ucl_util.c
Normal file
1157
contrib/libucl/src/ucl_util.c
Normal file
File diff suppressed because it is too large
Load Diff
475
contrib/libucl/src/xxhash.c
Normal file
475
contrib/libucl/src/xxhash.c
Normal file
@ -0,0 +1,475 @@
|
||||
/*
|
||||
xxHash - Fast Hash algorithm
|
||||
Copyright (C) 2012-2013, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- xxHash source repository : http://code.google.com/p/xxhash/
|
||||
*/
|
||||
|
||||
|
||||
//**************************************
|
||||
// Tuning parameters
|
||||
//**************************************
|
||||
// Unaligned memory access is automatically enabled for "common" CPU, such as x86.
|
||||
// For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected.
|
||||
// If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance.
|
||||
// You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32).
|
||||
#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
|
||||
# define XXH_USE_UNALIGNED_ACCESS 1
|
||||
#endif
|
||||
|
||||
// XXH_ACCEPT_NULL_INPUT_POINTER :
|
||||
// If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer.
|
||||
// When this option is enabled, xxHash output for null input pointers will be the same as a null-length input.
|
||||
// This option has a very small performance cost (only measurable on small inputs).
|
||||
// By default, this option is disabled. To enable it, uncomment below define :
|
||||
//#define XXH_ACCEPT_NULL_INPUT_POINTER 1
|
||||
|
||||
// XXH_FORCE_NATIVE_FORMAT :
|
||||
// By default, xxHash library provides endian-independant Hash values, based on little-endian convention.
|
||||
// Results are therefore identical for little-endian and big-endian CPU.
|
||||
// This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format.
|
||||
// Should endian-independance be of no importance for your application, you may set the #define below to 1.
|
||||
// It will improve speed for Big-endian CPU.
|
||||
// This option has no impact on Little_Endian CPU.
|
||||
#define XXH_FORCE_NATIVE_FORMAT 0
|
||||
|
||||
|
||||
//**************************************
|
||||
// Compiler Specific Options
|
||||
//**************************************
|
||||
// Disable some Visual warning messages
|
||||
#ifdef _MSC_VER // Visual Studio
|
||||
# pragma warning(disable : 4127) // disable: C4127: conditional expression is constant
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER // Visual Studio
|
||||
# define forceinline static __forceinline
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
# define forceinline static inline __attribute__((always_inline))
|
||||
# else
|
||||
# define forceinline static inline
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
//**************************************
|
||||
// Includes & Memory related functions
|
||||
//**************************************
|
||||
#include "xxhash.h"
|
||||
// Modify the local functions below should you wish to use some other memory related routines
|
||||
// for malloc(), free()
|
||||
#include <stdlib.h>
|
||||
forceinline void* XXH_malloc(size_t s) { return malloc(s); }
|
||||
forceinline void XXH_free (void* p) { free(p); }
|
||||
// for memcpy()
|
||||
#include <string.h>
|
||||
forceinline void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); }
|
||||
|
||||
|
||||
//**************************************
|
||||
// Basic Types
|
||||
//**************************************
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L // C99
|
||||
# include <stdint.h>
|
||||
typedef uint8_t BYTE;
|
||||
typedef uint16_t U16;
|
||||
typedef uint32_t U32;
|
||||
typedef int32_t S32;
|
||||
typedef uint64_t U64;
|
||||
#else
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short U16;
|
||||
typedef unsigned int U32;
|
||||
typedef signed int S32;
|
||||
typedef unsigned long long U64;
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(XXH_USE_UNALIGNED_ACCESS)
|
||||
# define _PACKED __attribute__ ((packed))
|
||||
#else
|
||||
# define _PACKED
|
||||
#endif
|
||||
|
||||
#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__)
|
||||
# ifdef __IBMC__
|
||||
# pragma pack(1)
|
||||
# else
|
||||
# pragma pack(push, 1)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef struct _U32_S { U32 v; } _PACKED U32_S;
|
||||
|
||||
#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__)
|
||||
# pragma pack(pop)
|
||||
#endif
|
||||
|
||||
#define A32(x) (((U32_S *)(x))->v)
|
||||
|
||||
|
||||
//***************************************
|
||||
// Compiler-specific Functions and Macros
|
||||
//***************************************
|
||||
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
||||
|
||||
// Note : although _rotl exists for minGW (GCC under windows), performance seems poor
|
||||
#if defined(_MSC_VER)
|
||||
# define XXH_rotl32(x,r) _rotl(x,r)
|
||||
#else
|
||||
# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r)))
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) // Visual Studio
|
||||
# define XXH_swap32 _byteswap_ulong
|
||||
#elif GCC_VERSION >= 403
|
||||
# define XXH_swap32 __builtin_bswap32
|
||||
#else
|
||||
static inline U32 XXH_swap32 (U32 x) {
|
||||
return ((x << 24) & 0xff000000 ) |
|
||||
((x << 8) & 0x00ff0000 ) |
|
||||
((x >> 8) & 0x0000ff00 ) |
|
||||
((x >> 24) & 0x000000ff );}
|
||||
#endif
|
||||
|
||||
|
||||
//**************************************
|
||||
// Constants
|
||||
//**************************************
|
||||
#define PRIME32_1 2654435761U
|
||||
#define PRIME32_2 2246822519U
|
||||
#define PRIME32_3 3266489917U
|
||||
#define PRIME32_4 668265263U
|
||||
#define PRIME32_5 374761393U
|
||||
|
||||
|
||||
//**************************************
|
||||
// Architecture Macros
|
||||
//**************************************
|
||||
typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
|
||||
#ifndef XXH_CPU_LITTLE_ENDIAN // It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch
|
||||
static const int one = 1;
|
||||
# define XXH_CPU_LITTLE_ENDIAN (*(char*)(&one))
|
||||
#endif
|
||||
|
||||
|
||||
//**************************************
|
||||
// Macros
|
||||
//**************************************
|
||||
#define XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(!!(c)) }; } // use only *after* variable declarations
|
||||
|
||||
|
||||
//****************************
|
||||
// Memory reads
|
||||
//****************************
|
||||
typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
|
||||
|
||||
forceinline U32 XXH_readLE32_align(const U32* ptr, XXH_endianess endian, XXH_alignment align)
|
||||
{
|
||||
if (align==XXH_unaligned)
|
||||
return endian==XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr));
|
||||
else
|
||||
return endian==XXH_littleEndian ? *ptr : XXH_swap32(*ptr);
|
||||
}
|
||||
|
||||
forceinline U32 XXH_readLE32(const U32* ptr, XXH_endianess endian) { return XXH_readLE32_align(ptr, endian, XXH_unaligned); }
|
||||
|
||||
|
||||
//****************************
|
||||
// Simple Hash Functions
|
||||
//****************************
|
||||
forceinline U32 XXH32_endian_align(const void* input, int len, U32 seed, XXH_endianess endian, XXH_alignment align)
|
||||
{
|
||||
const BYTE* p = (const BYTE*)input;
|
||||
const BYTE* const bEnd = p + len;
|
||||
U32 h32;
|
||||
|
||||
#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
|
||||
if (p==NULL) { len=0; p=(const BYTE*)(size_t)16; }
|
||||
#endif
|
||||
|
||||
if (len>=16)
|
||||
{
|
||||
const BYTE* const limit = bEnd - 16;
|
||||
U32 v1 = seed + PRIME32_1 + PRIME32_2;
|
||||
U32 v2 = seed + PRIME32_2;
|
||||
U32 v3 = seed + 0;
|
||||
U32 v4 = seed - PRIME32_1;
|
||||
|
||||
do
|
||||
{
|
||||
v1 += XXH_readLE32_align((const U32*)p, endian, align) * PRIME32_2; v1 = XXH_rotl32(v1, 13); v1 *= PRIME32_1; p+=4;
|
||||
v2 += XXH_readLE32_align((const U32*)p, endian, align) * PRIME32_2; v2 = XXH_rotl32(v2, 13); v2 *= PRIME32_1; p+=4;
|
||||
v3 += XXH_readLE32_align((const U32*)p, endian, align) * PRIME32_2; v3 = XXH_rotl32(v3, 13); v3 *= PRIME32_1; p+=4;
|
||||
v4 += XXH_readLE32_align((const U32*)p, endian, align) * PRIME32_2; v4 = XXH_rotl32(v4, 13); v4 *= PRIME32_1; p+=4;
|
||||
} while (p<=limit);
|
||||
|
||||
h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18);
|
||||
}
|
||||
else
|
||||
{
|
||||
h32 = seed + PRIME32_5;
|
||||
}
|
||||
|
||||
h32 += (U32) len;
|
||||
|
||||
while (p<=bEnd-4)
|
||||
{
|
||||
h32 += XXH_readLE32_align((const U32*)p, endian, align) * PRIME32_3;
|
||||
h32 = XXH_rotl32(h32, 17) * PRIME32_4 ;
|
||||
p+=4;
|
||||
}
|
||||
|
||||
while (p<bEnd)
|
||||
{
|
||||
h32 += (*p) * PRIME32_5;
|
||||
h32 = XXH_rotl32(h32, 11) * PRIME32_1 ;
|
||||
p++;
|
||||
}
|
||||
|
||||
h32 ^= h32 >> 15;
|
||||
h32 *= PRIME32_2;
|
||||
h32 ^= h32 >> 13;
|
||||
h32 *= PRIME32_3;
|
||||
h32 ^= h32 >> 16;
|
||||
|
||||
return h32;
|
||||
}
|
||||
|
||||
|
||||
U32 XXH32(const void* input, int len, U32 seed)
|
||||
{
|
||||
#if 0
|
||||
// Simple version, good for code maintenance, but unfortunately slow for small inputs
|
||||
void* state = XXH32_init(seed);
|
||||
XXH32_update(state, input, len);
|
||||
return XXH32_digest(state);
|
||||
#else
|
||||
XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
|
||||
|
||||
# if !defined(XXH_USE_UNALIGNED_ACCESS)
|
||||
if (!(((size_t)input) & 3)) // Input is aligned, let's leverage the speed advantage
|
||||
{
|
||||
if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
|
||||
return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
|
||||
else
|
||||
return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
|
||||
}
|
||||
# endif
|
||||
|
||||
if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
|
||||
return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
|
||||
else
|
||||
return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//****************************
|
||||
// Advanced Hash Functions
|
||||
//****************************
|
||||
|
||||
struct XXH_state32_t
|
||||
{
|
||||
U64 total_len;
|
||||
U32 seed;
|
||||
U32 v1;
|
||||
U32 v2;
|
||||
U32 v3;
|
||||
U32 v4;
|
||||
int memsize;
|
||||
char memory[16];
|
||||
};
|
||||
|
||||
|
||||
int XXH32_sizeofState(void)
|
||||
{
|
||||
XXH_STATIC_ASSERT(XXH32_SIZEOFSTATE >= sizeof(struct XXH_state32_t)); // A compilation error here means XXH32_SIZEOFSTATE is not large enough
|
||||
return sizeof(struct XXH_state32_t);
|
||||
}
|
||||
|
||||
|
||||
XXH_errorcode XXH32_resetState(void* state_in, U32 seed)
|
||||
{
|
||||
struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
|
||||
state->seed = seed;
|
||||
state->v1 = seed + PRIME32_1 + PRIME32_2;
|
||||
state->v2 = seed + PRIME32_2;
|
||||
state->v3 = seed + 0;
|
||||
state->v4 = seed - PRIME32_1;
|
||||
state->total_len = 0;
|
||||
state->memsize = 0;
|
||||
return XXH_OK;
|
||||
}
|
||||
|
||||
|
||||
void* XXH32_init (U32 seed)
|
||||
{
|
||||
void* state = XXH_malloc (sizeof(struct XXH_state32_t));
|
||||
XXH32_resetState(state, seed);
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
forceinline XXH_errorcode XXH32_update_endian (void* state_in, const void* input, int len, XXH_endianess endian)
|
||||
{
|
||||
struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
|
||||
const BYTE* p = (const BYTE*)input;
|
||||
const BYTE* const bEnd = p + len;
|
||||
|
||||
#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
|
||||
if (input==NULL) return XXH_ERROR;
|
||||
#endif
|
||||
|
||||
state->total_len += len;
|
||||
|
||||
if (state->memsize + len < 16) // fill in tmp buffer
|
||||
{
|
||||
XXH_memcpy(state->memory + state->memsize, input, len);
|
||||
state->memsize += len;
|
||||
return XXH_OK;
|
||||
}
|
||||
|
||||
if (state->memsize) // some data left from previous update
|
||||
{
|
||||
XXH_memcpy(state->memory + state->memsize, input, 16-state->memsize);
|
||||
{
|
||||
const U32* p32 = (const U32*)state->memory;
|
||||
state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; state->v1 = XXH_rotl32(state->v1, 13); state->v1 *= PRIME32_1; p32++;
|
||||
state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; state->v2 = XXH_rotl32(state->v2, 13); state->v2 *= PRIME32_1; p32++;
|
||||
state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; state->v3 = XXH_rotl32(state->v3, 13); state->v3 *= PRIME32_1; p32++;
|
||||
state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; state->v4 = XXH_rotl32(state->v4, 13); state->v4 *= PRIME32_1; p32++;
|
||||
}
|
||||
p += 16-state->memsize;
|
||||
state->memsize = 0;
|
||||
}
|
||||
|
||||
if (p <= bEnd-16)
|
||||
{
|
||||
const BYTE* const limit = bEnd - 16;
|
||||
U32 v1 = state->v1;
|
||||
U32 v2 = state->v2;
|
||||
U32 v3 = state->v3;
|
||||
U32 v4 = state->v4;
|
||||
|
||||
do
|
||||
{
|
||||
v1 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v1 = XXH_rotl32(v1, 13); v1 *= PRIME32_1; p+=4;
|
||||
v2 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v2 = XXH_rotl32(v2, 13); v2 *= PRIME32_1; p+=4;
|
||||
v3 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v3 = XXH_rotl32(v3, 13); v3 *= PRIME32_1; p+=4;
|
||||
v4 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v4 = XXH_rotl32(v4, 13); v4 *= PRIME32_1; p+=4;
|
||||
} while (p<=limit);
|
||||
|
||||
state->v1 = v1;
|
||||
state->v2 = v2;
|
||||
state->v3 = v3;
|
||||
state->v4 = v4;
|
||||
}
|
||||
|
||||
if (p < bEnd)
|
||||
{
|
||||
XXH_memcpy(state->memory, p, bEnd-p);
|
||||
state->memsize = (int)(bEnd-p);
|
||||
}
|
||||
|
||||
return XXH_OK;
|
||||
}
|
||||
|
||||
XXH_errorcode XXH32_update (void* state_in, const void* input, int len)
|
||||
{
|
||||
XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
|
||||
|
||||
if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
|
||||
return XXH32_update_endian(state_in, input, len, XXH_littleEndian);
|
||||
else
|
||||
return XXH32_update_endian(state_in, input, len, XXH_bigEndian);
|
||||
}
|
||||
|
||||
|
||||
|
||||
forceinline U32 XXH32_intermediateDigest_endian (void* state_in, XXH_endianess endian)
|
||||
{
|
||||
struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
|
||||
const BYTE * p = (const BYTE*)state->memory;
|
||||
BYTE* bEnd = (BYTE*)state->memory + state->memsize;
|
||||
U32 h32;
|
||||
|
||||
if (state->total_len >= 16)
|
||||
{
|
||||
h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18);
|
||||
}
|
||||
else
|
||||
{
|
||||
h32 = state->seed + PRIME32_5;
|
||||
}
|
||||
|
||||
h32 += (U32) state->total_len;
|
||||
|
||||
while (p<=bEnd-4)
|
||||
{
|
||||
h32 += XXH_readLE32((const U32*)p, endian) * PRIME32_3;
|
||||
h32 = XXH_rotl32(h32, 17) * PRIME32_4;
|
||||
p+=4;
|
||||
}
|
||||
|
||||
while (p<bEnd)
|
||||
{
|
||||
h32 += (*p) * PRIME32_5;
|
||||
h32 = XXH_rotl32(h32, 11) * PRIME32_1;
|
||||
p++;
|
||||
}
|
||||
|
||||
h32 ^= h32 >> 15;
|
||||
h32 *= PRIME32_2;
|
||||
h32 ^= h32 >> 13;
|
||||
h32 *= PRIME32_3;
|
||||
h32 ^= h32 >> 16;
|
||||
|
||||
return h32;
|
||||
}
|
||||
|
||||
|
||||
U32 XXH32_intermediateDigest (void* state_in)
|
||||
{
|
||||
XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
|
||||
|
||||
if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
|
||||
return XXH32_intermediateDigest_endian(state_in, XXH_littleEndian);
|
||||
else
|
||||
return XXH32_intermediateDigest_endian(state_in, XXH_bigEndian);
|
||||
}
|
||||
|
||||
|
||||
U32 XXH32_digest (void* state_in)
|
||||
{
|
||||
U32 h32 = XXH32_intermediateDigest(state_in);
|
||||
|
||||
XXH_free(state_in);
|
||||
|
||||
return h32;
|
||||
}
|
164
contrib/libucl/src/xxhash.h
Normal file
164
contrib/libucl/src/xxhash.h
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
xxHash - Fast Hash algorithm
|
||||
Header File
|
||||
Copyright (C) 2012-2013, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- xxHash source repository : http://code.google.com/p/xxhash/
|
||||
*/
|
||||
|
||||
/* Notice extracted from xxHash homepage :
|
||||
|
||||
xxHash is an extremely fast Hash algorithm, running at RAM speed limits.
|
||||
It also successfully passes all tests from the SMHasher suite.
|
||||
|
||||
Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz)
|
||||
|
||||
Name Speed Q.Score Author
|
||||
xxHash 5.4 GB/s 10
|
||||
CrapWow 3.2 GB/s 2 Andrew
|
||||
MumurHash 3a 2.7 GB/s 10 Austin Appleby
|
||||
SpookyHash 2.0 GB/s 10 Bob Jenkins
|
||||
SBox 1.4 GB/s 9 Bret Mulvey
|
||||
Lookup3 1.2 GB/s 9 Bob Jenkins
|
||||
SuperFastHash 1.2 GB/s 1 Paul Hsieh
|
||||
CityHash64 1.05 GB/s 10 Pike & Alakuijala
|
||||
FNV 0.55 GB/s 5 Fowler, Noll, Vo
|
||||
CRC32 0.43 GB/s 9
|
||||
MD5-32 0.33 GB/s 10 Ronald L. Rivest
|
||||
SHA1-32 0.28 GB/s 10
|
||||
|
||||
Q.Score is a measure of quality of the hash function.
|
||||
It depends on successfully passing SMHasher test set.
|
||||
10 is a perfect score.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
//****************************
|
||||
// Type
|
||||
//****************************
|
||||
typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
|
||||
|
||||
|
||||
|
||||
//****************************
|
||||
// Simple Hash Functions
|
||||
//****************************
|
||||
|
||||
unsigned int XXH32 (const void* input, int len, unsigned int seed);
|
||||
|
||||
/*
|
||||
XXH32() :
|
||||
Calculate the 32-bits hash of sequence of length "len" stored at memory address "input".
|
||||
The memory between input & input+len must be valid (allocated and read-accessible).
|
||||
"seed" can be used to alter the result predictably.
|
||||
This function successfully passes all SMHasher tests.
|
||||
Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
|
||||
Note that "len" is type "int", which means it is limited to 2^31-1.
|
||||
If your data is larger, use the advanced functions below.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
//****************************
|
||||
// Advanced Hash Functions
|
||||
//****************************
|
||||
|
||||
void* XXH32_init (unsigned int seed);
|
||||
XXH_errorcode XXH32_update (void* state, const void* input, int len);
|
||||
unsigned int XXH32_digest (void* state);
|
||||
|
||||
/*
|
||||
These functions calculate the xxhash of an input provided in several small packets,
|
||||
as opposed to an input provided as a single block.
|
||||
|
||||
It must be started with :
|
||||
void* XXH32_init()
|
||||
The function returns a pointer which holds the state of calculation.
|
||||
|
||||
This pointer must be provided as "void* state" parameter for XXH32_update().
|
||||
XXH32_update() can be called as many times as necessary.
|
||||
The user must provide a valid (allocated) input.
|
||||
The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
|
||||
Note that "len" is type "int", which means it is limited to 2^31-1.
|
||||
If your data is larger, it is recommended to chunk your data into blocks
|
||||
of size for example 2^30 (1GB) to avoid any "int" overflow issue.
|
||||
|
||||
Finally, you can end the calculation anytime, by using XXH32_digest().
|
||||
This function returns the final 32-bits hash.
|
||||
You must provide the same "void* state" parameter created by XXH32_init().
|
||||
Memory will be freed by XXH32_digest().
|
||||
*/
|
||||
|
||||
|
||||
int XXH32_sizeofState(void);
|
||||
XXH_errorcode XXH32_resetState(void* state, unsigned int seed);
|
||||
|
||||
#define XXH32_SIZEOFSTATE 48
|
||||
typedef struct { long long ll[(XXH32_SIZEOFSTATE+(sizeof(long long)-1))/sizeof(long long)]; } XXH32_stateSpace_t;
|
||||
/*
|
||||
These functions allow user application to make its own allocation for state.
|
||||
|
||||
XXH32_sizeofState() is used to know how much space must be allocated for the xxHash 32-bits state.
|
||||
Note that the state must be aligned to access 'long long' fields. Memory must be allocated and referenced by a pointer.
|
||||
This pointer must then be provided as 'state' into XXH32_resetState(), which initializes the state.
|
||||
|
||||
For static allocation purposes (such as allocation on stack, or freestanding systems without malloc()),
|
||||
use the structure XXH32_stateSpace_t, which will ensure that memory space is large enough and correctly aligned to access 'long long' fields.
|
||||
*/
|
||||
|
||||
|
||||
unsigned int XXH32_intermediateDigest (void* state);
|
||||
/*
|
||||
This function does the same as XXH32_digest(), generating a 32-bit hash,
|
||||
but preserve memory context.
|
||||
This way, it becomes possible to generate intermediate hashes, and then continue feeding data with XXH32_update().
|
||||
To free memory context, use XXH32_digest(), or free().
|
||||
*/
|
||||
|
||||
|
||||
|
||||
//****************************
|
||||
// Deprecated function names
|
||||
//****************************
|
||||
// The following translations are provided to ease code transition
|
||||
// You are encouraged to no longer this function names
|
||||
#define XXH32_feed XXH32_update
|
||||
#define XXH32_result XXH32_digest
|
||||
#define XXH32_getIntermediateResult XXH32_intermediateDigest
|
||||
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
14
contrib/libucl/tests/1.in
Normal file
14
contrib/libucl/tests/1.in
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"key1": value;
|
||||
"key1": value2;
|
||||
"key1": "value;"
|
||||
"key1": 1.0,
|
||||
"key1": -0xdeadbeef
|
||||
"key1": 0xdeadbeef.1
|
||||
"key1": 0xreadbeef
|
||||
"key1": -1e-10,
|
||||
"key1": 1
|
||||
"key1": true
|
||||
"key1": no
|
||||
"key1": yes
|
||||
}
|
13
contrib/libucl/tests/1.res
Normal file
13
contrib/libucl/tests/1.res
Normal file
@ -0,0 +1,13 @@
|
||||
key1 = "value";
|
||||
key1 = "value2";
|
||||
key1 = "value;";
|
||||
key1 = 1.0;
|
||||
key1 = -3735928559;
|
||||
key1 = "0xdeadbeef.1";
|
||||
key1 = "0xreadbeef";
|
||||
key1 = -1e-10;
|
||||
key1 = 1;
|
||||
key1 = true;
|
||||
key1 = false;
|
||||
key1 = true;
|
||||
|
24
contrib/libucl/tests/2.in
Normal file
24
contrib/libucl/tests/2.in
Normal file
@ -0,0 +1,24 @@
|
||||
section1 { param1 = value; param2 = value,
|
||||
section3 {param = value; param2 = value, param3 = ["value1", value2, 100500]}}
|
||||
section2 { param1 = {key = value}, param1 = ["key"]}
|
||||
|
||||
# Numbers
|
||||
key1 = 1s
|
||||
key2 = 1min
|
||||
key3 = 1kb
|
||||
key4 = 5M
|
||||
key5 = 10mS
|
||||
key6 = 10y
|
||||
|
||||
# Strings
|
||||
key1 = "some string";
|
||||
key2 = /some/path;
|
||||
key3 = 111some,
|
||||
key4: s1,
|
||||
"key5": "\n\r123"
|
||||
|
||||
# Variables
|
||||
keyvar = "$ABItest";
|
||||
keyvar = "${ABI}$ABI${ABI}${$ABI}";
|
||||
keyvar = "${some}$no${}$$test$$$$$$$";
|
||||
keyvar = "$ABI$$ABI$$$ABI$$$$";
|
37
contrib/libucl/tests/2.res
Normal file
37
contrib/libucl/tests/2.res
Normal file
@ -0,0 +1,37 @@
|
||||
section1 {
|
||||
param1 = "value";
|
||||
param2 = "value";
|
||||
section3 {
|
||||
param = "value";
|
||||
param2 = "value";
|
||||
param3 [
|
||||
"value1",
|
||||
"value2",
|
||||
100500,
|
||||
]
|
||||
}
|
||||
}
|
||||
section2 {
|
||||
param1 {
|
||||
key = "value";
|
||||
}
|
||||
param1 [
|
||||
"key",
|
||||
]
|
||||
}
|
||||
key1 = 1.0;
|
||||
key1 = "some string";
|
||||
key2 = 60.0;
|
||||
key2 = "/some/path";
|
||||
key3 = 1024;
|
||||
key3 = "111some";
|
||||
key4 = 5000000;
|
||||
key4 = "s1";
|
||||
key5 = 0.010000;
|
||||
key5 = "\n\r123";
|
||||
key6 = 2207520000.000000;
|
||||
keyvar = "unknowntest";
|
||||
keyvar = "unknownunknownunknown${unknown}";
|
||||
keyvar = "${some}$no${}$$test$$$$$$$";
|
||||
keyvar = "unknown$ABI$unknown$$";
|
||||
|
31
contrib/libucl/tests/3.in
Normal file
31
contrib/libucl/tests/3.in
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Pkg conf
|
||||
*/
|
||||
|
||||
#packagesite http//pkg.freebsd.org/freebsd-9-amd64/latest
|
||||
#packagesite http//pkg.freebsd.org/freebsd-9-amd64/latest
|
||||
packagesite: http://pkg-test.freebsd.org/pkg-test/${ABI}/latest
|
||||
squaretest: some[]value
|
||||
ALIAS : {
|
||||
all-depends: query %dn-%dv,
|
||||
annotations: info -A,
|
||||
build-depends: info -qd,
|
||||
download: fetch,
|
||||
iinfo: info -i -g -x,
|
||||
isearch: search -i -g -x,
|
||||
leaf: query -e '%a == 0' '%n-%v',
|
||||
leaf: query -e '%a == 0' '%n-%v',
|
||||
list: info -ql,
|
||||
origin: info -qo,
|
||||
provided-depends: info -qb,
|
||||
raw: info -R,
|
||||
required-depends: info -qr,
|
||||
shared-depends: info -qB,
|
||||
show: info -f -k,
|
||||
size: info -sq,
|
||||
}
|
||||
|
||||
repo_dirs : [
|
||||
/home/bapt,
|
||||
/usr/local/etc
|
||||
]
|
25
contrib/libucl/tests/3.res
Normal file
25
contrib/libucl/tests/3.res
Normal file
@ -0,0 +1,25 @@
|
||||
packagesite = "http://pkg-test.freebsd.org/pkg-test/unknown/latest";
|
||||
squaretest = "some[]value";
|
||||
alias {
|
||||
all-depends = "query %dn-%dv";
|
||||
annotations = "info -A";
|
||||
build-depends = "info -qd";
|
||||
download = "fetch";
|
||||
iinfo = "info -i -g -x";
|
||||
isearch = "search -i -g -x";
|
||||
leaf = "query -e '%a == 0' '%n-%v'";
|
||||
leaf = "query -e '%a == 0' '%n-%v'";
|
||||
list = "info -ql";
|
||||
origin = "info -qo";
|
||||
provided-depends = "info -qb";
|
||||
raw = "info -R";
|
||||
required-depends = "info -qr";
|
||||
shared-depends = "info -qB";
|
||||
show = "info -f -k";
|
||||
size = "info -sq";
|
||||
}
|
||||
repo_dirs [
|
||||
"/home/bapt",
|
||||
"/usr/local/etc",
|
||||
]
|
||||
|
47
contrib/libucl/tests/4.in
Normal file
47
contrib/libucl/tests/4.in
Normal file
@ -0,0 +1,47 @@
|
||||
name : "pkgconf"
|
||||
version : "0.9.3"
|
||||
origin : "devel/pkgconf"
|
||||
comment : "Utility to help to configure compiler and linker flags"
|
||||
arch : "freebsd:9:x86:64"
|
||||
maintainer : "bapt@FreeBSD.org"
|
||||
prefix : "/usr/local"
|
||||
licenselogic : "single"
|
||||
licenses : [
|
||||
"BSD",
|
||||
]
|
||||
flatsize : 60523
|
||||
desc : "pkgconf is a program which helps to configure compiler and linker flags for\ndevelopment frameworks. It is similar to pkg-config, but was written from\nscratch in Summer of 2011 to replace pkg-config, which now needs itself to build\nitself.\n\nWWW: https://github.com/pkgconf/pkgconf"
|
||||
categories : [
|
||||
"devel",
|
||||
]
|
||||
files : {
|
||||
/usr/local/bin/pkg-config : "-",
|
||||
/usr/local/bin/pkgconf : "4a0fc53e5ad64e8085da2e61652d61c50b192a086421d865703f1de9f724da38",
|
||||
/usr/local/share/aclocal/pkg.m4 : "cffab33d659adfe36497ec57665eec36fa6fb7b007e578e6ac2434cc28be8820",
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/BSD : "85e7a53b5e2d3e350e2d084fed2f94b7f63005f8e1168740e1e84aa9fa5d48ce",
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/LICENSE : "d9cce0db43502eb1bd8fbef7e960cfaa43b5647186f7f7379923b336209fd77b",
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/catalog.mk : "e7b131acce7c3d3c61f2214607b11b34526e03b05afe89a608f50586a898e2ef",
|
||||
}
|
||||
directories : {
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/ : false,
|
||||
/usr/local/share/licenses/ : true,
|
||||
}
|
||||
scripts : {
|
||||
post-install : "cd /usr/local\nn",
|
||||
pre-deinstall : "cd /usr/local\nn",
|
||||
post-deinstall : "cd /usr/local\nn",
|
||||
}
|
||||
multiline-key : <<EOD
|
||||
test
|
||||
test
|
||||
test\n
|
||||
/* comment like */
|
||||
# Some invalid endings
|
||||
EOD
|
||||
EOD
|
||||
EOF
|
||||
# Valid ending + empty string
|
||||
|
||||
EOD
|
||||
|
||||
normal-key : <<EODnot
|
36
contrib/libucl/tests/4.res
Normal file
36
contrib/libucl/tests/4.res
Normal file
@ -0,0 +1,36 @@
|
||||
name = "pkgconf";
|
||||
version = "0.9.3";
|
||||
origin = "devel/pkgconf";
|
||||
comment = "Utility to help to configure compiler and linker flags";
|
||||
arch = "freebsd:9:x86:64";
|
||||
maintainer = "bapt@FreeBSD.org";
|
||||
prefix = "/usr/local";
|
||||
licenselogic = "single";
|
||||
licenses [
|
||||
"BSD",
|
||||
]
|
||||
flatsize = 60523;
|
||||
desc = "pkgconf is a program which helps to configure compiler and linker flags for\ndevelopment frameworks. It is similar to pkg-config, but was written from\nscratch in Summer of 2011 to replace pkg-config, which now needs itself to build\nitself.\n\nWWW: https://github.com/pkgconf/pkgconf";
|
||||
categories [
|
||||
"devel",
|
||||
]
|
||||
files {
|
||||
/usr/local/bin/pkg-config = "-";
|
||||
/usr/local/bin/pkgconf = "4a0fc53e5ad64e8085da2e61652d61c50b192a086421d865703f1de9f724da38";
|
||||
/usr/local/share/aclocal/pkg.m4 = "cffab33d659adfe36497ec57665eec36fa6fb7b007e578e6ac2434cc28be8820";
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/bsd = "85e7a53b5e2d3e350e2d084fed2f94b7f63005f8e1168740e1e84aa9fa5d48ce";
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/license = "d9cce0db43502eb1bd8fbef7e960cfaa43b5647186f7f7379923b336209fd77b";
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/catalog.mk = "e7b131acce7c3d3c61f2214607b11b34526e03b05afe89a608f50586a898e2ef";
|
||||
}
|
||||
directories {
|
||||
/usr/local/share/licenses/pkgconf-0.9.3/ = false;
|
||||
/usr/local/share/licenses/ = true;
|
||||
}
|
||||
scripts {
|
||||
post-install = "cd /usr/local\nn";
|
||||
pre-deinstall = "cd /usr/local\nn";
|
||||
post-deinstall = "cd /usr/local\nn";
|
||||
}
|
||||
multiline-key = "test\ntest\ntest\\n\n/* comment like */\n# Some invalid endings\n EOD\nEOD \nEOF\n# Valid ending + empty string\n";
|
||||
normal-key = "<<EODnot";
|
||||
|
1
contrib/libucl/tests/5.in
Normal file
1
contrib/libucl/tests/5.in
Normal file
@ -0,0 +1 @@
|
||||
# test
|
1
contrib/libucl/tests/5.res
Normal file
1
contrib/libucl/tests/5.res
Normal file
@ -0,0 +1 @@
|
||||
|
4
contrib/libucl/tests/6.in
Normal file
4
contrib/libucl/tests/6.in
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
# test
|
||||
#
|
||||
key = value
|
2
contrib/libucl/tests/6.res
Normal file
2
contrib/libucl/tests/6.res
Normal file
@ -0,0 +1,2 @@
|
||||
key = "value";
|
||||
|
0
contrib/libucl/tests/7.in
Normal file
0
contrib/libucl/tests/7.in
Normal file
1
contrib/libucl/tests/7.res
Normal file
1
contrib/libucl/tests/7.res
Normal file
@ -0,0 +1 @@
|
||||
|
21
contrib/libucl/tests/8.in
Normal file
21
contrib/libucl/tests/8.in
Normal file
@ -0,0 +1,21 @@
|
||||
section blah { # test
|
||||
param = "value"
|
||||
}
|
||||
section test {
|
||||
key = test;
|
||||
subsection testsub {
|
||||
flag on;
|
||||
subsubsection testsubsub1 testsubsub2 {
|
||||
key = [1, 2, 3];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
section test {
|
||||
/* Empty */
|
||||
}
|
||||
|
||||
|
||||
section foo { # test
|
||||
param = 123.2;
|
||||
}
|
36
contrib/libucl/tests/8.res
Normal file
36
contrib/libucl/tests/8.res
Normal file
@ -0,0 +1,36 @@
|
||||
section {
|
||||
blah {
|
||||
param = "value";
|
||||
}
|
||||
}
|
||||
section {
|
||||
test {
|
||||
key = "test";
|
||||
subsection {
|
||||
testsub {
|
||||
flag = true;
|
||||
subsubsection {
|
||||
testsubsub1 {
|
||||
testsubsub2 {
|
||||
key [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
section {
|
||||
test {
|
||||
}
|
||||
}
|
||||
section {
|
||||
foo {
|
||||
param = 123.200000;
|
||||
}
|
||||
}
|
||||
|
1
contrib/libucl/tests/9-comment.inc
Normal file
1
contrib/libucl/tests/9-comment.inc
Normal file
@ -0,0 +1 @@
|
||||
#key = value
|
0
contrib/libucl/tests/9-empty.inc
Normal file
0
contrib/libucl/tests/9-empty.inc
Normal file
13
contrib/libucl/tests/9.in
Normal file
13
contrib/libucl/tests/9.in
Normal file
@ -0,0 +1,13 @@
|
||||
.include "$CURDIR/9.inc"
|
||||
.include "$CURDIR/9-empty.inc"
|
||||
.include "$CURDIR/9-comment.inc"
|
||||
#.include "$CURDIR/9.inc"
|
||||
.include "$CURDIR/9.inc"
|
||||
|
||||
key = value;
|
||||
.include "$CURDIR/9.inc"
|
||||
|
||||
.try_include "/non/existent"
|
||||
#.try_include "$CURDIR/9.incorrect.inc"
|
||||
# 9.incorrect.inc contains '{}}'
|
||||
#key = value;
|
1
contrib/libucl/tests/9.inc
Normal file
1
contrib/libucl/tests/9.inc
Normal file
@ -0,0 +1 @@
|
||||
key1 = value
|
5
contrib/libucl/tests/9.res
Normal file
5
contrib/libucl/tests/9.res
Normal file
@ -0,0 +1,5 @@
|
||||
key1 = "value";
|
||||
key1 = "value";
|
||||
key1 = "value";
|
||||
key = "value";
|
||||
|
20
contrib/libucl/tests/generate.res
Normal file
20
contrib/libucl/tests/generate.res
Normal file
@ -0,0 +1,20 @@
|
||||
key1 = "test string";
|
||||
key2 = "test \\nstring";
|
||||
key3 = " test string \n";
|
||||
key4 [
|
||||
9.999000,
|
||||
10,
|
||||
10.100000,
|
||||
]
|
||||
key4 = true;
|
||||
key5 = "";
|
||||
key6 = "";
|
||||
key7 = " \\n";
|
||||
key8 = 1048576;
|
||||
key9 = 3.140000;
|
||||
key10 = true;
|
||||
key11 = false;
|
||||
key12 = "gslin@gslin.org";
|
||||
key13 = "#test";
|
||||
"k=3" = true;
|
||||
|
58
contrib/libucl/tests/run_tests.sh
Executable file
58
contrib/libucl/tests/run_tests.sh
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 1 ] ; then
|
||||
echo 'Specify binary to run as the first argument'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
for _tin in ${TEST_DIR}/*.in ; do
|
||||
_t=`echo $_tin | sed -e 's/.in$//'`
|
||||
$1 $_t.in $_t.out
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Test: $_t failed, output:"
|
||||
cat $_t.out
|
||||
rm $_t.out
|
||||
exit 1
|
||||
fi
|
||||
if [ -f $_t.res ] ; then
|
||||
diff -s $_t.out $_t.res -u 2>/dev/null
|
||||
if [ $? -ne 0 ] ; then
|
||||
rm $_t.out
|
||||
echo "Test: $_t output missmatch"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
rm $_t.out
|
||||
done
|
||||
|
||||
if [ $# -gt 2 ] ; then
|
||||
$3 ${TEST_DIR}/generate.out
|
||||
diff -s ${TEST_DIR}/generate.out ${TEST_DIR}/generate.res -u 2>/dev/null
|
||||
if [ $? -ne 0 ] ; then
|
||||
rm ${TEST_DIR}/generate.out
|
||||
echo "Test: generate.res output missmatch"
|
||||
exit 1
|
||||
fi
|
||||
rm ${TEST_DIR}/generate.out
|
||||
fi
|
||||
|
||||
sh -c "xz -c < /dev/null > /dev/null"
|
||||
if [ $? -eq 0 -a $# -gt 1 ] ; then
|
||||
echo 'Running speed tests'
|
||||
for _tin in ${TEST_DIR}/*.xz ; do
|
||||
echo "Unpacking $_tin..."
|
||||
xz -cd < $_tin > ${TEST_DIR}/test_file
|
||||
# Preread file to cheat benchmark!
|
||||
cat ${TEST_DIR}/test_file > /dev/null
|
||||
echo "Starting benchmarking for $_tin..."
|
||||
$2 ${TEST_DIR}/test_file
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Test: $_tin failed"
|
||||
rm ${TEST_DIR}/test_file
|
||||
exit 1
|
||||
fi
|
||||
rm ${TEST_DIR}/test_file
|
||||
done
|
||||
fi
|
||||
|
151
contrib/libucl/tests/test_basic.c
Normal file
151
contrib/libucl/tests/test_basic.c
Normal file
@ -0,0 +1,151 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include "ucl.h"
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
char inbuf[8192], *test_in = NULL;
|
||||
struct ucl_parser *parser = NULL, *parser2 = NULL;
|
||||
ucl_object_t *obj;
|
||||
FILE *in, *out;
|
||||
unsigned char *emitted = NULL;
|
||||
const char *fname_in = NULL, *fname_out = NULL;
|
||||
int ret = 0, inlen, opt, json = 0;
|
||||
|
||||
while ((opt = getopt(argc, argv, "j")) != -1) {
|
||||
switch (opt) {
|
||||
case 'j':
|
||||
json = 1;
|
||||
break;
|
||||
default: /* '?' */
|
||||
fprintf (stderr, "Usage: %s [-j] [in] [out]\n",
|
||||
argv[0]);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
switch (argc) {
|
||||
case 1:
|
||||
fname_in = argv[0];
|
||||
break;
|
||||
case 2:
|
||||
fname_in = argv[0];
|
||||
fname_out = argv[1];
|
||||
break;
|
||||
}
|
||||
|
||||
if (fname_in != NULL) {
|
||||
in = fopen (fname_in, "r");
|
||||
if (in == NULL) {
|
||||
exit (-errno);
|
||||
}
|
||||
}
|
||||
else {
|
||||
in = stdin;
|
||||
}
|
||||
parser = ucl_parser_new (UCL_PARSER_KEY_LOWERCASE);
|
||||
ucl_parser_register_variable (parser, "ABI", "unknown");
|
||||
|
||||
if (fname_in != NULL) {
|
||||
ucl_parser_set_filevars (parser, fname_in, true);
|
||||
}
|
||||
|
||||
while (!feof (in)) {
|
||||
memset (inbuf, 0, sizeof (inbuf));
|
||||
(void)fread (inbuf, sizeof (inbuf) - 1, 1, in);
|
||||
inlen = strlen (inbuf);
|
||||
test_in = malloc (inlen);
|
||||
memcpy (test_in, inbuf, inlen);
|
||||
ucl_parser_add_chunk (parser, test_in, inlen);
|
||||
}
|
||||
fclose (in);
|
||||
|
||||
if (fname_out != NULL) {
|
||||
out = fopen (fname_out, "w");
|
||||
if (out == NULL) {
|
||||
exit (-errno);
|
||||
}
|
||||
}
|
||||
else {
|
||||
out = stdout;
|
||||
}
|
||||
if (ucl_parser_get_error(parser) != NULL) {
|
||||
fprintf (out, "Error occurred: %s\n", ucl_parser_get_error(parser));
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
obj = ucl_parser_get_object (parser);
|
||||
if (json) {
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_JSON);
|
||||
}
|
||||
else {
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_CONFIG);
|
||||
}
|
||||
ucl_parser_free (parser);
|
||||
ucl_object_unref (obj);
|
||||
parser2 = ucl_parser_new (UCL_PARSER_KEY_LOWERCASE);
|
||||
ucl_parser_add_chunk (parser2, emitted, strlen (emitted));
|
||||
|
||||
if (ucl_parser_get_error(parser2) != NULL) {
|
||||
fprintf (out, "Error occurred: %s\n", ucl_parser_get_error(parser2));
|
||||
fprintf (out, "%s\n", emitted);
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
if (emitted != NULL) {
|
||||
free (emitted);
|
||||
}
|
||||
obj = ucl_parser_get_object (parser2);
|
||||
if (json) {
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_JSON);
|
||||
}
|
||||
else {
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_CONFIG);
|
||||
}
|
||||
|
||||
fprintf (out, "%s\n", emitted);
|
||||
ucl_object_unref (obj);
|
||||
|
||||
end:
|
||||
if (emitted != NULL) {
|
||||
free (emitted);
|
||||
}
|
||||
if (parser2 != NULL) {
|
||||
ucl_parser_free (parser2);
|
||||
}
|
||||
if (test_in != NULL) {
|
||||
free (test_in);
|
||||
}
|
||||
|
||||
fclose (out);
|
||||
|
||||
return ret;
|
||||
}
|
126
contrib/libucl/tests/test_generate.c
Normal file
126
contrib/libucl/tests/test_generate.c
Normal file
@ -0,0 +1,126 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
#include "ucl.h"
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
ucl_object_t *obj, *cur, *ar;
|
||||
FILE *out;
|
||||
unsigned char *emitted;
|
||||
const char *fname_out = NULL;
|
||||
int ret = 0;
|
||||
|
||||
switch (argc) {
|
||||
case 2:
|
||||
fname_out = argv[1];
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (fname_out != NULL) {
|
||||
out = fopen (fname_out, "w");
|
||||
if (out == NULL) {
|
||||
exit (-errno);
|
||||
}
|
||||
}
|
||||
else {
|
||||
out = stdout;
|
||||
}
|
||||
|
||||
obj = ucl_object_typed_new (UCL_OBJECT);
|
||||
/* Create some strings */
|
||||
cur = ucl_object_fromstring_common (" test string ", 0, UCL_STRING_TRIM);
|
||||
obj = ucl_object_insert_key (obj, cur, "key1", 0, false);
|
||||
cur = ucl_object_fromstring_common (" test \nstring\n ", 0, UCL_STRING_TRIM | UCL_STRING_ESCAPE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key2", 0, false);
|
||||
cur = ucl_object_fromstring_common (" test string \n", 0, 0);
|
||||
obj = ucl_object_insert_key (obj, cur, "key3", 0, false);
|
||||
/* Array of numbers */
|
||||
cur = ucl_object_fromint (10);
|
||||
ar = ucl_array_append (NULL, cur);
|
||||
cur = ucl_object_fromdouble (10.1);
|
||||
ar = ucl_array_append (ar, cur);
|
||||
cur = ucl_object_fromdouble (9.999);
|
||||
ar = ucl_array_prepend (ar, cur);
|
||||
|
||||
/* Removing from an array */
|
||||
cur = ucl_object_fromdouble (1.0);
|
||||
ar = ucl_array_append (ar, cur);
|
||||
cur = ucl_array_delete (ar, cur);
|
||||
assert (ucl_object_todouble (cur) == 1.0);
|
||||
ucl_object_unref (cur);
|
||||
cur = ucl_object_fromdouble (2.0);
|
||||
ar = ucl_array_append (ar, cur);
|
||||
cur = ucl_array_pop_last (ar);
|
||||
assert (ucl_object_todouble (cur) == 2.0);
|
||||
ucl_object_unref (cur);
|
||||
cur = ucl_object_fromdouble (3.0);
|
||||
ar = ucl_array_prepend (ar, cur);
|
||||
cur = ucl_array_pop_first (ar);
|
||||
assert (ucl_object_todouble (cur) == 3.0);
|
||||
ucl_object_unref (cur);
|
||||
|
||||
obj = ucl_object_insert_key (obj, ar, "key4", 0, false);
|
||||
cur = ucl_object_frombool (true);
|
||||
obj = ucl_object_insert_key (obj, cur, "key4", 0, false);
|
||||
/* Empty strings */
|
||||
cur = ucl_object_fromstring_common (" ", 0, UCL_STRING_TRIM);
|
||||
obj = ucl_object_insert_key (obj, cur, "key5", 0, false);
|
||||
cur = ucl_object_fromstring_common ("", 0, UCL_STRING_ESCAPE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key6", 0, false);
|
||||
cur = ucl_object_fromstring_common (" \n", 0, UCL_STRING_ESCAPE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key7", 0, false);
|
||||
/* Numbers and booleans */
|
||||
cur = ucl_object_fromstring_common ("1mb", 0, UCL_STRING_ESCAPE | UCL_STRING_PARSE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key8", 0, false);
|
||||
cur = ucl_object_fromstring_common ("3.14", 0, UCL_STRING_PARSE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key9", 0, false);
|
||||
cur = ucl_object_fromstring_common ("true", 0, UCL_STRING_PARSE);
|
||||
obj = ucl_object_insert_key (obj, cur, "key10", 0, false);
|
||||
cur = ucl_object_fromstring_common (" off ", 0, UCL_STRING_PARSE | UCL_STRING_TRIM);
|
||||
obj = ucl_object_insert_key (obj, cur, "key11", 0, false);
|
||||
cur = ucl_object_fromstring_common ("gslin@gslin.org", 0, UCL_STRING_PARSE_INT);
|
||||
obj = ucl_object_insert_key (obj, cur, "key12", 0, false);
|
||||
cur = ucl_object_fromstring_common ("#test", 0, UCL_STRING_PARSE_INT);
|
||||
obj = ucl_object_insert_key (obj, cur, "key13", 0, false);
|
||||
cur = ucl_object_frombool (true);
|
||||
obj = ucl_object_insert_key (obj, cur, "k=3", 0, false);
|
||||
|
||||
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_CONFIG);
|
||||
|
||||
fprintf (out, "%s\n", emitted);
|
||||
ucl_object_unref (obj);
|
||||
|
||||
if (emitted != NULL) {
|
||||
free (emitted);
|
||||
}
|
||||
fclose (out);
|
||||
|
||||
return ret;
|
||||
}
|
149
contrib/libucl/tests/test_speed.c
Normal file
149
contrib/libucl/tests/test_speed.c
Normal file
@ -0,0 +1,149 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <mach/mach_time.h>
|
||||
#endif
|
||||
|
||||
#include "ucl.h"
|
||||
|
||||
static double
|
||||
get_ticks (void)
|
||||
{
|
||||
double res;
|
||||
|
||||
#ifdef __APPLE__
|
||||
res = mach_absolute_time () / 1000000000.;
|
||||
#else
|
||||
struct timespec ts;
|
||||
clock_gettime (CLOCK_MONOTONIC, &ts);
|
||||
|
||||
res = (double)ts.tv_sec + ts.tv_nsec / 1000000000.;
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
void *map;
|
||||
struct ucl_parser *parser;
|
||||
ucl_object_t *obj;
|
||||
int fin;
|
||||
unsigned char *emitted;
|
||||
struct stat st;
|
||||
const char *fname_in = NULL;
|
||||
int ret = 0;
|
||||
double start, end, seconds;
|
||||
|
||||
switch (argc) {
|
||||
case 2:
|
||||
fname_in = argv[1];
|
||||
break;
|
||||
}
|
||||
|
||||
fin = open (fname_in, O_RDONLY);
|
||||
if (fin == -1) {
|
||||
perror ("open failed");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
parser = ucl_parser_new (UCL_PARSER_ZEROCOPY);
|
||||
|
||||
(void)fstat (fin, &st);
|
||||
map = mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fin, 0);
|
||||
if (map == MAP_FAILED) {
|
||||
perror ("mmap failed");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
close (fin);
|
||||
|
||||
start = get_ticks ();
|
||||
ucl_parser_add_chunk (parser, map, st.st_size);
|
||||
|
||||
obj = ucl_parser_get_object (parser);
|
||||
end = get_ticks ();
|
||||
|
||||
seconds = end - start;
|
||||
printf ("ucl: parsed input in %.4f seconds\n", seconds);
|
||||
if (ucl_parser_get_error(parser)) {
|
||||
printf ("Error occurred: %s\n", ucl_parser_get_error(parser));
|
||||
ret = 1;
|
||||
goto err;
|
||||
}
|
||||
|
||||
start = get_ticks ();
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_CONFIG);
|
||||
end = get_ticks ();
|
||||
|
||||
seconds = end - start;
|
||||
printf ("ucl: emitted config in %.4f seconds\n", seconds);
|
||||
|
||||
free (emitted);
|
||||
|
||||
start = get_ticks ();
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_JSON);
|
||||
end = get_ticks ();
|
||||
|
||||
seconds = end - start;
|
||||
printf ("ucl: emitted json in %.4f seconds\n", seconds);
|
||||
|
||||
free (emitted);
|
||||
|
||||
start = get_ticks ();
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_JSON_COMPACT);
|
||||
end = get_ticks ();
|
||||
|
||||
seconds = end - start;
|
||||
printf ("ucl: emitted compact json in %.4f seconds\n", seconds);
|
||||
|
||||
free (emitted);
|
||||
|
||||
start = get_ticks ();
|
||||
emitted = ucl_object_emit (obj, UCL_EMIT_YAML);
|
||||
end = get_ticks ();
|
||||
|
||||
seconds = end - start;
|
||||
printf ("ucl: emitted yaml in %.4f seconds\n", seconds);
|
||||
|
||||
free (emitted);
|
||||
|
||||
ucl_parser_free (parser);
|
||||
ucl_object_unref (obj);
|
||||
|
||||
err:
|
||||
munmap (map, st.st_size);
|
||||
|
||||
return ret;
|
||||
}
|
720
contrib/libucl/uthash/uthash.h
Normal file
720
contrib/libucl/uthash/uthash.h
Normal file
@ -0,0 +1,720 @@
|
||||
/*
|
||||
Copyright (c) 2003-2013, Troy D. Hanson http://troydhanson.github.com/uthash/
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef UTHASH_H
|
||||
#define UTHASH_H
|
||||
|
||||
#include <string.h> /* memcmp,strlen */
|
||||
#include <stddef.h> /* ptrdiff_t */
|
||||
#include <stdlib.h> /* exit() */
|
||||
#include "xxhash.h"
|
||||
|
||||
/* These macros use decltype or the earlier __typeof GNU extension.
|
||||
As decltype is only available in newer compilers (VS2010 or gcc 4.3+
|
||||
when compiling c++ source) this code uses whatever method is needed
|
||||
or, for VS2008 where neither is available, uses casting workarounds. */
|
||||
#ifdef _MSC_VER /* MS compiler */
|
||||
#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */
|
||||
#define DECLTYPE(x) (decltype(x))
|
||||
#else /* VS2008 or older (or VS2010 in C mode) */
|
||||
#define NO_DECLTYPE
|
||||
#define DECLTYPE(x)
|
||||
#endif
|
||||
#else /* GNU, Sun and other compilers */
|
||||
#define DECLTYPE(x) (__typeof(x))
|
||||
#endif
|
||||
|
||||
#ifdef NO_DECLTYPE
|
||||
#define DECLTYPE_ASSIGN(dst,src) \
|
||||
do { \
|
||||
char **_da_dst = (char**)(&(dst)); \
|
||||
*_da_dst = (char*)(src); \
|
||||
} while(0)
|
||||
#else
|
||||
#define DECLTYPE_ASSIGN(dst,src) \
|
||||
do { \
|
||||
(dst) = DECLTYPE(dst)(src); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
/* a number of the hash function use uint32_t which isn't defined on win32 */
|
||||
#ifdef _MSC_VER
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned char uint8_t;
|
||||
#else
|
||||
#include <inttypes.h> /* uint32_t */
|
||||
#endif
|
||||
|
||||
#define UTHASH_VERSION 1.9.8
|
||||
|
||||
#ifndef uthash_fatal
|
||||
#define uthash_fatal(msg) exit(-1) /* fatal error (out of memory,etc) */
|
||||
#endif
|
||||
#ifndef uthash_malloc
|
||||
#define uthash_malloc(sz) malloc(sz) /* malloc fcn */
|
||||
#endif
|
||||
#ifndef uthash_free
|
||||
#define uthash_free(ptr,sz) free(ptr) /* free fcn */
|
||||
#endif
|
||||
|
||||
#ifndef uthash_noexpand_fyi
|
||||
#define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */
|
||||
#endif
|
||||
#ifndef uthash_expand_fyi
|
||||
#define uthash_expand_fyi(tbl) /* can be defined to log expands */
|
||||
#endif
|
||||
|
||||
/* initial number of buckets */
|
||||
#define HASH_INITIAL_NUM_BUCKETS 32 /* initial number of buckets */
|
||||
#define HASH_INITIAL_NUM_BUCKETS_LOG2 5 /* lg2 of initial number of buckets */
|
||||
#define HASH_BKT_CAPACITY_THRESH 10 /* expand when bucket count reaches */
|
||||
|
||||
/* calculate the element whose hash handle address is hhe */
|
||||
#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
|
||||
|
||||
#define HASH_FIND(hh,head,keyptr,keylen,out) \
|
||||
do { \
|
||||
unsigned _hf_bkt,_hf_hashv; \
|
||||
out=NULL; \
|
||||
if (head) { \
|
||||
HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \
|
||||
if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \
|
||||
HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \
|
||||
keyptr,keylen,out); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#ifdef HASH_BLOOM
|
||||
#define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM)
|
||||
#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0)
|
||||
#define HASH_BLOOM_MAKE(tbl) \
|
||||
do { \
|
||||
(tbl)->bloom_nbits = HASH_BLOOM; \
|
||||
(tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \
|
||||
if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \
|
||||
memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \
|
||||
(tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \
|
||||
} while (0)
|
||||
|
||||
#define HASH_BLOOM_FREE(tbl) \
|
||||
do { \
|
||||
uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \
|
||||
} while (0)
|
||||
|
||||
#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
|
||||
#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
|
||||
|
||||
#define HASH_BLOOM_ADD(tbl,hashv) \
|
||||
HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
|
||||
|
||||
#define HASH_BLOOM_TEST(tbl,hashv) \
|
||||
HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
|
||||
|
||||
#else
|
||||
#define HASH_BLOOM_MAKE(tbl)
|
||||
#define HASH_BLOOM_FREE(tbl)
|
||||
#define HASH_BLOOM_ADD(tbl,hashv)
|
||||
#define HASH_BLOOM_TEST(tbl,hashv) (1)
|
||||
#define HASH_BLOOM_BYTELEN 0
|
||||
#endif
|
||||
|
||||
#define HASH_MAKE_TABLE(hh,head) \
|
||||
do { \
|
||||
(head)->hh.tbl = (UT_hash_table*)uthash_malloc( \
|
||||
sizeof(UT_hash_table)); \
|
||||
if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \
|
||||
memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \
|
||||
(head)->hh.tbl->tail = &((head)->hh); \
|
||||
(head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \
|
||||
(head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \
|
||||
(head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \
|
||||
(head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \
|
||||
HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \
|
||||
if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \
|
||||
memset((head)->hh.tbl->buckets, 0, \
|
||||
HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket)); \
|
||||
HASH_BLOOM_MAKE((head)->hh.tbl); \
|
||||
(head)->hh.tbl->signature = HASH_SIGNATURE; \
|
||||
} while(0)
|
||||
|
||||
#define HASH_ADD(hh,head,fieldname,keylen_in,add) \
|
||||
HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
|
||||
|
||||
#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \
|
||||
do { \
|
||||
replaced=NULL; \
|
||||
HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced); \
|
||||
if (replaced!=NULL) { \
|
||||
HASH_DELETE(hh,head,replaced); \
|
||||
}; \
|
||||
HASH_ADD(hh,head,fieldname,keylen_in,add); \
|
||||
} while(0)
|
||||
|
||||
#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
|
||||
do { \
|
||||
unsigned _ha_bkt; \
|
||||
(add)->hh.next = NULL; \
|
||||
(add)->hh.key = (const char*)keyptr; \
|
||||
(add)->hh.keylen = (unsigned)keylen_in; \
|
||||
if (!(head)) { \
|
||||
head = (add); \
|
||||
(head)->hh.prev = NULL; \
|
||||
HASH_MAKE_TABLE(hh,head); \
|
||||
} else { \
|
||||
(head)->hh.tbl->tail->next = (add); \
|
||||
(add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
|
||||
(head)->hh.tbl->tail = &((add)->hh); \
|
||||
} \
|
||||
(head)->hh.tbl->num_items++; \
|
||||
(add)->hh.tbl = (head)->hh.tbl; \
|
||||
HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \
|
||||
(add)->hh.hashv, _ha_bkt); \
|
||||
HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \
|
||||
HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \
|
||||
HASH_EMIT_KEY(hh,head,keyptr,keylen_in); \
|
||||
HASH_FSCK(hh,head); \
|
||||
} while(0)
|
||||
|
||||
#define HASH_TO_BKT( hashv, num_bkts, bkt ) \
|
||||
do { \
|
||||
bkt = ((hashv) & ((num_bkts) - 1)); \
|
||||
} while(0)
|
||||
|
||||
/* delete "delptr" from the hash table.
|
||||
* "the usual" patch-up process for the app-order doubly-linked-list.
|
||||
* The use of _hd_hh_del below deserves special explanation.
|
||||
* These used to be expressed using (delptr) but that led to a bug
|
||||
* if someone used the same symbol for the head and deletee, like
|
||||
* HASH_DELETE(hh,users,users);
|
||||
* We want that to work, but by changing the head (users) below
|
||||
* we were forfeiting our ability to further refer to the deletee (users)
|
||||
* in the patch-up process. Solution: use scratch space to
|
||||
* copy the deletee pointer, then the latter references are via that
|
||||
* scratch pointer rather than through the repointed (users) symbol.
|
||||
*/
|
||||
#define HASH_DELETE(hh,head,delptr) \
|
||||
do { \
|
||||
unsigned _hd_bkt; \
|
||||
struct UT_hash_handle *_hd_hh_del; \
|
||||
if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) ) { \
|
||||
uthash_free((head)->hh.tbl->buckets, \
|
||||
(head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
|
||||
HASH_BLOOM_FREE((head)->hh.tbl); \
|
||||
uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
|
||||
head = NULL; \
|
||||
} else { \
|
||||
_hd_hh_del = &((delptr)->hh); \
|
||||
if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
|
||||
(head)->hh.tbl->tail = \
|
||||
(UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
|
||||
(head)->hh.tbl->hho); \
|
||||
} \
|
||||
if ((delptr)->hh.prev) { \
|
||||
((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) + \
|
||||
(head)->hh.tbl->hho))->next = (delptr)->hh.next; \
|
||||
} else { \
|
||||
DECLTYPE_ASSIGN(head,(delptr)->hh.next); \
|
||||
} \
|
||||
if (_hd_hh_del->next) { \
|
||||
((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next + \
|
||||
(head)->hh.tbl->hho))->prev = \
|
||||
_hd_hh_del->prev; \
|
||||
} \
|
||||
HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \
|
||||
HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \
|
||||
(head)->hh.tbl->num_items--; \
|
||||
} \
|
||||
HASH_FSCK(hh,head); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */
|
||||
#define HASH_FIND_STR(head,findstr,out) \
|
||||
HASH_FIND(hh,head,findstr,strlen(findstr),out)
|
||||
#define HASH_ADD_STR(head,strfield,add) \
|
||||
HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
|
||||
#define HASH_REPLACE_STR(head,strfield,add,replaced) \
|
||||
HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
|
||||
#define HASH_FIND_INT(head,findint,out) \
|
||||
HASH_FIND(hh,head,findint,sizeof(int),out)
|
||||
#define HASH_ADD_INT(head,intfield,add) \
|
||||
HASH_ADD(hh,head,intfield,sizeof(int),add)
|
||||
#define HASH_REPLACE_INT(head,intfield,add,replaced) \
|
||||
HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
|
||||
#define HASH_FIND_PTR(head,findptr,out) \
|
||||
HASH_FIND(hh,head,findptr,sizeof(void *),out)
|
||||
#define HASH_ADD_PTR(head,ptrfield,add) \
|
||||
HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
|
||||
#define HASH_REPLACE_PTR(head,ptrfield,add) \
|
||||
HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
|
||||
#define HASH_DEL(head,delptr) \
|
||||
HASH_DELETE(hh,head,delptr)
|
||||
|
||||
/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
|
||||
* This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined.
|
||||
*/
|
||||
#ifdef HASH_DEBUG
|
||||
#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0)
|
||||
#define HASH_FSCK(hh,head) \
|
||||
do { \
|
||||
unsigned _bkt_i; \
|
||||
unsigned _count, _bkt_count; \
|
||||
char *_prev; \
|
||||
struct UT_hash_handle *_thh; \
|
||||
if (head) { \
|
||||
_count = 0; \
|
||||
for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \
|
||||
_bkt_count = 0; \
|
||||
_thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \
|
||||
_prev = NULL; \
|
||||
while (_thh) { \
|
||||
if (_prev != (char*)(_thh->hh_prev)) { \
|
||||
HASH_OOPS("invalid hh_prev %p, actual %p\n", \
|
||||
_thh->hh_prev, _prev ); \
|
||||
} \
|
||||
_bkt_count++; \
|
||||
_prev = (char*)(_thh); \
|
||||
_thh = _thh->hh_next; \
|
||||
} \
|
||||
_count += _bkt_count; \
|
||||
if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \
|
||||
HASH_OOPS("invalid bucket count %d, actual %d\n", \
|
||||
(head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \
|
||||
} \
|
||||
} \
|
||||
if (_count != (head)->hh.tbl->num_items) { \
|
||||
HASH_OOPS("invalid hh item count %d, actual %d\n", \
|
||||
(head)->hh.tbl->num_items, _count ); \
|
||||
} \
|
||||
/* traverse hh in app order; check next/prev integrity, count */ \
|
||||
_count = 0; \
|
||||
_prev = NULL; \
|
||||
_thh = &(head)->hh; \
|
||||
while (_thh) { \
|
||||
_count++; \
|
||||
if (_prev !=(char*)(_thh->prev)) { \
|
||||
HASH_OOPS("invalid prev %p, actual %p\n", \
|
||||
_thh->prev, _prev ); \
|
||||
} \
|
||||
_prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \
|
||||
_thh = ( _thh->next ? (UT_hash_handle*)((char*)(_thh->next) + \
|
||||
(head)->hh.tbl->hho) : NULL ); \
|
||||
} \
|
||||
if (_count != (head)->hh.tbl->num_items) { \
|
||||
HASH_OOPS("invalid app item count %d, actual %d\n", \
|
||||
(head)->hh.tbl->num_items, _count ); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
#define HASH_FSCK(hh,head)
|
||||
#endif
|
||||
|
||||
/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to
|
||||
* the descriptor to which this macro is defined for tuning the hash function.
|
||||
* The app can #include <unistd.h> to get the prototype for write(2). */
|
||||
#ifdef HASH_EMIT_KEYS
|
||||
#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \
|
||||
do { \
|
||||
unsigned _klen = fieldlen; \
|
||||
write(HASH_EMIT_KEYS, &_klen, sizeof(_klen)); \
|
||||
write(HASH_EMIT_KEYS, keyptr, fieldlen); \
|
||||
} while (0)
|
||||
#else
|
||||
#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)
|
||||
#endif
|
||||
|
||||
/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
|
||||
#ifdef HASH_FUNCTION
|
||||
#define HASH_FCN HASH_FUNCTION
|
||||
#else
|
||||
#define HASH_FCN HASH_XX
|
||||
#endif
|
||||
|
||||
#define XX_HASH_PRIME 2654435761U
|
||||
|
||||
#define HASH_XX(key,keylen,num_bkts,hashv,bkt) \
|
||||
do { \
|
||||
hashv = XXH32 (key, keylen, XX_HASH_PRIME); \
|
||||
bkt = (hashv) & (num_bkts-1); \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
/* key comparison function; return 0 if keys equal */
|
||||
#define HASH_KEYCMP(a,b,len) memcmp(a,b,len)
|
||||
|
||||
/* iterate over items in a known bucket to find desired item */
|
||||
#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \
|
||||
do { \
|
||||
if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \
|
||||
else out=NULL; \
|
||||
while (out) { \
|
||||
if ((out)->hh.keylen == keylen_in) { \
|
||||
if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break; \
|
||||
} \
|
||||
if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
|
||||
else out = NULL; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/* add an item to a bucket */
|
||||
#define HASH_ADD_TO_BKT(head,addhh) \
|
||||
do { \
|
||||
head.count++; \
|
||||
(addhh)->hh_next = head.hh_head; \
|
||||
(addhh)->hh_prev = NULL; \
|
||||
if (head.hh_head) { (head).hh_head->hh_prev = (addhh); } \
|
||||
(head).hh_head=addhh; \
|
||||
if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH) \
|
||||
&& (addhh)->tbl->noexpand != 1) { \
|
||||
HASH_EXPAND_BUCKETS((addhh)->tbl); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/* remove an item from a given bucket */
|
||||
#define HASH_DEL_IN_BKT(hh,head,hh_del) \
|
||||
(head).count--; \
|
||||
if ((head).hh_head == hh_del) { \
|
||||
(head).hh_head = hh_del->hh_next; \
|
||||
} \
|
||||
if (hh_del->hh_prev) { \
|
||||
hh_del->hh_prev->hh_next = hh_del->hh_next; \
|
||||
} \
|
||||
if (hh_del->hh_next) { \
|
||||
hh_del->hh_next->hh_prev = hh_del->hh_prev; \
|
||||
}
|
||||
|
||||
/* Bucket expansion has the effect of doubling the number of buckets
|
||||
* and redistributing the items into the new buckets. Ideally the
|
||||
* items will distribute more or less evenly into the new buckets
|
||||
* (the extent to which this is true is a measure of the quality of
|
||||
* the hash function as it applies to the key domain).
|
||||
*
|
||||
* With the items distributed into more buckets, the chain length
|
||||
* (item count) in each bucket is reduced. Thus by expanding buckets
|
||||
* the hash keeps a bound on the chain length. This bounded chain
|
||||
* length is the essence of how a hash provides constant time lookup.
|
||||
*
|
||||
* The calculation of tbl->ideal_chain_maxlen below deserves some
|
||||
* explanation. First, keep in mind that we're calculating the ideal
|
||||
* maximum chain length based on the *new* (doubled) bucket count.
|
||||
* In fractions this is just n/b (n=number of items,b=new num buckets).
|
||||
* Since the ideal chain length is an integer, we want to calculate
|
||||
* ceil(n/b). We don't depend on floating point arithmetic in this
|
||||
* hash, so to calculate ceil(n/b) with integers we could write
|
||||
*
|
||||
* ceil(n/b) = (n/b) + ((n%b)?1:0)
|
||||
*
|
||||
* and in fact a previous version of this hash did just that.
|
||||
* But now we have improved things a bit by recognizing that b is
|
||||
* always a power of two. We keep its base 2 log handy (call it lb),
|
||||
* so now we can write this with a bit shift and logical AND:
|
||||
*
|
||||
* ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
|
||||
*
|
||||
*/
|
||||
#define HASH_EXPAND_BUCKETS(tbl) \
|
||||
do { \
|
||||
unsigned _he_bkt; \
|
||||
unsigned _he_bkt_i; \
|
||||
struct UT_hash_handle *_he_thh, *_he_hh_nxt; \
|
||||
UT_hash_bucket *_he_new_buckets, *_he_newbkt; \
|
||||
_he_new_buckets = (UT_hash_bucket*)uthash_malloc( \
|
||||
2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
|
||||
if (!_he_new_buckets) { uthash_fatal( "out of memory"); } \
|
||||
memset(_he_new_buckets, 0, \
|
||||
2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
|
||||
tbl->ideal_chain_maxlen = \
|
||||
(tbl->num_items >> (tbl->log2_num_buckets+1)) + \
|
||||
((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0); \
|
||||
tbl->nonideal_items = 0; \
|
||||
for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++) \
|
||||
{ \
|
||||
_he_thh = tbl->buckets[ _he_bkt_i ].hh_head; \
|
||||
while (_he_thh) { \
|
||||
_he_hh_nxt = _he_thh->hh_next; \
|
||||
HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt); \
|
||||
_he_newbkt = &(_he_new_buckets[ _he_bkt ]); \
|
||||
if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) { \
|
||||
tbl->nonideal_items++; \
|
||||
_he_newbkt->expand_mult = _he_newbkt->count / \
|
||||
tbl->ideal_chain_maxlen; \
|
||||
} \
|
||||
_he_thh->hh_prev = NULL; \
|
||||
_he_thh->hh_next = _he_newbkt->hh_head; \
|
||||
if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev = \
|
||||
_he_thh; \
|
||||
_he_newbkt->hh_head = _he_thh; \
|
||||
_he_thh = _he_hh_nxt; \
|
||||
} \
|
||||
} \
|
||||
uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
|
||||
tbl->num_buckets *= 2; \
|
||||
tbl->log2_num_buckets++; \
|
||||
tbl->buckets = _he_new_buckets; \
|
||||
tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ? \
|
||||
(tbl->ineff_expands+1) : 0; \
|
||||
if (tbl->ineff_expands > 1) { \
|
||||
tbl->noexpand=1; \
|
||||
uthash_noexpand_fyi(tbl); \
|
||||
} \
|
||||
uthash_expand_fyi(tbl); \
|
||||
} while(0)
|
||||
|
||||
|
||||
/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
|
||||
/* Note that HASH_SORT assumes the hash handle name to be hh.
|
||||
* HASH_SRT was added to allow the hash handle name to be passed in. */
|
||||
#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
|
||||
#define HASH_SRT(hh,head,cmpfcn) \
|
||||
do { \
|
||||
unsigned _hs_i; \
|
||||
unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize; \
|
||||
struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail; \
|
||||
if (head) { \
|
||||
_hs_insize = 1; \
|
||||
_hs_looping = 1; \
|
||||
_hs_list = &((head)->hh); \
|
||||
while (_hs_looping) { \
|
||||
_hs_p = _hs_list; \
|
||||
_hs_list = NULL; \
|
||||
_hs_tail = NULL; \
|
||||
_hs_nmerges = 0; \
|
||||
while (_hs_p) { \
|
||||
_hs_nmerges++; \
|
||||
_hs_q = _hs_p; \
|
||||
_hs_psize = 0; \
|
||||
for ( _hs_i = 0; _hs_i < _hs_insize; _hs_i++ ) { \
|
||||
_hs_psize++; \
|
||||
_hs_q = (UT_hash_handle*)((_hs_q->next) ? \
|
||||
((void*)((char*)(_hs_q->next) + \
|
||||
(head)->hh.tbl->hho)) : NULL); \
|
||||
if (! (_hs_q) ) break; \
|
||||
} \
|
||||
_hs_qsize = _hs_insize; \
|
||||
while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) { \
|
||||
if (_hs_psize == 0) { \
|
||||
_hs_e = _hs_q; \
|
||||
_hs_q = (UT_hash_handle*)((_hs_q->next) ? \
|
||||
((void*)((char*)(_hs_q->next) + \
|
||||
(head)->hh.tbl->hho)) : NULL); \
|
||||
_hs_qsize--; \
|
||||
} else if ( (_hs_qsize == 0) || !(_hs_q) ) { \
|
||||
_hs_e = _hs_p; \
|
||||
if (_hs_p){ \
|
||||
_hs_p = (UT_hash_handle*)((_hs_p->next) ? \
|
||||
((void*)((char*)(_hs_p->next) + \
|
||||
(head)->hh.tbl->hho)) : NULL); \
|
||||
} \
|
||||
_hs_psize--; \
|
||||
} else if (( \
|
||||
cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
|
||||
DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
|
||||
) <= 0) { \
|
||||
_hs_e = _hs_p; \
|
||||
if (_hs_p){ \
|
||||
_hs_p = (UT_hash_handle*)((_hs_p->next) ? \
|
||||
((void*)((char*)(_hs_p->next) + \
|
||||
(head)->hh.tbl->hho)) : NULL); \
|
||||
} \
|
||||
_hs_psize--; \
|
||||
} else { \
|
||||
_hs_e = _hs_q; \
|
||||
_hs_q = (UT_hash_handle*)((_hs_q->next) ? \
|
||||
((void*)((char*)(_hs_q->next) + \
|
||||
(head)->hh.tbl->hho)) : NULL); \
|
||||
_hs_qsize--; \
|
||||
} \
|
||||
if ( _hs_tail ) { \
|
||||
_hs_tail->next = ((_hs_e) ? \
|
||||
ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \
|
||||
} else { \
|
||||
_hs_list = _hs_e; \
|
||||
} \
|
||||
if (_hs_e) { \
|
||||
_hs_e->prev = ((_hs_tail) ? \
|
||||
ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \
|
||||
} \
|
||||
_hs_tail = _hs_e; \
|
||||
} \
|
||||
_hs_p = _hs_q; \
|
||||
} \
|
||||
if (_hs_tail){ \
|
||||
_hs_tail->next = NULL; \
|
||||
} \
|
||||
if ( _hs_nmerges <= 1 ) { \
|
||||
_hs_looping=0; \
|
||||
(head)->hh.tbl->tail = _hs_tail; \
|
||||
DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \
|
||||
} \
|
||||
_hs_insize *= 2; \
|
||||
} \
|
||||
HASH_FSCK(hh,head); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* This function selects items from one hash into another hash.
|
||||
* The end result is that the selected items have dual presence
|
||||
* in both hashes. There is no copy of the items made; rather
|
||||
* they are added into the new hash through a secondary hash
|
||||
* hash handle that must be present in the structure. */
|
||||
#define HASH_SELECT(hh_dst, dst, hh_src, src, cond) \
|
||||
do { \
|
||||
unsigned _src_bkt, _dst_bkt; \
|
||||
void *_last_elt=NULL, *_elt; \
|
||||
UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL; \
|
||||
ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst)); \
|
||||
if (src) { \
|
||||
for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \
|
||||
for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \
|
||||
_src_hh; \
|
||||
_src_hh = _src_hh->hh_next) { \
|
||||
_elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \
|
||||
if (cond(_elt)) { \
|
||||
_dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho); \
|
||||
_dst_hh->key = _src_hh->key; \
|
||||
_dst_hh->keylen = _src_hh->keylen; \
|
||||
_dst_hh->hashv = _src_hh->hashv; \
|
||||
_dst_hh->prev = _last_elt; \
|
||||
_dst_hh->next = NULL; \
|
||||
if (_last_elt_hh) { _last_elt_hh->next = _elt; } \
|
||||
if (!dst) { \
|
||||
DECLTYPE_ASSIGN(dst,_elt); \
|
||||
HASH_MAKE_TABLE(hh_dst,dst); \
|
||||
} else { \
|
||||
_dst_hh->tbl = (dst)->hh_dst.tbl; \
|
||||
} \
|
||||
HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \
|
||||
HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh); \
|
||||
(dst)->hh_dst.tbl->num_items++; \
|
||||
_last_elt = _elt; \
|
||||
_last_elt_hh = _dst_hh; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
HASH_FSCK(hh_dst,dst); \
|
||||
} while (0)
|
||||
|
||||
#define HASH_CLEAR(hh,head) \
|
||||
do { \
|
||||
if (head) { \
|
||||
uthash_free((head)->hh.tbl->buckets, \
|
||||
(head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
|
||||
HASH_BLOOM_FREE((head)->hh.tbl); \
|
||||
uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
|
||||
(head)=NULL; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define HASH_OVERHEAD(hh,head) \
|
||||
(size_t)((((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \
|
||||
((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \
|
||||
(sizeof(UT_hash_table)) + \
|
||||
(HASH_BLOOM_BYTELEN)))
|
||||
|
||||
#ifdef NO_DECLTYPE
|
||||
#define HASH_ITER(hh,head,el,tmp) \
|
||||
for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL); \
|
||||
el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL))
|
||||
#else
|
||||
#define HASH_ITER(hh,head,el,tmp) \
|
||||
for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \
|
||||
el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
|
||||
#endif
|
||||
|
||||
/* obtain a count of items in the hash */
|
||||
#define HASH_COUNT(head) HASH_CNT(hh,head)
|
||||
#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
|
||||
|
||||
typedef struct UT_hash_bucket {
|
||||
struct UT_hash_handle *hh_head;
|
||||
unsigned count;
|
||||
|
||||
/* expand_mult is normally set to 0. In this situation, the max chain length
|
||||
* threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
|
||||
* the bucket's chain exceeds this length, bucket expansion is triggered).
|
||||
* However, setting expand_mult to a non-zero value delays bucket expansion
|
||||
* (that would be triggered by additions to this particular bucket)
|
||||
* until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
|
||||
* (The multiplier is simply expand_mult+1). The whole idea of this
|
||||
* multiplier is to reduce bucket expansions, since they are expensive, in
|
||||
* situations where we know that a particular bucket tends to be overused.
|
||||
* It is better to let its chain length grow to a longer yet-still-bounded
|
||||
* value, than to do an O(n) bucket expansion too often.
|
||||
*/
|
||||
unsigned expand_mult;
|
||||
|
||||
} UT_hash_bucket;
|
||||
|
||||
/* random signature used only to find hash tables in external analysis */
|
||||
#define HASH_SIGNATURE 0xa0111fe1
|
||||
#define HASH_BLOOM_SIGNATURE 0xb12220f2
|
||||
|
||||
typedef struct UT_hash_table {
|
||||
UT_hash_bucket *buckets;
|
||||
unsigned num_buckets, log2_num_buckets;
|
||||
unsigned num_items;
|
||||
struct UT_hash_handle *tail; /* tail hh in app order, for fast append */
|
||||
ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
|
||||
|
||||
/* in an ideal situation (all buckets used equally), no bucket would have
|
||||
* more than ceil(#items/#buckets) items. that's the ideal chain length. */
|
||||
unsigned ideal_chain_maxlen;
|
||||
|
||||
/* nonideal_items is the number of items in the hash whose chain position
|
||||
* exceeds the ideal chain maxlen. these items pay the penalty for an uneven
|
||||
* hash distribution; reaching them in a chain traversal takes >ideal steps */
|
||||
unsigned nonideal_items;
|
||||
|
||||
/* ineffective expands occur when a bucket doubling was performed, but
|
||||
* afterward, more than half the items in the hash had nonideal chain
|
||||
* positions. If this happens on two consecutive expansions we inhibit any
|
||||
* further expansion, as it's not helping; this happens when the hash
|
||||
* function isn't a good fit for the key domain. When expansion is inhibited
|
||||
* the hash will still work, albeit no longer in constant time. */
|
||||
unsigned ineff_expands, noexpand;
|
||||
|
||||
uint32_t signature; /* used only to find hash tables in external analysis */
|
||||
#ifdef HASH_BLOOM
|
||||
uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
|
||||
uint8_t *bloom_bv;
|
||||
char bloom_nbits;
|
||||
#endif
|
||||
|
||||
} UT_hash_table;
|
||||
|
||||
typedef struct UT_hash_handle {
|
||||
struct UT_hash_table *tbl;
|
||||
void *prev; /* prev element in app order */
|
||||
void *next; /* next element in app order */
|
||||
struct UT_hash_handle *hh_prev; /* previous hh in bucket order */
|
||||
struct UT_hash_handle *hh_next; /* next hh in bucket order */
|
||||
const void *key; /* ptr to enclosing struct's key */
|
||||
unsigned keylen; /* enclosing struct's key len */
|
||||
unsigned hashv; /* result of hash-fcn(key) */
|
||||
} UT_hash_handle;
|
||||
|
||||
#endif /* UTHASH_H */
|
757
contrib/libucl/uthash/utlist.h
Normal file
757
contrib/libucl/uthash/utlist.h
Normal file
@ -0,0 +1,757 @@
|
||||
/*
|
||||
Copyright (c) 2007-2013, Troy D. Hanson http://troydhanson.github.com/uthash/
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef UTLIST_H
|
||||
#define UTLIST_H
|
||||
|
||||
#define UTLIST_VERSION 1.9.8
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
/*
|
||||
* This file contains macros to manipulate singly and doubly-linked lists.
|
||||
*
|
||||
* 1. LL_ macros: singly-linked lists.
|
||||
* 2. DL_ macros: doubly-linked lists.
|
||||
* 3. CDL_ macros: circular doubly-linked lists.
|
||||
*
|
||||
* To use singly-linked lists, your structure must have a "next" pointer.
|
||||
* To use doubly-linked lists, your structure must "prev" and "next" pointers.
|
||||
* Either way, the pointer to the head of the list must be initialized to NULL.
|
||||
*
|
||||
* ----------------.EXAMPLE -------------------------
|
||||
* struct item {
|
||||
* int id;
|
||||
* struct item *prev, *next;
|
||||
* }
|
||||
*
|
||||
* struct item *list = NULL:
|
||||
*
|
||||
* int main() {
|
||||
* struct item *item;
|
||||
* ... allocate and populate item ...
|
||||
* DL_APPEND(list, item);
|
||||
* }
|
||||
* --------------------------------------------------
|
||||
*
|
||||
* For doubly-linked lists, the append and delete macros are O(1)
|
||||
* For singly-linked lists, append and delete are O(n) but prepend is O(1)
|
||||
* The sort macro is O(n log(n)) for all types of single/double/circular lists.
|
||||
*/
|
||||
|
||||
/* These macros use decltype or the earlier __typeof GNU extension.
|
||||
As decltype is only available in newer compilers (VS2010 or gcc 4.3+
|
||||
when compiling c++ code), this code uses whatever method is needed
|
||||
or, for VS2008 where neither is available, uses casting workarounds. */
|
||||
#ifdef _MSC_VER /* MS compiler */
|
||||
#if _MSC_VER >= 1600 && defined(__cplusplus) /* VS2010 or newer in C++ mode */
|
||||
#define LDECLTYPE(x) decltype(x)
|
||||
#else /* VS2008 or older (or VS2010 in C mode) */
|
||||
#define NO_DECLTYPE
|
||||
#define LDECLTYPE(x) char*
|
||||
#endif
|
||||
#elif defined(__ICCARM__)
|
||||
#define NO_DECLTYPE
|
||||
#define LDECLTYPE(x) char*
|
||||
#else /* GNU, Sun and other compilers */
|
||||
#define LDECLTYPE(x) __typeof(x)
|
||||
#endif
|
||||
|
||||
/* for VS2008 we use some workarounds to get around the lack of decltype,
|
||||
* namely, we always reassign our tmp variable to the list head if we need
|
||||
* to dereference its prev/next pointers, and save/restore the real head.*/
|
||||
#ifdef NO_DECLTYPE
|
||||
#define _SV(elt,list) _tmp = (char*)(list); {char **_alias = (char**)&(list); *_alias = (elt); }
|
||||
#define _NEXT(elt,list,next) ((char*)((list)->next))
|
||||
#define _NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); }
|
||||
/* #define _PREV(elt,list,prev) ((char*)((list)->prev)) */
|
||||
#define _PREVASGN(elt,list,to,prev) { char **_alias = (char**)&((list)->prev); *_alias=(char*)(to); }
|
||||
#define _RS(list) { char **_alias = (char**)&(list); *_alias=_tmp; }
|
||||
#define _CASTASGN(a,b) { char **_alias = (char**)&(a); *_alias=(char*)(b); }
|
||||
#else
|
||||
#define _SV(elt,list)
|
||||
#define _NEXT(elt,list,next) ((elt)->next)
|
||||
#define _NEXTASGN(elt,list,to,next) ((elt)->next)=(to)
|
||||
/* #define _PREV(elt,list,prev) ((elt)->prev) */
|
||||
#define _PREVASGN(elt,list,to,prev) ((elt)->prev)=(to)
|
||||
#define _RS(list)
|
||||
#define _CASTASGN(a,b) (a)=(b)
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
* The sort macro is an adaptation of Simon Tatham's O(n log(n)) mergesort *
|
||||
* Unwieldy variable names used here to avoid shadowing passed-in variables. *
|
||||
*****************************************************************************/
|
||||
#define LL_SORT(list, cmp) \
|
||||
LL_SORT2(list, cmp, next)
|
||||
|
||||
#define LL_SORT2(list, cmp, next) \
|
||||
do { \
|
||||
LDECLTYPE(list) _ls_p; \
|
||||
LDECLTYPE(list) _ls_q; \
|
||||
LDECLTYPE(list) _ls_e; \
|
||||
LDECLTYPE(list) _ls_tail; \
|
||||
int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
|
||||
if (list) { \
|
||||
_ls_insize = 1; \
|
||||
_ls_looping = 1; \
|
||||
while (_ls_looping) { \
|
||||
_CASTASGN(_ls_p,list); \
|
||||
list = NULL; \
|
||||
_ls_tail = NULL; \
|
||||
_ls_nmerges = 0; \
|
||||
while (_ls_p) { \
|
||||
_ls_nmerges++; \
|
||||
_ls_q = _ls_p; \
|
||||
_ls_psize = 0; \
|
||||
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
||||
_ls_psize++; \
|
||||
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
|
||||
if (!_ls_q) break; \
|
||||
} \
|
||||
_ls_qsize = _ls_insize; \
|
||||
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
||||
if (_ls_psize == 0) { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
} else if (_ls_qsize == 0 || !_ls_q) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
} else { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
} \
|
||||
if (_ls_tail) { \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
||||
} else { \
|
||||
_CASTASGN(list,_ls_e); \
|
||||
} \
|
||||
_ls_tail = _ls_e; \
|
||||
} \
|
||||
_ls_p = _ls_q; \
|
||||
} \
|
||||
if (_ls_tail) { \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
|
||||
} \
|
||||
if (_ls_nmerges <= 1) { \
|
||||
_ls_looping=0; \
|
||||
} \
|
||||
_ls_insize *= 2; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define DL_SORT(list, cmp) \
|
||||
DL_SORT2(list, cmp, prev, next)
|
||||
|
||||
#define DL_SORT2(list, cmp, prev, next) \
|
||||
do { \
|
||||
LDECLTYPE(list) _ls_p; \
|
||||
LDECLTYPE(list) _ls_q; \
|
||||
LDECLTYPE(list) _ls_e; \
|
||||
LDECLTYPE(list) _ls_tail; \
|
||||
int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
|
||||
if (list) { \
|
||||
_ls_insize = 1; \
|
||||
_ls_looping = 1; \
|
||||
while (_ls_looping) { \
|
||||
_CASTASGN(_ls_p,list); \
|
||||
list = NULL; \
|
||||
_ls_tail = NULL; \
|
||||
_ls_nmerges = 0; \
|
||||
while (_ls_p) { \
|
||||
_ls_nmerges++; \
|
||||
_ls_q = _ls_p; \
|
||||
_ls_psize = 0; \
|
||||
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
||||
_ls_psize++; \
|
||||
_SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
|
||||
if (!_ls_q) break; \
|
||||
} \
|
||||
_ls_qsize = _ls_insize; \
|
||||
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
||||
if (_ls_psize == 0) { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
} else if (_ls_qsize == 0 || !_ls_q) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
} else { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
} \
|
||||
if (_ls_tail) { \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
||||
} else { \
|
||||
_CASTASGN(list,_ls_e); \
|
||||
} \
|
||||
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \
|
||||
_ls_tail = _ls_e; \
|
||||
} \
|
||||
_ls_p = _ls_q; \
|
||||
} \
|
||||
_CASTASGN(list->prev, _ls_tail); \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
|
||||
if (_ls_nmerges <= 1) { \
|
||||
_ls_looping=0; \
|
||||
} \
|
||||
_ls_insize *= 2; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CDL_SORT(list, cmp) \
|
||||
CDL_SORT2(list, cmp, prev, next)
|
||||
|
||||
#define CDL_SORT2(list, cmp, prev, next) \
|
||||
do { \
|
||||
LDECLTYPE(list) _ls_p; \
|
||||
LDECLTYPE(list) _ls_q; \
|
||||
LDECLTYPE(list) _ls_e; \
|
||||
LDECLTYPE(list) _ls_tail; \
|
||||
LDECLTYPE(list) _ls_oldhead; \
|
||||
LDECLTYPE(list) _tmp; \
|
||||
int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping; \
|
||||
if (list) { \
|
||||
_ls_insize = 1; \
|
||||
_ls_looping = 1; \
|
||||
while (_ls_looping) { \
|
||||
_CASTASGN(_ls_p,list); \
|
||||
_CASTASGN(_ls_oldhead,list); \
|
||||
list = NULL; \
|
||||
_ls_tail = NULL; \
|
||||
_ls_nmerges = 0; \
|
||||
while (_ls_p) { \
|
||||
_ls_nmerges++; \
|
||||
_ls_q = _ls_p; \
|
||||
_ls_psize = 0; \
|
||||
for (_ls_i = 0; _ls_i < _ls_insize; _ls_i++) { \
|
||||
_ls_psize++; \
|
||||
_SV(_ls_q,list); \
|
||||
if (_NEXT(_ls_q,list,next) == _ls_oldhead) { \
|
||||
_ls_q = NULL; \
|
||||
} else { \
|
||||
_ls_q = _NEXT(_ls_q,list,next); \
|
||||
} \
|
||||
_RS(list); \
|
||||
if (!_ls_q) break; \
|
||||
} \
|
||||
_ls_qsize = _ls_insize; \
|
||||
while (_ls_psize > 0 || (_ls_qsize > 0 && _ls_q)) { \
|
||||
if (_ls_psize == 0) { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
|
||||
} else if (_ls_qsize == 0 || !_ls_q) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
|
||||
} else if (cmp(_ls_p,_ls_q) <= 0) { \
|
||||
_ls_e = _ls_p; _SV(_ls_p,list); _ls_p = \
|
||||
_NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
|
||||
if (_ls_p == _ls_oldhead) { _ls_p = NULL; } \
|
||||
} else { \
|
||||
_ls_e = _ls_q; _SV(_ls_q,list); _ls_q = \
|
||||
_NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
|
||||
if (_ls_q == _ls_oldhead) { _ls_q = NULL; } \
|
||||
} \
|
||||
if (_ls_tail) { \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
|
||||
} else { \
|
||||
_CASTASGN(list,_ls_e); \
|
||||
} \
|
||||
_SV(_ls_e,list); _PREVASGN(_ls_e,list,_ls_tail,prev); _RS(list); \
|
||||
_ls_tail = _ls_e; \
|
||||
} \
|
||||
_ls_p = _ls_q; \
|
||||
} \
|
||||
_CASTASGN(list->prev,_ls_tail); \
|
||||
_CASTASGN(_tmp,list); \
|
||||
_SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp,next); _RS(list); \
|
||||
if (_ls_nmerges <= 1) { \
|
||||
_ls_looping=0; \
|
||||
} \
|
||||
_ls_insize *= 2; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/******************************************************************************
|
||||
* singly linked list macros (non-circular) *
|
||||
*****************************************************************************/
|
||||
#define LL_PREPEND(head,add) \
|
||||
LL_PREPEND2(head,add,next)
|
||||
|
||||
#define LL_PREPEND2(head,add,next) \
|
||||
do { \
|
||||
(add)->next = head; \
|
||||
head = add; \
|
||||
} while (0)
|
||||
|
||||
#define LL_CONCAT(head1,head2) \
|
||||
LL_CONCAT2(head1,head2,next)
|
||||
|
||||
#define LL_CONCAT2(head1,head2,next) \
|
||||
do { \
|
||||
LDECLTYPE(head1) _tmp; \
|
||||
if (head1) { \
|
||||
_tmp = head1; \
|
||||
while (_tmp->next) { _tmp = _tmp->next; } \
|
||||
_tmp->next=(head2); \
|
||||
} else { \
|
||||
(head1)=(head2); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define LL_APPEND(head,add) \
|
||||
LL_APPEND2(head,add,next)
|
||||
|
||||
#define LL_APPEND2(head,add,next) \
|
||||
do { \
|
||||
LDECLTYPE(head) _tmp; \
|
||||
(add)->next=NULL; \
|
||||
if (head) { \
|
||||
_tmp = head; \
|
||||
while (_tmp->next) { _tmp = _tmp->next; } \
|
||||
_tmp->next=(add); \
|
||||
} else { \
|
||||
(head)=(add); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define LL_DELETE(head,del) \
|
||||
LL_DELETE2(head,del,next)
|
||||
|
||||
#define LL_DELETE2(head,del,next) \
|
||||
do { \
|
||||
LDECLTYPE(head) _tmp; \
|
||||
if ((head) == (del)) { \
|
||||
(head)=(head)->next; \
|
||||
} else { \
|
||||
_tmp = head; \
|
||||
while (_tmp->next && (_tmp->next != (del))) { \
|
||||
_tmp = _tmp->next; \
|
||||
} \
|
||||
if (_tmp->next) { \
|
||||
_tmp->next = ((del)->next); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Here are VS2008 replacements for LL_APPEND and LL_DELETE */
|
||||
#define LL_APPEND_VS2008(head,add) \
|
||||
LL_APPEND2_VS2008(head,add,next)
|
||||
|
||||
#define LL_APPEND2_VS2008(head,add,next) \
|
||||
do { \
|
||||
if (head) { \
|
||||
(add)->next = head; /* use add->next as a temp variable */ \
|
||||
while ((add)->next->next) { (add)->next = (add)->next->next; } \
|
||||
(add)->next->next=(add); \
|
||||
} else { \
|
||||
(head)=(add); \
|
||||
} \
|
||||
(add)->next=NULL; \
|
||||
} while (0)
|
||||
|
||||
#define LL_DELETE_VS2008(head,del) \
|
||||
LL_DELETE2_VS2008(head,del,next)
|
||||
|
||||
#define LL_DELETE2_VS2008(head,del,next) \
|
||||
do { \
|
||||
if ((head) == (del)) { \
|
||||
(head)=(head)->next; \
|
||||
} else { \
|
||||
char *_tmp = (char*)(head); \
|
||||
while ((head)->next && ((head)->next != (del))) { \
|
||||
head = (head)->next; \
|
||||
} \
|
||||
if ((head)->next) { \
|
||||
(head)->next = ((del)->next); \
|
||||
} \
|
||||
{ \
|
||||
char **_head_alias = (char**)&(head); \
|
||||
*_head_alias = _tmp; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
#ifdef NO_DECLTYPE
|
||||
#undef LL_APPEND
|
||||
#define LL_APPEND LL_APPEND_VS2008
|
||||
#undef LL_DELETE
|
||||
#define LL_DELETE LL_DELETE_VS2008
|
||||
#undef LL_DELETE2
|
||||
#define LL_DELETE2 LL_DELETE2_VS2008
|
||||
#undef LL_APPEND2
|
||||
#define LL_APPEND2 LL_APPEND2_VS2008
|
||||
#undef LL_CONCAT /* no LL_CONCAT_VS2008 */
|
||||
#undef DL_CONCAT /* no DL_CONCAT_VS2008 */
|
||||
#endif
|
||||
/* end VS2008 replacements */
|
||||
|
||||
#define LL_COUNT(head,el,counter) \
|
||||
LL_COUNT2(head,el,counter,next) \
|
||||
|
||||
#define LL_COUNT2(head,el,counter,next) \
|
||||
{ \
|
||||
counter = 0; \
|
||||
LL_FOREACH2(head,el,next){ ++counter; } \
|
||||
}
|
||||
|
||||
#define LL_FOREACH(head,el) \
|
||||
LL_FOREACH2(head,el,next)
|
||||
|
||||
#define LL_FOREACH2(head,el,next) \
|
||||
for(el=head;el;el=(el)->next)
|
||||
|
||||
#define LL_FOREACH_SAFE(head,el,tmp) \
|
||||
LL_FOREACH_SAFE2(head,el,tmp,next)
|
||||
|
||||
#define LL_FOREACH_SAFE2(head,el,tmp,next) \
|
||||
for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
|
||||
|
||||
#define LL_SEARCH_SCALAR(head,out,field,val) \
|
||||
LL_SEARCH_SCALAR2(head,out,field,val,next)
|
||||
|
||||
#define LL_SEARCH_SCALAR2(head,out,field,val,next) \
|
||||
do { \
|
||||
LL_FOREACH2(head,out,next) { \
|
||||
if ((out)->field == (val)) break; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define LL_SEARCH(head,out,elt,cmp) \
|
||||
LL_SEARCH2(head,out,elt,cmp,next)
|
||||
|
||||
#define LL_SEARCH2(head,out,elt,cmp,next) \
|
||||
do { \
|
||||
LL_FOREACH2(head,out,next) { \
|
||||
if ((cmp(out,elt))==0) break; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define LL_REPLACE_ELEM(head, el, add) \
|
||||
do { \
|
||||
LDECLTYPE(head) _tmp; \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
(add)->next = (el)->next; \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
} else { \
|
||||
_tmp = head; \
|
||||
while (_tmp->next && (_tmp->next != (el))) { \
|
||||
_tmp = _tmp->next; \
|
||||
} \
|
||||
if (_tmp->next) { \
|
||||
_tmp->next = (add); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define LL_PREPEND_ELEM(head, el, add) \
|
||||
do { \
|
||||
LDECLTYPE(head) _tmp; \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
(add)->next = (el); \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
} else { \
|
||||
_tmp = head; \
|
||||
while (_tmp->next && (_tmp->next != (el))) { \
|
||||
_tmp = _tmp->next; \
|
||||
} \
|
||||
if (_tmp->next) { \
|
||||
_tmp->next = (add); \
|
||||
} \
|
||||
} \
|
||||
} while (0) \
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* doubly linked list macros (non-circular) *
|
||||
*****************************************************************************/
|
||||
#define DL_PREPEND(head,add) \
|
||||
DL_PREPEND2(head,add,prev,next)
|
||||
|
||||
#define DL_PREPEND2(head,add,prev,next) \
|
||||
do { \
|
||||
(add)->next = head; \
|
||||
if (head) { \
|
||||
(add)->prev = (head)->prev; \
|
||||
(head)->prev = (add); \
|
||||
} else { \
|
||||
(add)->prev = (add); \
|
||||
} \
|
||||
(head) = (add); \
|
||||
} while (0)
|
||||
|
||||
#define DL_APPEND(head,add) \
|
||||
DL_APPEND2(head,add,prev,next)
|
||||
|
||||
#define DL_APPEND2(head,add,prev,next) \
|
||||
do { \
|
||||
if (head) { \
|
||||
(add)->prev = (head)->prev; \
|
||||
(head)->prev->next = (add); \
|
||||
(head)->prev = (add); \
|
||||
(add)->next = NULL; \
|
||||
} else { \
|
||||
(head)=(add); \
|
||||
(head)->prev = (head); \
|
||||
(head)->next = NULL; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DL_CONCAT(head1,head2) \
|
||||
DL_CONCAT2(head1,head2,prev,next)
|
||||
|
||||
#define DL_CONCAT2(head1,head2,prev,next) \
|
||||
do { \
|
||||
LDECLTYPE(head1) _tmp; \
|
||||
if (head2) { \
|
||||
if (head1) { \
|
||||
_tmp = (head2)->prev; \
|
||||
(head2)->prev = (head1)->prev; \
|
||||
(head1)->prev->next = (head2); \
|
||||
(head1)->prev = _tmp; \
|
||||
} else { \
|
||||
(head1)=(head2); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DL_DELETE(head,del) \
|
||||
DL_DELETE2(head,del,prev,next)
|
||||
|
||||
#define DL_DELETE2(head,del,prev,next) \
|
||||
do { \
|
||||
assert((del)->prev != NULL); \
|
||||
if ((del)->prev == (del)) { \
|
||||
(head)=NULL; \
|
||||
} else if ((del)==(head)) { \
|
||||
(del)->next->prev = (del)->prev; \
|
||||
(head) = (del)->next; \
|
||||
} else { \
|
||||
(del)->prev->next = (del)->next; \
|
||||
if ((del)->next) { \
|
||||
(del)->next->prev = (del)->prev; \
|
||||
} else { \
|
||||
(head)->prev = (del)->prev; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DL_COUNT(head,el,counter) \
|
||||
DL_COUNT2(head,el,counter,next) \
|
||||
|
||||
#define DL_COUNT2(head,el,counter,next) \
|
||||
{ \
|
||||
counter = 0; \
|
||||
DL_FOREACH2(head,el,next){ ++counter; } \
|
||||
}
|
||||
|
||||
#define DL_FOREACH(head,el) \
|
||||
DL_FOREACH2(head,el,next)
|
||||
|
||||
#define DL_FOREACH2(head,el,next) \
|
||||
for(el=head;el;el=(el)->next)
|
||||
|
||||
/* this version is safe for deleting the elements during iteration */
|
||||
#define DL_FOREACH_SAFE(head,el,tmp) \
|
||||
DL_FOREACH_SAFE2(head,el,tmp,next)
|
||||
|
||||
#define DL_FOREACH_SAFE2(head,el,tmp,next) \
|
||||
for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
|
||||
|
||||
/* these are identical to their singly-linked list counterparts */
|
||||
#define DL_SEARCH_SCALAR LL_SEARCH_SCALAR
|
||||
#define DL_SEARCH LL_SEARCH
|
||||
#define DL_SEARCH_SCALAR2 LL_SEARCH_SCALAR2
|
||||
#define DL_SEARCH2 LL_SEARCH2
|
||||
|
||||
#define DL_REPLACE_ELEM(head, el, add) \
|
||||
do { \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
(add)->next = (el)->next; \
|
||||
if ((el)->next == NULL) { \
|
||||
(add)->prev = (add); \
|
||||
} else { \
|
||||
(add)->prev = (el)->prev; \
|
||||
(add)->next->prev = (add); \
|
||||
} \
|
||||
} else { \
|
||||
(add)->next = (el)->next; \
|
||||
(add)->prev = (el)->prev; \
|
||||
(add)->prev->next = (add); \
|
||||
if ((el)->next == NULL) { \
|
||||
(head)->prev = (add); \
|
||||
} else { \
|
||||
(add)->next->prev = (add); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DL_PREPEND_ELEM(head, el, add) \
|
||||
do { \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
(add)->next = (el); \
|
||||
(add)->prev = (el)->prev; \
|
||||
(el)->prev = (add); \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
} else { \
|
||||
(add)->prev->next = (add); \
|
||||
} \
|
||||
} while (0) \
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* circular doubly linked list macros *
|
||||
*****************************************************************************/
|
||||
#define CDL_PREPEND(head,add) \
|
||||
CDL_PREPEND2(head,add,prev,next)
|
||||
|
||||
#define CDL_PREPEND2(head,add,prev,next) \
|
||||
do { \
|
||||
if (head) { \
|
||||
(add)->prev = (head)->prev; \
|
||||
(add)->next = (head); \
|
||||
(head)->prev = (add); \
|
||||
(add)->prev->next = (add); \
|
||||
} else { \
|
||||
(add)->prev = (add); \
|
||||
(add)->next = (add); \
|
||||
} \
|
||||
(head)=(add); \
|
||||
} while (0)
|
||||
|
||||
#define CDL_DELETE(head,del) \
|
||||
CDL_DELETE2(head,del,prev,next)
|
||||
|
||||
#define CDL_DELETE2(head,del,prev,next) \
|
||||
do { \
|
||||
if ( ((head)==(del)) && ((head)->next == (head))) { \
|
||||
(head) = 0L; \
|
||||
} else { \
|
||||
(del)->next->prev = (del)->prev; \
|
||||
(del)->prev->next = (del)->next; \
|
||||
if ((del) == (head)) (head)=(del)->next; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CDL_COUNT(head,el,counter) \
|
||||
CDL_COUNT2(head,el,counter,next) \
|
||||
|
||||
#define CDL_COUNT2(head, el, counter,next) \
|
||||
{ \
|
||||
counter = 0; \
|
||||
CDL_FOREACH2(head,el,next){ ++counter; } \
|
||||
}
|
||||
|
||||
#define CDL_FOREACH(head,el) \
|
||||
CDL_FOREACH2(head,el,next)
|
||||
|
||||
#define CDL_FOREACH2(head,el,next) \
|
||||
for(el=head;el;el=((el)->next==head ? 0L : (el)->next))
|
||||
|
||||
#define CDL_FOREACH_SAFE(head,el,tmp1,tmp2) \
|
||||
CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next)
|
||||
|
||||
#define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \
|
||||
for((el)=(head), ((tmp1)=(head)?((head)->prev):NULL); \
|
||||
(el) && ((tmp2)=(el)->next, 1); \
|
||||
((el) = (((el)==(tmp1)) ? 0L : (tmp2))))
|
||||
|
||||
#define CDL_SEARCH_SCALAR(head,out,field,val) \
|
||||
CDL_SEARCH_SCALAR2(head,out,field,val,next)
|
||||
|
||||
#define CDL_SEARCH_SCALAR2(head,out,field,val,next) \
|
||||
do { \
|
||||
CDL_FOREACH2(head,out,next) { \
|
||||
if ((out)->field == (val)) break; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define CDL_SEARCH(head,out,elt,cmp) \
|
||||
CDL_SEARCH2(head,out,elt,cmp,next)
|
||||
|
||||
#define CDL_SEARCH2(head,out,elt,cmp,next) \
|
||||
do { \
|
||||
CDL_FOREACH2(head,out,next) { \
|
||||
if ((cmp(out,elt))==0) break; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define CDL_REPLACE_ELEM(head, el, add) \
|
||||
do { \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
if ((el)->next == (el)) { \
|
||||
(add)->next = (add); \
|
||||
(add)->prev = (add); \
|
||||
(head) = (add); \
|
||||
} else { \
|
||||
(add)->next = (el)->next; \
|
||||
(add)->prev = (el)->prev; \
|
||||
(add)->next->prev = (add); \
|
||||
(add)->prev->next = (add); \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CDL_PREPEND_ELEM(head, el, add) \
|
||||
do { \
|
||||
assert(head != NULL); \
|
||||
assert(el != NULL); \
|
||||
assert(add != NULL); \
|
||||
(add)->next = (el); \
|
||||
(add)->prev = (el)->prev; \
|
||||
(el)->prev = (add); \
|
||||
(add)->prev->next = (add); \
|
||||
if ((head) == (el)) { \
|
||||
(head) = (add); \
|
||||
} \
|
||||
} while (0) \
|
||||
|
||||
#endif /* UTLIST_H */
|
||||
|
410
contrib/libucl/uthash/utstring.h
Normal file
410
contrib/libucl/uthash/utstring.h
Normal file
@ -0,0 +1,410 @@
|
||||
/*
|
||||
Copyright (c) 2008-2013, Troy D. Hanson http://troydhanson.github.com/uthash/
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* a dynamic string implementation using macros
|
||||
*/
|
||||
#ifndef UTSTRING_H
|
||||
#define UTSTRING_H
|
||||
|
||||
#define UTSTRING_VERSION 1.9.8
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define _UNUSED_ __attribute__ ((__unused__))
|
||||
#else
|
||||
#define _UNUSED_
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifndef oom
|
||||
#define oom() exit(-1)
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
char *d;
|
||||
size_t n; /* allocd size */
|
||||
size_t i; /* index of first unused byte */
|
||||
} UT_string;
|
||||
|
||||
#define utstring_reserve(s,amt) \
|
||||
do { \
|
||||
if (((s)->n - (s)->i) < (size_t)(amt)) { \
|
||||
(s)->d = (char*)realloc((s)->d, (s)->n + amt); \
|
||||
if ((s)->d == NULL) oom(); \
|
||||
(s)->n += amt; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define utstring_init(s) \
|
||||
do { \
|
||||
(s)->n = 0; (s)->i = 0; (s)->d = NULL; \
|
||||
utstring_reserve(s,128); \
|
||||
(s)->d[0] = '\0'; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_done(s) \
|
||||
do { \
|
||||
if ((s)->d != NULL) free((s)->d); \
|
||||
(s)->n = 0; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_free(s) \
|
||||
do { \
|
||||
utstring_done(s); \
|
||||
free(s); \
|
||||
} while(0)
|
||||
|
||||
#define utstring_new(s) \
|
||||
do { \
|
||||
s = (UT_string*)calloc(sizeof(UT_string),1); \
|
||||
if (!s) oom(); \
|
||||
utstring_init(s); \
|
||||
} while(0)
|
||||
|
||||
#define utstring_renew(s) \
|
||||
do { \
|
||||
if (s) { \
|
||||
utstring_clear(s); \
|
||||
} else { \
|
||||
utstring_new(s); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define utstring_clear(s) \
|
||||
do { \
|
||||
(s)->i = 0; \
|
||||
(s)->d[0] = '\0'; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_bincpy(s,b,l) \
|
||||
do { \
|
||||
utstring_reserve((s),(l)+1); \
|
||||
if (l) memcpy(&(s)->d[(s)->i], b, l); \
|
||||
(s)->i += l; \
|
||||
(s)->d[(s)->i]='\0'; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_concat(dst,src) \
|
||||
do { \
|
||||
utstring_reserve((dst),((src)->i)+1); \
|
||||
if ((src)->i) memcpy(&(dst)->d[(dst)->i], (src)->d, (src)->i); \
|
||||
(dst)->i += (src)->i; \
|
||||
(dst)->d[(dst)->i]='\0'; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_len(s) ((unsigned)((s)->i))
|
||||
|
||||
#define utstring_body(s) ((s)->d)
|
||||
|
||||
_UNUSED_ static void utstring_printf_va(UT_string *s, const char *fmt, va_list ap) {
|
||||
int n;
|
||||
va_list cp;
|
||||
while (1) {
|
||||
#ifdef _WIN32
|
||||
cp = ap;
|
||||
#else
|
||||
va_copy(cp, ap);
|
||||
#endif
|
||||
n = vsnprintf (&s->d[s->i], s->n-s->i, fmt, cp);
|
||||
va_end(cp);
|
||||
|
||||
if ((n > -1) && (n < (int)(s->n-s->i))) {
|
||||
s->i += n;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Else try again with more space. */
|
||||
if (n > -1) utstring_reserve(s,n+1); /* exact */
|
||||
else utstring_reserve(s,(s->n)*2); /* 2x */
|
||||
}
|
||||
}
|
||||
#ifdef __GNUC__
|
||||
/* support printf format checking (2=the format string, 3=start of varargs) */
|
||||
static void utstring_printf(UT_string *s, const char *fmt, ...)
|
||||
__attribute__ (( format( printf, 2, 3) ));
|
||||
#endif
|
||||
_UNUSED_ static void utstring_printf(UT_string *s, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap,fmt);
|
||||
utstring_printf_va(s,fmt,ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
#define utstring_append_len(dst, src, len) \
|
||||
do { \
|
||||
while ((dst)->n-(dst)->i <= (len)) utstring_reserve((dst),((dst)->n)*2); \
|
||||
memcpy(&(dst)->d[(dst)->i], (src), (len)); \
|
||||
(dst)->i+=(len); \
|
||||
(dst)->d[(dst)->i]='\0'; \
|
||||
} while(0)
|
||||
|
||||
#define utstring_append_c(dst, c) \
|
||||
do { \
|
||||
if ((dst)->n-(dst)->i < 2) utstring_reserve((dst),((dst)->n)*2); \
|
||||
(dst)->d[(dst)->i++] = (c); \
|
||||
(dst)->d[(dst)->i]='\0'; \
|
||||
} while(0)
|
||||
|
||||
/*******************************************************************************
|
||||
* begin substring search functions *
|
||||
******************************************************************************/
|
||||
/* Build KMP table from left to right. */
|
||||
_UNUSED_ static void _utstring_BuildTable(
|
||||
const char *P_Needle,
|
||||
ssize_t P_NeedleLen,
|
||||
long *P_KMP_Table)
|
||||
{
|
||||
long i, j;
|
||||
|
||||
i = 0;
|
||||
j = i - 1;
|
||||
P_KMP_Table[i] = j;
|
||||
while (i < P_NeedleLen)
|
||||
{
|
||||
while ( (j > -1) && (P_Needle[i] != P_Needle[j]) )
|
||||
{
|
||||
j = P_KMP_Table[j];
|
||||
}
|
||||
i++;
|
||||
j++;
|
||||
if (i < P_NeedleLen)
|
||||
{
|
||||
if (P_Needle[i] == P_Needle[j])
|
||||
{
|
||||
P_KMP_Table[i] = P_KMP_Table[j];
|
||||
}
|
||||
else
|
||||
{
|
||||
P_KMP_Table[i] = j;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
P_KMP_Table[i] = j;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Build KMP table from right to left. */
|
||||
_UNUSED_ static void _utstring_BuildTableR(
|
||||
const char *P_Needle,
|
||||
ssize_t P_NeedleLen,
|
||||
long *P_KMP_Table)
|
||||
{
|
||||
long i, j;
|
||||
|
||||
i = P_NeedleLen - 1;
|
||||
j = i + 1;
|
||||
P_KMP_Table[i + 1] = j;
|
||||
while (i >= 0)
|
||||
{
|
||||
while ( (j < P_NeedleLen) && (P_Needle[i] != P_Needle[j]) )
|
||||
{
|
||||
j = P_KMP_Table[j + 1];
|
||||
}
|
||||
i--;
|
||||
j--;
|
||||
if (i >= 0)
|
||||
{
|
||||
if (P_Needle[i] == P_Needle[j])
|
||||
{
|
||||
P_KMP_Table[i + 1] = P_KMP_Table[j + 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
P_KMP_Table[i + 1] = j;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
P_KMP_Table[i + 1] = j;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Search data from left to right. ( Multiple search mode. ) */
|
||||
_UNUSED_ static long _utstring_find(
|
||||
const char *P_Haystack,
|
||||
size_t P_HaystackLen,
|
||||
const char *P_Needle,
|
||||
size_t P_NeedleLen,
|
||||
long *P_KMP_Table)
|
||||
{
|
||||
long i, j;
|
||||
long V_FindPosition = -1;
|
||||
|
||||
/* Search from left to right. */
|
||||
i = j = 0;
|
||||
while ( (j < (int)P_HaystackLen) && (((P_HaystackLen - j) + i) >= P_NeedleLen) )
|
||||
{
|
||||
while ( (i > -1) && (P_Needle[i] != P_Haystack[j]) )
|
||||
{
|
||||
i = P_KMP_Table[i];
|
||||
}
|
||||
i++;
|
||||
j++;
|
||||
if (i >= (int)P_NeedleLen)
|
||||
{
|
||||
/* Found. */
|
||||
V_FindPosition = j - i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return V_FindPosition;
|
||||
}
|
||||
|
||||
|
||||
/* Search data from right to left. ( Multiple search mode. ) */
|
||||
_UNUSED_ static long _utstring_findR(
|
||||
const char *P_Haystack,
|
||||
size_t P_HaystackLen,
|
||||
const char *P_Needle,
|
||||
size_t P_NeedleLen,
|
||||
long *P_KMP_Table)
|
||||
{
|
||||
long i, j;
|
||||
long V_FindPosition = -1;
|
||||
|
||||
/* Search from right to left. */
|
||||
j = (P_HaystackLen - 1);
|
||||
i = (P_NeedleLen - 1);
|
||||
while ( (j >= 0) && (j >= i) )
|
||||
{
|
||||
while ( (i < (int)P_NeedleLen) && (P_Needle[i] != P_Haystack[j]) )
|
||||
{
|
||||
i = P_KMP_Table[i + 1];
|
||||
}
|
||||
i--;
|
||||
j--;
|
||||
if (i < 0)
|
||||
{
|
||||
/* Found. */
|
||||
V_FindPosition = j + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return V_FindPosition;
|
||||
}
|
||||
|
||||
|
||||
/* Search data from left to right. ( One time search mode. ) */
|
||||
_UNUSED_ static long utstring_find(
|
||||
UT_string *s,
|
||||
long P_StartPosition, /* Start from 0. -1 means last position. */
|
||||
const char *P_Needle,
|
||||
ssize_t P_NeedleLen)
|
||||
{
|
||||
long V_StartPosition;
|
||||
long V_HaystackLen;
|
||||
long *V_KMP_Table;
|
||||
long V_FindPosition = -1;
|
||||
|
||||
if (P_StartPosition < 0)
|
||||
{
|
||||
V_StartPosition = s->i + P_StartPosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
V_StartPosition = P_StartPosition;
|
||||
}
|
||||
V_HaystackLen = s->i - V_StartPosition;
|
||||
if ( (V_HaystackLen >= P_NeedleLen) && (P_NeedleLen > 0) )
|
||||
{
|
||||
V_KMP_Table = (long *)malloc(sizeof(long) * (P_NeedleLen + 1));
|
||||
if (V_KMP_Table != NULL)
|
||||
{
|
||||
_utstring_BuildTable(P_Needle, P_NeedleLen, V_KMP_Table);
|
||||
|
||||
V_FindPosition = _utstring_find(s->d + V_StartPosition,
|
||||
V_HaystackLen,
|
||||
P_Needle,
|
||||
P_NeedleLen,
|
||||
V_KMP_Table);
|
||||
if (V_FindPosition >= 0)
|
||||
{
|
||||
V_FindPosition += V_StartPosition;
|
||||
}
|
||||
|
||||
free(V_KMP_Table);
|
||||
}
|
||||
}
|
||||
|
||||
return V_FindPosition;
|
||||
}
|
||||
|
||||
|
||||
/* Search data from right to left. ( One time search mode. ) */
|
||||
_UNUSED_ static long utstring_findR(
|
||||
UT_string *s,
|
||||
long P_StartPosition, /* Start from 0. -1 means last position. */
|
||||
const char *P_Needle,
|
||||
ssize_t P_NeedleLen)
|
||||
{
|
||||
long V_StartPosition;
|
||||
long V_HaystackLen;
|
||||
long *V_KMP_Table;
|
||||
long V_FindPosition = -1;
|
||||
|
||||
if (P_StartPosition < 0)
|
||||
{
|
||||
V_StartPosition = s->i + P_StartPosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
V_StartPosition = P_StartPosition;
|
||||
}
|
||||
V_HaystackLen = V_StartPosition + 1;
|
||||
if ( (V_HaystackLen >= P_NeedleLen) && (P_NeedleLen > 0) )
|
||||
{
|
||||
V_KMP_Table = (long *)malloc(sizeof(long) * (P_NeedleLen + 1));
|
||||
if (V_KMP_Table != NULL)
|
||||
{
|
||||
_utstring_BuildTableR(P_Needle, P_NeedleLen, V_KMP_Table);
|
||||
|
||||
V_FindPosition = _utstring_findR(s->d,
|
||||
V_HaystackLen,
|
||||
P_Needle,
|
||||
P_NeedleLen,
|
||||
V_KMP_Table);
|
||||
|
||||
free(V_KMP_Table);
|
||||
}
|
||||
}
|
||||
|
||||
return V_FindPosition;
|
||||
}
|
||||
/*******************************************************************************
|
||||
* end substring search functions *
|
||||
******************************************************************************/
|
||||
|
||||
#endif /* UTSTRING_H */
|
128
contrib/libucl/utils/chargen.c
Normal file
128
contrib/libucl/utils/chargen.c
Normal file
@ -0,0 +1,128 @@
|
||||
/* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file this utility generates character table for ucl
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
static inline int
|
||||
print_flag (const char *flag, bool *need_or, char *val)
|
||||
{
|
||||
int res;
|
||||
res = sprintf (val, "%s%s", *need_or ? "|" : "", flag);
|
||||
|
||||
*need_or |= true;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int i, col, r;
|
||||
const char *name = "ucl_chartable";
|
||||
bool need_or;
|
||||
char valbuf[2048];
|
||||
|
||||
col = 0;
|
||||
|
||||
if (argc > 1) {
|
||||
name = argv[1];
|
||||
}
|
||||
|
||||
printf ("static const unsigned int %s[255] = {\n", name);
|
||||
|
||||
for (i = 0; i < 255; i ++) {
|
||||
need_or = false;
|
||||
r = 0;
|
||||
/* UCL_CHARACTER_VALUE_END */
|
||||
|
||||
if (i == ' ' || i == '\t') {
|
||||
r += print_flag ("UCL_CHARACTER_WHITESPACE", &need_or, valbuf + r);
|
||||
}
|
||||
if (isspace (i)) {
|
||||
r += print_flag ("UCL_CHARACTER_WHITESPACE_UNSAFE", &need_or, valbuf + r);
|
||||
}
|
||||
if (isalnum (i) || i >= 0x80 || i == '/' || i == '_') {
|
||||
r += print_flag ("UCL_CHARACTER_KEY_START", &need_or, valbuf + r);
|
||||
}
|
||||
if (isalnum (i) || i == '-' || i == '_' || i == '/' || i == '.' || i >= 0x80) {
|
||||
r += print_flag ("UCL_CHARACTER_KEY", &need_or, valbuf + r);
|
||||
}
|
||||
if (i == 0 || i == '\r' || i == '\n' || i == ']' || i == '}' || i == ';' || i == ',' || i == '#') {
|
||||
r += print_flag ("UCL_CHARACTER_VALUE_END", &need_or, valbuf + r);
|
||||
}
|
||||
else {
|
||||
if (isprint (i) || i >= 0x80) {
|
||||
r += print_flag ("UCL_CHARACTER_VALUE_STR", &need_or, valbuf + r);
|
||||
}
|
||||
if (isdigit (i) || i == '-') {
|
||||
r += print_flag ("UCL_CHARACTER_VALUE_DIGIT_START", &need_or, valbuf + r);
|
||||
}
|
||||
if (isalnum (i) || i == '.' || i == '-' || i == '+') {
|
||||
r += print_flag ("UCL_CHARACTER_VALUE_DIGIT", &need_or, valbuf + r);
|
||||
}
|
||||
}
|
||||
if (i == '"' || i == '\\' || i == '/' || i == 'b' ||
|
||||
i == 'f' || i == 'n' || i == 'r' || i == 't' || i == 'u') {
|
||||
r += print_flag ("UCL_CHARACTER_ESCAPE", &need_or, valbuf + r);
|
||||
}
|
||||
if (i == ' ' || i == '\t' || i == ':' || i == '=') {
|
||||
r += print_flag ("UCL_CHARACTER_KEY_SEP", &need_or, valbuf + r);
|
||||
}
|
||||
if (i == '\n' || i == '\r' || i == '\\' || i == '\b' || i == '\t' ||
|
||||
i == '"' || i == '\f') {
|
||||
r += print_flag ("UCL_CHARACTER_JSON_UNSAFE", &need_or, valbuf + r);
|
||||
}
|
||||
if (i == '\n' || i == '\r' || i == '\\' || i == '\b' || i == '\t' ||
|
||||
i == '"' || i == '\f' || i == '=' || i == ':' || i == '{' || i == '[' || i == ' ') {
|
||||
r += print_flag ("UCL_CHARACTER_UCL_UNSAFE", &need_or, valbuf + r);
|
||||
}
|
||||
|
||||
if (!need_or) {
|
||||
r += print_flag ("UCL_CHARACTER_DENIED", &need_or, valbuf + r);
|
||||
}
|
||||
|
||||
if (isprint (i)) {
|
||||
r += sprintf (valbuf + r, " /* %c */", i);
|
||||
}
|
||||
if (i != 254) {
|
||||
r += sprintf (valbuf + r, ", ");
|
||||
}
|
||||
col += r;
|
||||
if (col > 80) {
|
||||
printf ("\n%s", valbuf);
|
||||
col = r;
|
||||
}
|
||||
else {
|
||||
printf ("%s", valbuf);
|
||||
}
|
||||
}
|
||||
printf ("\n}\n");
|
||||
|
||||
return 0;
|
||||
}
|
159
contrib/libucl/utils/objdump.c
Normal file
159
contrib/libucl/utils/objdump.c
Normal file
@ -0,0 +1,159 @@
|
||||
/* Copyright (c) 2013, Dmitriy V. Reshetnikov
|
||||
* Copyright (c) 2013, Vsevolod Stakhov
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "ucl.h"
|
||||
|
||||
void
|
||||
ucl_obj_dump(ucl_object_t *obj, unsigned int shift)
|
||||
{
|
||||
int num = shift * 4 + 5;
|
||||
char *pre = (char *) malloc (num * sizeof(char));
|
||||
ucl_object_t *cur, *tmp;
|
||||
ucl_object_iter_t it = NULL, it_obj = NULL;
|
||||
|
||||
pre[--num] = 0x00;
|
||||
while (num--)
|
||||
pre[num] = 0x20;
|
||||
|
||||
tmp = obj;
|
||||
|
||||
while ((obj = ucl_iterate_object (tmp, &it, false))) {
|
||||
printf ("%sucl object address: %p\n", pre + 4, obj);
|
||||
if (obj->key != NULL) {
|
||||
printf ("%skey: \"%s\"\n", pre, ucl_object_key (obj));
|
||||
}
|
||||
printf ("%sref: %hd\n", pre, obj->ref);
|
||||
printf ("%slen: %u\n", pre, obj->len);
|
||||
printf ("%sprev: %p\n", pre, obj->prev);
|
||||
printf ("%snext: %p\n", pre, obj->next);
|
||||
if (obj->type == UCL_OBJECT) {
|
||||
printf ("%stype: UCL_OBJECT\n", pre);
|
||||
printf ("%svalue: %p\n", pre, obj->value.ov);
|
||||
while ((cur = ucl_iterate_object (obj, &it_obj, true))) {
|
||||
ucl_obj_dump (cur, shift + 2);
|
||||
}
|
||||
}
|
||||
else if (obj->type == UCL_ARRAY) {
|
||||
printf ("%stype: UCL_ARRAY\n", pre);
|
||||
printf ("%svalue: %p\n", pre, obj->value.av);
|
||||
ucl_obj_dump (obj->value.av, shift + 2);
|
||||
}
|
||||
else if (obj->type == UCL_INT) {
|
||||
printf ("%stype: UCL_INT\n", pre);
|
||||
printf ("%svalue: %ld\n", pre, ucl_object_toint (obj));
|
||||
}
|
||||
else if (obj->type == UCL_FLOAT) {
|
||||
printf ("%stype: UCL_FLOAT\n", pre);
|
||||
printf ("%svalue: %f\n", pre, ucl_object_todouble (obj));
|
||||
}
|
||||
else if (obj->type == UCL_STRING) {
|
||||
printf ("%stype: UCL_STRING\n", pre);
|
||||
printf ("%svalue: \"%s\"\n", pre, ucl_object_tostring (obj));
|
||||
}
|
||||
else if (obj->type == UCL_BOOLEAN) {
|
||||
printf ("%stype: UCL_BOOLEAN\n", pre);
|
||||
printf ("%svalue: %s\n", pre, ucl_object_tostring_forced (obj));
|
||||
}
|
||||
else if (obj->type == UCL_TIME) {
|
||||
printf ("%stype: UCL_TIME\n", pre);
|
||||
printf ("%svalue: %f\n", pre, ucl_object_todouble (obj));
|
||||
}
|
||||
else if (obj->type == UCL_USERDATA) {
|
||||
printf ("%stype: UCL_USERDATA\n", pre);
|
||||
printf ("%svalue: %p\n", pre, obj->value.ud);
|
||||
}
|
||||
}
|
||||
|
||||
free (pre);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
const char *fn = NULL;
|
||||
char inbuf[8192];
|
||||
struct ucl_parser *parser;
|
||||
int k, ret = 0, r = 0;
|
||||
ucl_object_t *obj = NULL;
|
||||
ucl_object_t *par;
|
||||
FILE *in;
|
||||
|
||||
if (argc > 1) {
|
||||
fn = argv[1];
|
||||
}
|
||||
|
||||
if (fn != NULL) {
|
||||
in = fopen (fn, "r");
|
||||
if (in == NULL) {
|
||||
exit (-errno);
|
||||
}
|
||||
}
|
||||
else {
|
||||
in = stdin;
|
||||
}
|
||||
|
||||
parser = ucl_parser_new (0);
|
||||
while (!feof (in) && r < (int)sizeof (inbuf)) {
|
||||
r += fread (inbuf + r, 1, sizeof (inbuf) - r, in);
|
||||
}
|
||||
ucl_parser_add_chunk (parser, inbuf, r);
|
||||
fclose (in);
|
||||
if (ucl_parser_get_error(parser)) {
|
||||
printf ("Error occured: %s\n", ucl_parser_get_error(parser));
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
obj = ucl_parser_get_object (parser);
|
||||
if (ucl_parser_get_error(parser)) {
|
||||
printf ("Error occured: %s\n", ucl_parser_get_error(parser));
|
||||
ret = 1;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (argc > 2) {
|
||||
for (k = 2; k < argc; k++) {
|
||||
printf ("search for \"%s\"... ", argv[k]);
|
||||
par = ucl_object_find_key (obj, argv[k]);
|
||||
printf ("%sfound\n", (par == NULL )?"not ":"");
|
||||
ucl_obj_dump (par, 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ucl_obj_dump (obj, 0);
|
||||
}
|
||||
|
||||
end:
|
||||
if (parser != NULL) {
|
||||
ucl_parser_free (parser);
|
||||
}
|
||||
if (obj != NULL) {
|
||||
ucl_object_unref (obj);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
Copyright (c) 2006 Kirill Simonov
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,18 +0,0 @@
|
||||
## Run `./bootstrap` to generate the "Makefile.in" files in this directory and
|
||||
## the "$SUBDIRS" subdirectories.
|
||||
|
||||
SUBDIRS = include src . tests win32
|
||||
|
||||
EXTRA_DIST = README LICENSE doc/doxygen.cfg
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = yaml-0.1.pc
|
||||
|
||||
maintainer-clean-local:
|
||||
-rm -f aclocal.m4 config.h.in configure config/*
|
||||
-find ${builddir} -name Makefile.in -exec rm -f '{}' ';'
|
||||
|
||||
.PHONY: bootstrap
|
||||
bootstrap: maintainer-clean
|
||||
./bootstrap
|
||||
|
@ -1,782 +0,0 @@
|
||||
# Makefile.in generated by automake 1.11.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||
# Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(srcdir)/yaml-0.1.pc.in $(top_srcdir)/configure \
|
||||
config/config.guess config/config.sub config/depcomp \
|
||||
config/install-sh config/ltmain.sh config/missing
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = yaml-0.1.pc
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
|
||||
DATA = $(pkgconfig_DATA)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
distdir dist dist-all distcheck
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d "$(distdir)" \
|
||||
|| { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr "$(distdir)"; }; }
|
||||
am__relativize = \
|
||||
dir0=`pwd`; \
|
||||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||
sed_rest='s,^[^/]*/*,,'; \
|
||||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||
sed_butlast='s,/*[^/]*$$,,'; \
|
||||
while test -n "$$dir1"; do \
|
||||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||
if test "$$first" != "."; then \
|
||||
if test "$$first" = ".."; then \
|
||||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||
else \
|
||||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||
if test "$$first2" = "$$first"; then \
|
||||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||
else \
|
||||
dir2="../$$dir2"; \
|
||||
fi; \
|
||||
dir0="$$dir0"/"$$first"; \
|
||||
fi; \
|
||||
fi; \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DOXYGEN = @DOXYGEN@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
YAML_LT_AGE = @YAML_LT_AGE@
|
||||
YAML_LT_CURRENT = @YAML_LT_CURRENT@
|
||||
YAML_LT_RELEASE = @YAML_LT_RELEASE@
|
||||
YAML_LT_REVISION = @YAML_LT_REVISION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
lt_ECHO = @lt_ECHO@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = include src . tests win32
|
||||
EXTRA_DIST = README LICENSE doc/doxygen.cfg
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = yaml-0.1.pc
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
yaml-0.1.pc: $(top_builddir)/config.status $(srcdir)/yaml-0.1.pc.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
install-pkgconfigDATA: $(pkgconfig_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-pkgconfigDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
test -n "$$files" || exit 0; \
|
||||
echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
|
||||
cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||
$(am__relativize); \
|
||||
new_distdir=$$reldir; \
|
||||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||
$(am__relativize); \
|
||||
new_top_distdir=$$reldir; \
|
||||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||
($(am__cd) $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-lzma: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lzma*) \
|
||||
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@$(am__cd) '$(distuninstallcheck_dir)' \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(DATA) config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-pkgconfigDATA
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic \
|
||||
maintainer-clean-local
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-pkgconfigDATA
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
|
||||
ctags-recursive install-am install-strip tags-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am am--refresh check check-am clean clean-generic \
|
||||
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
|
||||
distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-pkgconfigDATA install-ps \
|
||||
install-ps-am install-strip installcheck installcheck-am \
|
||||
installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-local mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am \
|
||||
uninstall-pkgconfigDATA
|
||||
|
||||
|
||||
maintainer-clean-local:
|
||||
-rm -f aclocal.m4 config.h.in configure config/*
|
||||
-find ${builddir} -name Makefile.in -exec rm -f '{}' ';'
|
||||
|
||||
.PHONY: bootstrap
|
||||
bootstrap: maintainer-clean
|
||||
./bootstrap
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -1,27 +0,0 @@
|
||||
LibYAML - A C library for parsing and emitting YAML.
|
||||
|
||||
To build and install the library, run:
|
||||
$ ./configure
|
||||
$ make
|
||||
# make install
|
||||
|
||||
If you checked the source code from the Subversion repository, run
|
||||
$ ./bootstrap
|
||||
$ ./configure
|
||||
$ make
|
||||
# make install
|
||||
|
||||
For more information, check the LibYAML homepage:
|
||||
'http://pyyaml.org/wiki/LibYAML'.
|
||||
|
||||
Post your questions and opinions to the YAML-Core mailing list:
|
||||
'http://lists.sourceforge.net/lists/listinfo/yaml-core'.
|
||||
|
||||
Submit bug reports and feature requests to the LibYAML bug tracker:
|
||||
'http://pyyaml.org/newticket?component=libyaml'.
|
||||
|
||||
LibYAML is written by Kirill Simonov <xi@resolvent.net>. It is released
|
||||
under the MIT license. See the file LICENSE for more details.
|
||||
|
||||
This project is developed for Python Software Foundation as a part of
|
||||
Google Summer of Code under the mentorship of Clark Evans.
|
8917
contrib/libyaml/aclocal.m4
vendored
8917
contrib/libyaml/aclocal.m4
vendored
File diff suppressed because it is too large
Load Diff
@ -1,80 +0,0 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define the major version number. */
|
||||
#undef YAML_VERSION_MAJOR
|
||||
|
||||
/* Define the minor version number. */
|
||||
#undef YAML_VERSION_MINOR
|
||||
|
||||
/* Define the patch version number. */
|
||||
#undef YAML_VERSION_PATCH
|
||||
|
||||
/* Define the version string. */
|
||||
#undef YAML_VERSION_STRING
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
1502
contrib/libyaml/config/config.guess
vendored
1502
contrib/libyaml/config/config.guess
vendored
File diff suppressed because it is too large
Load Diff
1714
contrib/libyaml/config/config.sub
vendored
1714
contrib/libyaml/config/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,630 +0,0 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
|
||||
# Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u="sed s,\\\\\\\\,/,g"
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add `dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mechanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.o.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
tmpdepfile4=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
@ -1,520 +0,0 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dst_arg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
-*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test -z "$d" && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
@ -1,376 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
||||
# 2008, 2009 Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case $1 in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
# Exit code 63 means version mismatch. This often happens
|
||||
# when the user try to use an ancient version of a tool on
|
||||
# a file that requires a minimum version. In this case we
|
||||
# we should proceed has if the program had been absent, or
|
||||
# if --run hadn't been passed.
|
||||
if test $? = 63; then
|
||||
run=:
|
||||
msg="probably too old"
|
||||
fi
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
autom4te touch the output file, or create a stub one
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
||||
\`g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# normalize program name to check for.
|
||||
program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
# Now exit if we have it, but it failed. Also exit now if we
|
||||
# don't have it and --version was passed (most likely to detect
|
||||
# the program). This is about non-GNU programs, so use $1 not
|
||||
# $program.
|
||||
case $1 in
|
||||
lex*|yacc*)
|
||||
# Not GNU programs, they don't have --version.
|
||||
;;
|
||||
|
||||
tar*)
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||
# Could not run --version or --help. This is probably someone
|
||||
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||
# $TOOL exists and not knowing $TOOL uses missing.
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case $program in
|
||||
aclocal*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case $f in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, but is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison*|yacc*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' $msg. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG="\${$#}"
|
||||
case $LASTARG in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test ! -f y.tab.h; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if test ! -f y.tab.c; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex*|flex*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if test $# -ne 1; then
|
||||
eval LASTARG="\${$#}"
|
||||
case $LASTARG in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if test -f "$SRCFILE"; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if test ! -f lex.yy.c; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit $?
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
# The file to touch is that specified with -o ...
|
||||
file=`echo "$*" | sed -n "$sed_output"`
|
||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||
if test -z "$file"; then
|
||||
# ... or it is the one specified with @setfilename ...
|
||||
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '
|
||||
/^@setfilename/{
|
||||
s/.* \([^ ]*\) *$/\1/
|
||||
p
|
||||
q
|
||||
}' $infile`
|
||||
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||
fi
|
||||
# If the file does not exist, the user really needs makeinfo;
|
||||
# let's fail without touching anything.
|
||||
test -f $file || exit 1
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar*)
|
||||
shift
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar "$@" && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar "$@" && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case $firstarg in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case $firstarg in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequisites for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
13149
contrib/libyaml/configure
vendored
13149
contrib/libyaml/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -1,73 +0,0 @@
|
||||
# Run `./bootstrap` to generate the "configure" script.
|
||||
|
||||
# Define the package version numbers and the bug reporting link.
|
||||
m4_define([YAML_MAJOR], 0)
|
||||
m4_define([YAML_MINOR], 1)
|
||||
m4_define([YAML_PATCH], 4)
|
||||
m4_define([YAML_BUGS], [http://pyyaml.org/newticket?component=libyaml])
|
||||
|
||||
# Define the libtool version numbers; check the Autobook, Section 11.4.
|
||||
# Bump the libtool version numbers using the following algorithm:
|
||||
# if (the current interface has not been changed):
|
||||
# YAML_REVISION += 1
|
||||
# else:
|
||||
# YAML_REVISION = 0
|
||||
# YAML_CURRENT += 1
|
||||
# if (this release is backward compatible with the previous release):
|
||||
# YAML_AGE += 1
|
||||
# else:
|
||||
# YAML_AGE = 0
|
||||
m4_define([YAML_RELEASE], 0)
|
||||
m4_define([YAML_CURRENT], 2)
|
||||
m4_define([YAML_REVISION], 2)
|
||||
m4_define([YAML_AGE], 0)
|
||||
|
||||
# Initialize autoconf & automake.
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([yaml], [YAML_MAJOR.YAML_MINOR.YAML_PATCH], [YAML_BUGS])
|
||||
AC_CONFIG_AUX_DIR([config])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AM_INIT_AUTOMAKE([1.9 foreign])
|
||||
|
||||
# Define macro variables for the package version numbers.
|
||||
AC_DEFINE(YAML_VERSION_MAJOR, YAML_MAJOR, [Define the major version number.])
|
||||
AC_DEFINE(YAML_VERSION_MINOR, YAML_MINOR, [Define the minor version number.])
|
||||
AC_DEFINE(YAML_VERSION_PATCH, YAML_PATCH, [Define the patch version number.])
|
||||
AC_DEFINE(YAML_VERSION_STRING, "YAML_MAJOR.YAML_MINOR.YAML_PATCH", [Define the version string.])
|
||||
|
||||
# Define substitutions for the libtool version numbers.
|
||||
YAML_LT_RELEASE=YAML_RELEASE
|
||||
YAML_LT_CURRENT=YAML_CURRENT
|
||||
YAML_LT_REVISION=YAML_REVISION
|
||||
YAML_LT_AGE=YAML_AGE
|
||||
AC_SUBST(YAML_LT_RELEASE)
|
||||
AC_SUBST(YAML_LT_CURRENT)
|
||||
AC_SUBST(YAML_LT_REVISION)
|
||||
AC_SUBST(YAML_LT_AGE)
|
||||
|
||||
# Note: in order to update checks, run `autoscan` and look through "configure.scan".
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
AC_CHECK_PROG(DOXYGEN, [doxygen], [true], [false])
|
||||
AM_CONDITIONAL(DOXYGEN, [test "$DOXYGEN" = true])
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([stdlib.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_TYPE_SIZE_T
|
||||
|
||||
# Define Makefiles.
|
||||
AC_CONFIG_FILES([yaml-0.1.pc include/Makefile src/Makefile Makefile tests/Makefile win32/Makefile])
|
||||
|
||||
# Generate the "configure" script.
|
||||
AC_OUTPUT
|
@ -1,222 +0,0 @@
|
||||
# Doxyfile 1.4.4
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = $(PACKAGE)
|
||||
PROJECT_NUMBER = $(VERSION)
|
||||
OUTPUT_DIRECTORY = $(top_builddir)/doc/
|
||||
CREATE_SUBDIRS = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
USE_WINDOWS_ENCODING = NO
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF =
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = NO
|
||||
INHERIT_DOCS = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 8
|
||||
ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
SUBGROUPING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = NO
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_LOCAL_CLASSES = NO
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = NO
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_DIRECTORIES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT = $(top_srcdir)/include/
|
||||
FILE_PATTERNS = *.h
|
||||
RECURSIVE = YES
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS =
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = NO
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = NO
|
||||
REFERENCES_RELATION = NO
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = NO
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
DISABLE_INDEX = NO
|
||||
ENUM_VALUES_PER_LINE = 1
|
||||
GENERATE_TREEVIEW = NO
|
||||
TREEVIEW_WIDTH = 250
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4wide
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
PDF_HYPERLINKS = NO
|
||||
USE_PDFLATEX = NO
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_SCHEMA =
|
||||
XML_DTD =
|
||||
XML_PROGRAMLISTING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = YES
|
||||
EXPAND_ONLY_PREDEF = YES
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = "YAML_DECLARE(type)=type"
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = NO
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = NO
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = NO
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MAX_DOT_GRAPH_WIDTH = 1024
|
||||
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration::additions related to the search engine
|
||||
#---------------------------------------------------------------------------
|
||||
SEARCHENGINE = NO
|
@ -1,51 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Structures</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<h1>Data Structures</h1> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here are the data structures with brief descriptions:<table>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a></td><td class="indexvalue">This structure holds aliases data </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__document__s.html">yaml_document_s</a></td><td class="indexvalue">The document structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a></td><td class="indexvalue">The emitter structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__event__s.html">yaml_event_s</a></td><td class="indexvalue">The event structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a></td><td class="indexvalue">The pointer position </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a></td><td class="indexvalue">An element of a mapping node </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__node__s.html">yaml_node_s</a></td><td class="indexvalue">The node structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a></td><td class="indexvalue">The parser structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a></td><td class="indexvalue">This structure holds information about a potential simple key </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a></td><td class="indexvalue">The tag directive data </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__token__s.html">yaml_token_s</a></td><td class="indexvalue">The token structure </td></tr>
|
||||
<tr><td class="indexkey"><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a></td><td class="indexvalue">The version directive data </td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Before Width: | Height: | Size: 677 B |
@ -1,41 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Alphabetical List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<h1>Data Structure Index</h1> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
<div class="qindex"><a class="qindex" href="#letter_Y">Y</a></div>
|
||||
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr><td><a name="letter_Y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Y </div></td></tr></table>
|
||||
</td><td><a class="el" href="structyaml__emitter__s.html">yaml_emitter_s</a> </td><td><a class="el" href="structyaml__node__pair__s.html">yaml_node_pair_s</a> </td><td><a class="el" href="structyaml__simple__key__s.html">yaml_simple_key_s</a> </td><td><a class="el" href="structyaml__token__s.html">yaml_token_s</a> </td></tr><tr><td><a class="el" href="structyaml__alias__data__s.html">yaml_alias_data_s</a> </td><td><a class="el" href="structyaml__event__s.html">yaml_event_s</a> </td><td><a class="el" href="structyaml__node__s.html">yaml_node_s</a> </td><td><a class="el" href="structyaml__tag__directive__s.html">yaml_tag_directive_s</a> </td><td><a class="el" href="structyaml__version__directive__s.html">yaml_version_directive_s</a> </td></tr><tr><td><a class="el" href="structyaml__document__s.html">yaml_document_s</a> </td><td><a class="el" href="structyaml__mark__s.html">yaml_mark_s</a> </td><td><a class="el" href="structyaml__parser__s.html">yaml_parser_s</a> </td></tr></table><div class="qindex"><a class="qindex" href="#letter_Y">Y</a></div>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
Before Width: | Height: | Size: 126 B |
@ -1,656 +0,0 @@
|
||||
/* The standard CSS for doxygen */
|
||||
|
||||
body, table, div, p, dl {
|
||||
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* @group Heading Levels */
|
||||
|
||||
h1 {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.multicol {
|
||||
-moz-column-gap: 1em;
|
||||
-webkit-column-gap: 1em;
|
||||
-moz-column-count: 3;
|
||||
-webkit-column-count: 3;
|
||||
}
|
||||
|
||||
p.startli, p.startdd, p.starttd {
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
p.endli {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
p.enddd {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
p.endtd {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
caption {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.legend {
|
||||
font-size: 70%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3.version {
|
||||
font-size: 90%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.qindex, div.navtab{
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #A3B4D7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
div.qindex, div.navpath {
|
||||
width: 100%;
|
||||
line-height: 140%;
|
||||
}
|
||||
|
||||
div.navtab {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
/* @group Link Styling */
|
||||
|
||||
a {
|
||||
color: #3D578C;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.contents a:visited {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.qindex {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.qindexHL {
|
||||
font-weight: bold;
|
||||
background-color: #9CAFD4;
|
||||
color: #ffffff;
|
||||
border: 1px double #869DCA;
|
||||
}
|
||||
|
||||
.contents a.qindexHL:visited {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
a.el {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.elRef {
|
||||
}
|
||||
|
||||
a.code {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
a.codeRef {
|
||||
color: #4665A2;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
dl.el {
|
||||
margin-left: -1cm;
|
||||
}
|
||||
|
||||
.fragment {
|
||||
font-family: monospace, fixed;
|
||||
font-size: 105%;
|
||||
}
|
||||
|
||||
pre.fragment {
|
||||
border: 1px solid #C4CFE5;
|
||||
background-color: #FBFCFD;
|
||||
padding: 4px 6px;
|
||||
margin: 4px 8px 4px 2px;
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
font-size: 9pt;
|
||||
line-height: 125%;
|
||||
}
|
||||
|
||||
div.ah {
|
||||
background-color: black;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 3px;
|
||||
padding: 0.2em;
|
||||
border: solid thin #333;
|
||||
border-radius: 0.5em;
|
||||
-webkit-border-radius: .5em;
|
||||
-moz-border-radius: .5em;
|
||||
-webkit-box-shadow: 2px 2px 3px #999;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
|
||||
background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
|
||||
}
|
||||
|
||||
div.groupHeader {
|
||||
margin-left: 16px;
|
||||
margin-top: 12px;
|
||||
margin-bottom: 6px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.groupText {
|
||||
margin-left: 16px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
body {
|
||||
background: white;
|
||||
color: black;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.contents {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
td.indexkey {
|
||||
background-color: #EBEFF6;
|
||||
font-weight: bold;
|
||||
border: 1px solid #C4CFE5;
|
||||
margin: 2px 0px 2px 0;
|
||||
padding: 2px 10px;
|
||||
}
|
||||
|
||||
td.indexvalue {
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #C4CFE5;
|
||||
padding: 2px 10px;
|
||||
margin: 2px 0px;
|
||||
}
|
||||
|
||||
tr.memlist {
|
||||
background-color: #EEF1F7;
|
||||
}
|
||||
|
||||
p.formulaDsp {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
img.formulaDsp {
|
||||
|
||||
}
|
||||
|
||||
img.formulaInl {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.center {
|
||||
text-align: center;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
div.center img {
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
address.footer {
|
||||
text-align: right;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
img.footer {
|
||||
border: 0px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* @group Code Colorization */
|
||||
|
||||
span.keyword {
|
||||
color: #008000
|
||||
}
|
||||
|
||||
span.keywordtype {
|
||||
color: #604020
|
||||
}
|
||||
|
||||
span.keywordflow {
|
||||
color: #e08000
|
||||
}
|
||||
|
||||
span.comment {
|
||||
color: #800000
|
||||
}
|
||||
|
||||
span.preprocessor {
|
||||
color: #806020
|
||||
}
|
||||
|
||||
span.stringliteral {
|
||||
color: #002080
|
||||
}
|
||||
|
||||
span.charliteral {
|
||||
color: #008080
|
||||
}
|
||||
|
||||
span.vhdldigit {
|
||||
color: #ff00ff
|
||||
}
|
||||
|
||||
span.vhdlchar {
|
||||
color: #000000
|
||||
}
|
||||
|
||||
span.vhdlkeyword {
|
||||
color: #700070
|
||||
}
|
||||
|
||||
span.vhdllogic {
|
||||
color: #ff0000
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/*
|
||||
.search {
|
||||
color: #003399;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
form.search {
|
||||
margin-bottom: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
input.search {
|
||||
font-size: 75%;
|
||||
color: #000080;
|
||||
font-weight: normal;
|
||||
background-color: #e8eef2;
|
||||
}
|
||||
*/
|
||||
|
||||
td.tiny {
|
||||
font-size: 75%;
|
||||
}
|
||||
|
||||
.dirtab {
|
||||
padding: 4px;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #A3B4D7;
|
||||
}
|
||||
|
||||
th.dirtab {
|
||||
background: #EBEFF6;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
hr {
|
||||
height: 0px;
|
||||
border: none;
|
||||
border-top: 1px solid #4A6AAA;
|
||||
}
|
||||
|
||||
hr.footer {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
/* @group Member Descriptions */
|
||||
|
||||
table.memberdecls {
|
||||
border-spacing: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.mdescLeft, .mdescRight,
|
||||
.memItemLeft, .memItemRight,
|
||||
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
|
||||
background-color: #F9FAFC;
|
||||
border: none;
|
||||
margin: 4px;
|
||||
padding: 1px 0 0 8px;
|
||||
}
|
||||
|
||||
.mdescLeft, .mdescRight {
|
||||
padding: 0px 8px 4px 8px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.memItemLeft, .memItemRight, .memTemplParams {
|
||||
border-top: 1px solid #C4CFE5;
|
||||
}
|
||||
|
||||
.memItemLeft, .memTemplItemLeft {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.memTemplParams {
|
||||
color: #4665A2;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Member Details */
|
||||
|
||||
/* Styles for detailed member documentation */
|
||||
|
||||
.memtemplate {
|
||||
font-size: 80%;
|
||||
color: #4665A2;
|
||||
font-weight: normal;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.memnav {
|
||||
background-color: #EBEFF6;
|
||||
border: 1px solid #A3B4D7;
|
||||
text-align: center;
|
||||
margin: 2px;
|
||||
margin-right: 15px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.memitem {
|
||||
padding: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.memname {
|
||||
white-space: nowrap;
|
||||
font-weight: bold;
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
.memproto {
|
||||
border-top: 1px solid #A8B8D9;
|
||||
border-left: 1px solid #A8B8D9;
|
||||
border-right: 1px solid #A8B8D9;
|
||||
padding: 6px 0px 6px 0px;
|
||||
color: #253555;
|
||||
font-weight: bold;
|
||||
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
|
||||
/* firefox specific markup */
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
|
||||
-moz-border-radius-topright: 8px;
|
||||
-moz-border-radius-topleft: 8px;
|
||||
/* webkit specific markup */
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
-webkit-border-top-right-radius: 8px;
|
||||
-webkit-border-top-left-radius: 8px;
|
||||
background-image:url('nav_f.png');
|
||||
background-repeat:repeat-x;
|
||||
background-color: #E2E8F2;
|
||||
|
||||
}
|
||||
|
||||
.memdoc {
|
||||
border-bottom: 1px solid #A8B8D9;
|
||||
border-left: 1px solid #A8B8D9;
|
||||
border-right: 1px solid #A8B8D9;
|
||||
padding: 2px 5px;
|
||||
background-color: #FBFCFD;
|
||||
border-top-width: 0;
|
||||
/* firefox specific markup */
|
||||
-moz-border-radius-bottomleft: 8px;
|
||||
-moz-border-radius-bottomright: 8px;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
|
||||
background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
|
||||
/* webkit specific markup */
|
||||
-webkit-border-bottom-left-radius: 8px;
|
||||
-webkit-border-bottom-right-radius: 8px;
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
|
||||
}
|
||||
|
||||
.paramkey {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.paramtype {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.paramname {
|
||||
color: #602020;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.paramname em {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group Directory (tree) */
|
||||
|
||||
/* for the tree view */
|
||||
|
||||
.ftvtree {
|
||||
font-family: sans-serif;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* these are for tree view when used as main index */
|
||||
|
||||
.directory {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.directory h3 {
|
||||
margin: 0px;
|
||||
margin-top: 1em;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
/*
|
||||
The following two styles can be used to replace the root node title
|
||||
with an image of your choice. Simply uncomment the next two styles,
|
||||
specify the name of your image and be sure to set 'height' to the
|
||||
proper pixel height of your image.
|
||||
*/
|
||||
|
||||
/*
|
||||
.directory h3.swap {
|
||||
height: 61px;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("yourimage.gif");
|
||||
}
|
||||
.directory h3.swap span {
|
||||
display: none;
|
||||
}
|
||||
*/
|
||||
|
||||
.directory > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.directory p {
|
||||
margin: 0px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.directory div {
|
||||
display: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.directory img {
|
||||
vertical-align: -30%;
|
||||
}
|
||||
|
||||
/* these are for tree view when not used as main index */
|
||||
|
||||
.directory-alt {
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.directory-alt h3 {
|
||||
margin: 0px;
|
||||
margin-top: 1em;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
.directory-alt > h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.directory-alt p {
|
||||
margin: 0px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.directory-alt div {
|
||||
display: none;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.directory-alt img {
|
||||
vertical-align: -30%;
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
div.dynheader {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
address {
|
||||
font-style: normal;
|
||||
color: #2A3D61;
|
||||
}
|
||||
|
||||
table.doxtable {
|
||||
border-collapse:collapse;
|
||||
}
|
||||
|
||||
table.doxtable td, table.doxtable th {
|
||||
border: 1px solid #2D4068;
|
||||
padding: 3px 7px 2px;
|
||||
}
|
||||
|
||||
table.doxtable th {
|
||||
background-color: #374F7F;
|
||||
color: #FFFFFF;
|
||||
font-size: 110%;
|
||||
padding-bottom: 4px;
|
||||
padding-top: 5px;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.tabsearch {
|
||||
top: 0px;
|
||||
left: 10px;
|
||||
height: 36px;
|
||||
background-image: url('tab_b.png');
|
||||
z-index: 101;
|
||||
overflow: hidden;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.navpath ul
|
||||
{
|
||||
font-size: 11px;
|
||||
background-image:url('tab_b.png');
|
||||
background-repeat:repeat-x;
|
||||
height:30px;
|
||||
line-height:30px;
|
||||
color:#8AA0CC;
|
||||
border:solid 1px #C2CDE4;
|
||||
overflow:hidden;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
.navpath li
|
||||
{
|
||||
list-style-type:none;
|
||||
float:left;
|
||||
padding-left:10px;
|
||||
padding-right: 15px;
|
||||
background-image:url('bc_s.png');
|
||||
background-repeat:no-repeat;
|
||||
background-position:right;
|
||||
color:#364D7C;
|
||||
}
|
||||
|
||||
.navpath a
|
||||
{
|
||||
height:32px;
|
||||
display:block;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.navpath a:hover
|
||||
{
|
||||
color:#6884BD;
|
||||
}
|
||||
|
||||
div.summary
|
||||
{
|
||||
float: right;
|
||||
font-size: 8pt;
|
||||
padding-right: 5px;
|
||||
width: 50%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.summary a
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.header
|
||||
{
|
||||
background-image:url('nav_h.png');
|
||||
background-repeat:repeat-x;
|
||||
background-color: #F9FAFC;
|
||||
margin: 0px;
|
||||
border-bottom: 1px solid #C4CFE5;
|
||||
}
|
||||
|
||||
div.headertitle
|
||||
{
|
||||
padding: 5px 5px 5px 10px;
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.8 KiB |
@ -1,40 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: File Index</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="files.html"><span>File List</span></a></li>
|
||||
<li><a href="globals.html"><span>Globals</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<h1>File List</h1> </div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented files with brief descriptions:<table>
|
||||
<tr><td class="indexkey"><a class="el" href="yaml_8h.html">yaml.h</a></td><td class="indexvalue">Public interface for libyaml </td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:01 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,91 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
|
||||
<li>alias
|
||||
: <a class="el" href="structyaml__token__s.html#a1f942353efa1972a38a0763afefabe0c">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#ac21f0f1e12207b8fd4f02496259f6c0b">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a1129c6f9ae5cd3b437b8ab8767324f03">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>aliases
|
||||
: <a class="el" href="structyaml__parser__s.html#a0c10698207d727f9e5d9ced627d130ef">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>anchor
|
||||
: <a class="el" href="structyaml__emitter__s.html#a6f2882bde71e478e29dc5b293def8739">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__alias__data__s.html#ac4b9a352dd8ff747bfa63a54832d7962">yaml_alias_data_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#acc0f6636995f5fe332604b74571e6cfa">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#aaa97ab683d28e5f611042d0fbd929125">yaml_event_s</a>
|
||||
</li>
|
||||
<li>anchor_data
|
||||
: <a class="el" href="structyaml__emitter__s.html#ad8883d967ee02e3e15e58bc2533188cc">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>anchor_length
|
||||
: <a class="el" href="structyaml__emitter__s.html#aece73cc234475630032b1c75a735eeb5">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>anchors
|
||||
: <a class="el" href="structyaml__emitter__s.html#ad4e7a72cb8b1b67373ba6d76a5229e6b">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
|
||||
<li>best_indent
|
||||
: <a class="el" href="structyaml__emitter__s.html#a33545f8924be89daf8b81dc905d558c0">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>best_width
|
||||
: <a class="el" href="structyaml__emitter__s.html#a56dde6b352bdf7d4031f89d2b5d704f6">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>block_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a64e05972897d02f606627ef0cf3c7420">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>block_plain_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a5b5f6c9d687d788c8dac86d213ef4c16">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>buffer
|
||||
: <a class="el" href="structyaml__emitter__s.html#afb2700e9b866b5be0ff6c7549c719f81">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#afc56b6252bd75ec87edec5c80a5c733e">yaml_parser_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
|
||||
<li>canonical
|
||||
: <a class="el" href="structyaml__emitter__s.html#acb0259cdc5e2bb23faaf7266496df827">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>closed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a978d894a219686d31d971899e31910cd">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>column
|
||||
: <a class="el" href="structyaml__emitter__s.html#a678fbbacad5d1f3f9bb7516282888b8a">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__mark__s.html#aaa18357a6fb2bb377b969ce9ff589797">yaml_mark_s</a>
|
||||
</li>
|
||||
<li>context
|
||||
: <a class="el" href="structyaml__parser__s.html#a6779b67a23bbf7c401e4257d5875ae6b">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>context_mark
|
||||
: <a class="el" href="structyaml__parser__s.html#ace259eec6e570f94b98b252e1a632e88">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>current
|
||||
: <a class="el" href="structyaml__parser__s.html#a3406d2ba7e969c09344d4ced8c855007">yaml_parser_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
|
||||
<li>data
|
||||
: <a class="el" href="structyaml__token__s.html#aedb5be9b6b8f5ef6c129575e84f63605">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a0b8f9cce08e49459e4bab89035dbf6c6">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a7e1be921e921f2d0911e450a063b1344">yaml_node_s</a>
|
||||
</li>
|
||||
<li>document
|
||||
: <a class="el" href="structyaml__emitter__s.html#af9cc8801cc9b46a4f45255c67a1574a7">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#ac3dad5822f49d86cfddc2e5e415a158c">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>document_end
|
||||
: <a class="el" href="structyaml__event__s.html#acffec5f24c01bb6bfb0c93a9bf1a803e">yaml_event_s</a>
|
||||
</li>
|
||||
<li>document_start
|
||||
: <a class="el" href="structyaml__event__s.html#aed593fadbeb898d6d90b0c62522a82cc">yaml_event_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,110 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
|
||||
<li>encoding
|
||||
: <a class="el" href="structyaml__token__s.html#aab75b9cb91438e0e1efe2522652cf478">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a92139ba6ae79089fd9a2f5f4aeaf733f">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ada17f19fa6248d6ee493684b03700857">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a4f062e9d1fb1082bbf3996e46214905a">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>end
|
||||
: <a class="el" href="structyaml__document__s.html#adc9ffcca86a2684362428da69ffd3dea">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a211a0aedc964ba8cd07cb7875faa464b">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#af14fd1a6c1fd10088391f07349ba55e8">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aa7fdc1ff8342636119934ac824a2ecc8">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a3b28127063323de1d88fc18cdb6adf8a">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a115b4a9797f3a72cd78d42c85100317c">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a55703a15e71c6b9551a2f4feb888bdcb">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6ff1f802eb95bc45f13e8e73ec009828">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#ac9b3d891f9fcd5462289823716deca0e">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aa768a9c29ae2c3015fdb84ea313844e2">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a6669a94bc18247491e59c709852be0d1">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a41594b6495f4d31edb977cafb8cbaf78">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a1827ba7f3e7f7e94171fa20ade25345d">yaml_node_s</a>
|
||||
</li>
|
||||
<li>end_implicit
|
||||
: <a class="el" href="structyaml__document__s.html#a59de90b4078659fd0f49377929afcac1">yaml_document_s</a>
|
||||
</li>
|
||||
<li>end_mark
|
||||
: <a class="el" href="structyaml__event__s.html#a9307f91473094c229738b03d223bc4ba">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a63144671fd16f94f72c6d537360f7328">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a97f08b38dfb0a5be26ef8831864a5311">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#a9299efdaadf764f4d03641a3ee51e0d0">yaml_document_s</a>
|
||||
</li>
|
||||
<li>eof
|
||||
: <a class="el" href="structyaml__parser__s.html#a6129a99d45aee14ec705aa54dbb493b7">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>error
|
||||
: <a class="el" href="structyaml__emitter__s.html#afa2d6367a86ae6d43df14e24479bb0a7">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6c5c3488ff22c8a4d234ca8587fa1472">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>events
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3516b49eb7579e422750a94a9d7c1700">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,79 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
|
||||
<li>file
|
||||
: <a class="el" href="structyaml__parser__s.html#ae69c2974e3c4c37e941a0e1971be15a9">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#abfe1e82cd5c4a180b1468e65ccfd1c61">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>flow_level
|
||||
: <a class="el" href="structyaml__emitter__s.html#a50f8e97c4290b83ebd646b4c4f5c5de9">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6a4bbbd3f58533e0969b7218c1e73fd4">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>flow_plain_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#afd8496f5bb995bb5aacc349fd6b45bf5">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
|
||||
<li>handle
|
||||
: <a class="el" href="structyaml__tag__directive__s.html#a9934c62f2b18fd087a95af25c7739490">yaml_tag_directive_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a01665687653c945a6666dd9debaecd65">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a7f043a9092eef2d644cc8f1180386239">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>handle_length
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3552cece6908f99518205e8cbe2c793a">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>head
|
||||
: <a class="el" href="structyaml__parser__s.html#aa1c7a1248ca22159a3e60ba45b386507">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a547dfd20576006e606ffb0d8042b4234">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,92 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
|
||||
<li>implicit
|
||||
: <a class="el" href="structyaml__event__s.html#a3cbb10e276d55890ee2fa802dd6290e1">yaml_event_s</a>
|
||||
</li>
|
||||
<li>indent
|
||||
: <a class="el" href="structyaml__parser__s.html#abad00703b649df32ee0d7b00b2f10403">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a93a73494a5d62464a67cc71f86ad9728">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>indention
|
||||
: <a class="el" href="structyaml__emitter__s.html#a407de8ff950b16b4254a381d4e5cea42">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>indents
|
||||
: <a class="el" href="structyaml__parser__s.html#a2e29feac36a89f644d9640d44df62b74">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ad31c591593ccb78e6b04887bf4f162c8">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>index
|
||||
: <a class="el" href="structyaml__mark__s.html#a525306fb424a79f0b0d5a7d3990aa596">yaml_mark_s</a>
|
||||
, <a class="el" href="structyaml__alias__data__s.html#ac45e17508386dec9163b4aa5cfb5312e">yaml_alias_data_s</a>
|
||||
</li>
|
||||
<li>input
|
||||
: <a class="el" href="structyaml__parser__s.html#ae800ef7fd42ad8bcbb69b116da3a7f53">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>items
|
||||
: <a class="el" href="structyaml__node__s.html#a6b340541cc012ac5aacdcaa46ced097a">yaml_node_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li class="current"><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
|
||||
<li>key
|
||||
: <a class="el" href="structyaml__node__pair__s.html#ac83746eb40b6b3a84f6da3143658ed4e">yaml_node_pair_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,88 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
|
||||
<li>last
|
||||
: <a class="el" href="structyaml__parser__s.html#aea4d8da24939825b2fadd368a71ec7de">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ad0c5410fff4602266a0c6e0af730dd70">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>last_anchor_id
|
||||
: <a class="el" href="structyaml__emitter__s.html#a0cede830c77a15df7f1b73b9023d2d11">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>length
|
||||
: <a class="el" href="structyaml__emitter__s.html#a4f72d57ad020803803e78922ecdec580">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a15618ee917746d28d97ad8eb9639e141">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#ad90dd9926d9debbaa48eb5339bd9fc36">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a06e51daf74cf78103e00608c3c9132e2">yaml_token_s</a>
|
||||
</li>
|
||||
<li>line
|
||||
: <a class="el" href="structyaml__mark__s.html#a55952e426fc8a5f180a5e9c907ca926c">yaml_mark_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a4fe9295608f19a687e41ec3661383e88">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>line_break
|
||||
: <a class="el" href="structyaml__emitter__s.html#a84c1b884d805588495067ee98a8e7c50">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,96 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
|
||||
<li>major
|
||||
: <a class="el" href="structyaml__version__directive__s.html#ad27326ff94b7772027c3009d1dd5e52b">yaml_version_directive_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#aac2ed466afd0390872774238dfcd152c">yaml_token_s</a>
|
||||
</li>
|
||||
<li>mapping
|
||||
: <a class="el" href="structyaml__node__s.html#ab18dc5c573885a08a92e113dcb7fb361">yaml_node_s</a>
|
||||
</li>
|
||||
<li>mapping_context
|
||||
: <a class="el" href="structyaml__emitter__s.html#a5a7527d8da86b28d95ff18b29f9d82f0">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>mapping_start
|
||||
: <a class="el" href="structyaml__event__s.html#a361b28413783f92797e6bfe03e9abaa1">yaml_event_s</a>
|
||||
</li>
|
||||
<li>mark
|
||||
: <a class="el" href="structyaml__parser__s.html#aaeeb58dc348e6e6f89d6a7c8fea8f734">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__alias__data__s.html#a9f8d87255bfc39df69068ed87b602e9f">yaml_alias_data_s</a>
|
||||
, <a class="el" href="structyaml__simple__key__s.html#ad0f5dd11cbf2e4d6d81376511e2b6dfb">yaml_simple_key_s</a>
|
||||
</li>
|
||||
<li>marks
|
||||
: <a class="el" href="structyaml__parser__s.html#ad78837ae36e35d523e02c43d1ae3f30e">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>minor
|
||||
: <a class="el" href="structyaml__version__directive__s.html#a89f074113501e6e150503f34b046dbd1">yaml_version_directive_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a97b9f537b24e8413e9fddc6a4b183d30">yaml_token_s</a>
|
||||
</li>
|
||||
<li>multiline
|
||||
: <a class="el" href="structyaml__emitter__s.html#a363a1aaaf512433ee7eab3083428cc70">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
|
||||
<li>nodes
|
||||
: <a class="el" href="structyaml__document__s.html#aa9eeab76b69cc84a6ab1b02c14cfd594">yaml_document_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
|
||||
<li>offset
|
||||
: <a class="el" href="structyaml__parser__s.html#a04a7ba684ce49b2300c236c561439b13">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>open_ended
|
||||
: <a class="el" href="structyaml__emitter__s.html#a65e84454b702622c41a068768c144c51">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>opened
|
||||
: <a class="el" href="structyaml__emitter__s.html#a0234d7e9bfbe7cc6e12b60f90f5ec552">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>output
|
||||
: <a class="el" href="structyaml__emitter__s.html#aa975acf559cc87d79abdb732c994f56f">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,100 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
|
||||
<li>pairs
|
||||
: <a class="el" href="structyaml__node__s.html#a830a080bbed021eb230ef644e4680909">yaml_node_s</a>
|
||||
</li>
|
||||
<li>plain_implicit
|
||||
: <a class="el" href="structyaml__event__s.html#ac3600acbcc6b4787f1ec3511976a3151">yaml_event_s</a>
|
||||
</li>
|
||||
<li>pointer
|
||||
: <a class="el" href="structyaml__parser__s.html#abea626790abfbcaeeb72a3772dc69e43">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a7615ab51145234f467984f3091558852">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a8199466e3578374b3f984b6c0c4e2ae4">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#aed9370f42cea4dff82f96839ce760b5a">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>possible
|
||||
: <a class="el" href="structyaml__simple__key__s.html#aad311b0fa599db04657a5177ec331f07">yaml_simple_key_s</a>
|
||||
</li>
|
||||
<li>prefix
|
||||
: <a class="el" href="structyaml__tag__directive__s.html#a514850fefaafbe65b2322da8c193a896">yaml_tag_directive_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a561b3730b9999cfe1010e77aca49c5b8">yaml_token_s</a>
|
||||
</li>
|
||||
<li>problem
|
||||
: <a class="el" href="structyaml__parser__s.html#a3dd8a43294cd420a433595a7a7d6e73d">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ae076ef7c85ae107a2233dd4206577800">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>problem_mark
|
||||
: <a class="el" href="structyaml__parser__s.html#a595b5412d39a4a9e441e5ad34fb059d9">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>problem_offset
|
||||
: <a class="el" href="structyaml__parser__s.html#ae2d62a2ad45671c6dd89e18fb7c1c5bd">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>problem_value
|
||||
: <a class="el" href="structyaml__parser__s.html#a8694691b20824f6595873b728cb3bc0f">yaml_parser_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li class="current"><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
|
||||
<li>quoted_implicit
|
||||
: <a class="el" href="structyaml__event__s.html#a9ce2441d08d9cf6a1bf9f28f5ee17f68">yaml_event_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
|
||||
<li>raw_buffer
|
||||
: <a class="el" href="structyaml__parser__s.html#ae3e8481ceabdbf6796a7dc6265f740ac">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a6eeffbc9cd5beb89b679740b7f1d6d09">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>read_handler
|
||||
: <a class="el" href="structyaml__parser__s.html#a8c3af47a7a0750d437cba34699fcad30">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>read_handler_data
|
||||
: <a class="el" href="structyaml__parser__s.html#a11f265cd495e814c8ee7d3dd78ff2ca9">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>references
|
||||
: <a class="el" href="structyaml__emitter__s.html#a8f00c3c08e0d87bab11e91a4464a50bc">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>required
|
||||
: <a class="el" href="structyaml__simple__key__s.html#acacccea26520e74c4c61f170fdcbb4c3">yaml_simple_key_s</a>
|
||||
</li>
|
||||
<li>root_context
|
||||
: <a class="el" href="structyaml__emitter__s.html#a70fb5f09cc60de989fbec2868f4db19e">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,163 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
|
||||
<li>scalar
|
||||
: <a class="el" href="structyaml__token__s.html#a35e3629351176dd91b38cbfc827a8b00">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a3753b4c5d10040d75f7c7f4b56c42549">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a688583a2649848aed700d7e07d9efac9">yaml_node_s</a>
|
||||
</li>
|
||||
<li>scalar_data
|
||||
: <a class="el" href="structyaml__emitter__s.html#ac3f80f4cb9c361b5fa4fa8f5cc04dbac">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>sequence
|
||||
: <a class="el" href="structyaml__node__s.html#afe215962139fac93b965cc2acd71452b">yaml_node_s</a>
|
||||
</li>
|
||||
<li>sequence_context
|
||||
: <a class="el" href="structyaml__emitter__s.html#a9d20d55b0914ff81bf0f56e57ca7416e">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>sequence_start
|
||||
: <a class="el" href="structyaml__event__s.html#a632895e022fbf29ab24a816893a8580f">yaml_event_s</a>
|
||||
</li>
|
||||
<li>serialized
|
||||
: <a class="el" href="structyaml__emitter__s.html#a6c3e98c02ffae879717b3d09f9458936">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>simple_key_allowed
|
||||
: <a class="el" href="structyaml__parser__s.html#acc85a7bfddc7ae9114cf115e43c89126">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>simple_key_context
|
||||
: <a class="el" href="structyaml__emitter__s.html#acc0db69cdae44c1385bbb2b6c207371b">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>simple_keys
|
||||
: <a class="el" href="structyaml__parser__s.html#ad5ce7de476c58fb6e1fdabbcc1c51659">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>single_quoted_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3729ff7e7add06a1a1d9067a557a59fc">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>size
|
||||
: <a class="el" href="structyaml__emitter__s.html#a53bdc6a00632b48c81098aad91a9fd8d">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>size_written
|
||||
: <a class="el" href="structyaml__emitter__s.html#a1851639b8f0e53b8e272c806d9fb648b">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>start
|
||||
: <a class="el" href="structyaml__node__s.html#a2e1001a0a7b068d4b2543a93d4cf60d4">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ad68af21e510adcfc2db43b31e791efe1">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a82afddfe1cf7f1a346d931ad4896d3de">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a28ec8053132a8e7cf29df983835754b7">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#aa3f9a11d8fbe4ac2eada1786176bab89">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a8cdb2fed4bb17b1d62d29fa06c53fef6">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ae8913d3c0bf4c987dc452efee2c802e3">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#ab9eddd3a112c3a4547bf87f6936aba94">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a74d7f521a559305585009ab503bee16b">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a1c8f40a58f0a3061449b3fed02be145e">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>start_implicit
|
||||
: <a class="el" href="structyaml__document__s.html#a65c49e4f61ca5c2f6ecf410e1cc65787">yaml_document_s</a>
|
||||
</li>
|
||||
<li>start_mark
|
||||
: <a class="el" href="structyaml__token__s.html#abdc5f4f2059c5a7bfe8e810b49a53980">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#aeaf86eb588e75232e1b73e8213eb3e31">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#a0a37311ebf8f6637e4bc1d280a879997">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#ac17afa3b3a9ff4703bb4983163bfae5c">yaml_node_s</a>
|
||||
</li>
|
||||
<li>state
|
||||
: <a class="el" href="structyaml__parser__s.html#a069d39cdf587ac2188e69d8fb018be64">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a29f1d4f27ff9b9616c154f0730dd24ee">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>states
|
||||
: <a class="el" href="structyaml__parser__s.html#a57aa3c5fbfcaed8c17e046f0778c92bf">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a6dc87fbd5b074507e102b967492b135d">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>stream_end_produced
|
||||
: <a class="el" href="structyaml__parser__s.html#a63ccf04d623f36c04b62cfd1fc6fccb5">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>stream_start
|
||||
: <a class="el" href="structyaml__token__s.html#aab66b62f4507f4fd0e9d2b7548f588e6">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a18946df9b7c815dd7fb30103c02a9e24">yaml_event_s</a>
|
||||
</li>
|
||||
<li>stream_start_produced
|
||||
: <a class="el" href="structyaml__parser__s.html#a7fecde5abcce11406c271f7db08f7a05">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>string
|
||||
: <a class="el" href="structyaml__emitter__s.html#a8803fe1047e8bcea9bdfcad0743fa0dd">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a44fa7ca68030680244f3743ce5e35702">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>style
|
||||
: <a class="el" href="structyaml__node__s.html#a362960375516e77a130c412ef10ef55d">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a2ac1305583a8e7e2247738116bca6b3b">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#acd1e83d220103aa24577038cfb1c2d21">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a530a8c4d78feaf5496fb9f461674382b">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a5b80d97f64e2867927404fedb65949c6">yaml_node_s</a>
|
||||
</li>
|
||||
<li>suffix
|
||||
: <a class="el" href="structyaml__token__s.html#a61344c49b73da5821cb06cab4cbab505">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ad9b61d5e9e05a47b2f873342ab226188">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>suffix_length
|
||||
: <a class="el" href="structyaml__emitter__s.html#ad83936bbd4b6b77c79555c71cccc8fb5">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,115 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li class="current"><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
|
||||
<li>tag
|
||||
: <a class="el" href="structyaml__token__s.html#ab281db5b7563c5489726768fe0fbaac7">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a4daf9ed2683d79f2be7e89ca7d06801c">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#aa753358ea6d9d221b7b188832d47fefa">yaml_node_s</a>
|
||||
</li>
|
||||
<li>tag_data
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3b947fbbc337d123af10c58abf1353a4">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>tag_directive
|
||||
: <a class="el" href="structyaml__token__s.html#aa8a1b9eeee539233e8461773894f4ea0">yaml_token_s</a>
|
||||
</li>
|
||||
<li>tag_directives
|
||||
: <a class="el" href="structyaml__parser__s.html#a9bdfc1888d4e30ffb43146377d44fba0">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a9dc51f2ccb8a517e2dc029e1af960258">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a162ce89a77e706d68649d40e1a520e1f">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#af1e09d0469fc24106f3790b1e3de09e1">yaml_document_s</a>
|
||||
</li>
|
||||
<li>tail
|
||||
: <a class="el" href="structyaml__parser__s.html#a22ad26583d8d1264e982188358aa79b6">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#acafa1e3cb872fa7917217469659fb273">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>token_number
|
||||
: <a class="el" href="structyaml__simple__key__s.html#ae098916893ad7415c5c041dd45d24a86">yaml_simple_key_s</a>
|
||||
</li>
|
||||
<li>tokens
|
||||
: <a class="el" href="structyaml__parser__s.html#a96d39b8333411d741ee1c13aa4141682">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>tokens_parsed
|
||||
: <a class="el" href="structyaml__parser__s.html#a7358e72ad071fec3185a833a3a245690">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>top
|
||||
: <a class="el" href="structyaml__emitter__s.html#a5779bcbfd04df64e42434b7599332d11">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a510326726569a06a11119f12649787cf">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a24a3f3138b44de1914a3e54dbe0aeff7">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#aa420f88720907fe02b1d1595c9351d59">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#a5ac36f59c4a0f28124c2e1630ca4f227">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a490eddbfcc27787e47de631a3d2e09a8">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a8e3f468d814d2aa5e074f7da1648d34a">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#ab2678112fd2eaa8f588f2d6217aabc9d">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#aafa8b6f21022ce2f4cb9b44ad15a535e">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#ae610673669f06d46146198a346796276">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>type
|
||||
: <a class="el" href="structyaml__token__s.html#aa8aeb89e2e74f5e2f199484177d0ea14">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#aff08bc3df4859d5b3a804e8c011cac51">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a1db4ea72e13be65ec42339ce47d19669">yaml_node_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,71 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li class="current"><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
|
||||
<li>unicode
|
||||
: <a class="el" href="structyaml__emitter__s.html#a76372a2413f71a5b36bf77a58d8f5d40">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
|
||||
<li>value
|
||||
: <a class="el" href="structyaml__token__s.html#a97ce52329d6093b63fba36817f8bd549">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a23436bdddb447d0fc217bab5c5b04a36">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a0d444412a29609d62699267ae72f971d">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a20246ec76d64854ff93629cf1b424d86">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__node__pair__s.html#a56c1de2c11d509462d1bf03803bb8ab1">yaml_node_pair_s</a>
|
||||
</li>
|
||||
<li>version_directive
|
||||
: <a class="el" href="structyaml__document__s.html#a7d36862d070804b8bedb53866487ac6d">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a5cef7981358ecefdf9d4780b3eacd39b">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a41b30a59ca22d1020d6af4cc7cc0da47">yaml_token_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions.html"><span>All</span></a></li>
|
||||
<li><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li class="current"><a href="functions_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
|
||||
|
||||
<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
|
||||
<li>whitespace
|
||||
: <a class="el" href="structyaml__emitter__s.html#a160ed0cf1cc6116b65772d14ced2d867">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>write_handler
|
||||
: <a class="el" href="structyaml__emitter__s.html#aefa7e29ba8042ed1d133a02bb368ea3e">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>write_handler_data
|
||||
: <a class="el" href="structyaml__emitter__s.html#a6c4fe0176b69da64ac1ddc7e091967e5">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,91 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li class="current"><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
|
||||
<li>alias
|
||||
: <a class="el" href="structyaml__token__s.html#a1f942353efa1972a38a0763afefabe0c">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#ac21f0f1e12207b8fd4f02496259f6c0b">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a1129c6f9ae5cd3b437b8ab8767324f03">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>aliases
|
||||
: <a class="el" href="structyaml__parser__s.html#a0c10698207d727f9e5d9ced627d130ef">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>anchor
|
||||
: <a class="el" href="structyaml__emitter__s.html#a6f2882bde71e478e29dc5b293def8739">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__alias__data__s.html#ac4b9a352dd8ff747bfa63a54832d7962">yaml_alias_data_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#acc0f6636995f5fe332604b74571e6cfa">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#aaa97ab683d28e5f611042d0fbd929125">yaml_event_s</a>
|
||||
</li>
|
||||
<li>anchor_data
|
||||
: <a class="el" href="structyaml__emitter__s.html#ad8883d967ee02e3e15e58bc2533188cc">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>anchor_length
|
||||
: <a class="el" href="structyaml__emitter__s.html#aece73cc234475630032b1c75a735eeb5">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>anchors
|
||||
: <a class="el" href="structyaml__emitter__s.html#ad4e7a72cb8b1b67373ba6d76a5229e6b">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
|
||||
<li>best_indent
|
||||
: <a class="el" href="structyaml__emitter__s.html#a33545f8924be89daf8b81dc905d558c0">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>best_width
|
||||
: <a class="el" href="structyaml__emitter__s.html#a56dde6b352bdf7d4031f89d2b5d704f6">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>block_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a64e05972897d02f606627ef0cf3c7420">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>block_plain_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a5b5f6c9d687d788c8dac86d213ef4c16">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>buffer
|
||||
: <a class="el" href="structyaml__emitter__s.html#afb2700e9b866b5be0ff6c7549c719f81">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#afc56b6252bd75ec87edec5c80a5c733e">yaml_parser_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
|
||||
<li>canonical
|
||||
: <a class="el" href="structyaml__emitter__s.html#acb0259cdc5e2bb23faaf7266496df827">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>closed
|
||||
: <a class="el" href="structyaml__emitter__s.html#a978d894a219686d31d971899e31910cd">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>column
|
||||
: <a class="el" href="structyaml__emitter__s.html#a678fbbacad5d1f3f9bb7516282888b8a">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__mark__s.html#aaa18357a6fb2bb377b969ce9ff589797">yaml_mark_s</a>
|
||||
</li>
|
||||
<li>context
|
||||
: <a class="el" href="structyaml__parser__s.html#a6779b67a23bbf7c401e4257d5875ae6b">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>context_mark
|
||||
: <a class="el" href="structyaml__parser__s.html#ace259eec6e570f94b98b252e1a632e88">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>current
|
||||
: <a class="el" href="structyaml__parser__s.html#a3406d2ba7e969c09344d4ced8c855007">yaml_parser_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
|
||||
<li>data
|
||||
: <a class="el" href="structyaml__token__s.html#aedb5be9b6b8f5ef6c129575e84f63605">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a0b8f9cce08e49459e4bab89035dbf6c6">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a7e1be921e921f2d0911e450a063b1344">yaml_node_s</a>
|
||||
</li>
|
||||
<li>document
|
||||
: <a class="el" href="structyaml__emitter__s.html#af9cc8801cc9b46a4f45255c67a1574a7">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#ac3dad5822f49d86cfddc2e5e415a158c">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>document_end
|
||||
: <a class="el" href="structyaml__event__s.html#acffec5f24c01bb6bfb0c93a9bf1a803e">yaml_event_s</a>
|
||||
</li>
|
||||
<li>document_start
|
||||
: <a class="el" href="structyaml__event__s.html#aed593fadbeb898d6d90b0c62522a82cc">yaml_event_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,110 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
|
||||
<li>encoding
|
||||
: <a class="el" href="structyaml__token__s.html#aab75b9cb91438e0e1efe2522652cf478">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a92139ba6ae79089fd9a2f5f4aeaf733f">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ada17f19fa6248d6ee493684b03700857">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a4f062e9d1fb1082bbf3996e46214905a">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>end
|
||||
: <a class="el" href="structyaml__document__s.html#adc9ffcca86a2684362428da69ffd3dea">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a211a0aedc964ba8cd07cb7875faa464b">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#af14fd1a6c1fd10088391f07349ba55e8">yaml_document_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aa7fdc1ff8342636119934ac824a2ecc8">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a3b28127063323de1d88fc18cdb6adf8a">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__event__s.html#a115b4a9797f3a72cd78d42c85100317c">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a55703a15e71c6b9551a2f4feb888bdcb">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aad74ffeb7f2eef0a12e34b0aac263ff3">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a42285849529f1b0eb9f4aac2eaef5204">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6ff1f802eb95bc45f13e8e73ec009828">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#ac9b3d891f9fcd5462289823716deca0e">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#aa768a9c29ae2c3015fdb84ea313844e2">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a6669a94bc18247491e59c709852be0d1">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a41594b6495f4d31edb977cafb8cbaf78">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a1827ba7f3e7f7e94171fa20ade25345d">yaml_node_s</a>
|
||||
</li>
|
||||
<li>end_implicit
|
||||
: <a class="el" href="structyaml__document__s.html#a59de90b4078659fd0f49377929afcac1">yaml_document_s</a>
|
||||
</li>
|
||||
<li>end_mark
|
||||
: <a class="el" href="structyaml__event__s.html#a9307f91473094c229738b03d223bc4ba">yaml_event_s</a>
|
||||
, <a class="el" href="structyaml__node__s.html#a63144671fd16f94f72c6d537360f7328">yaml_node_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a97f08b38dfb0a5be26ef8831864a5311">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__document__s.html#a9299efdaadf764f4d03641a3ee51e0d0">yaml_document_s</a>
|
||||
</li>
|
||||
<li>eof
|
||||
: <a class="el" href="structyaml__parser__s.html#a6129a99d45aee14ec705aa54dbb493b7">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>error
|
||||
: <a class="el" href="structyaml__emitter__s.html#afa2d6367a86ae6d43df14e24479bb0a7">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6c5c3488ff22c8a4d234ca8587fa1472">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>events
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3516b49eb7579e422750a94a9d7c1700">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,79 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
|
||||
<li>file
|
||||
: <a class="el" href="structyaml__parser__s.html#ae69c2974e3c4c37e941a0e1971be15a9">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#abfe1e82cd5c4a180b1468e65ccfd1c61">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>flow_level
|
||||
: <a class="el" href="structyaml__emitter__s.html#a50f8e97c4290b83ebd646b4c4f5c5de9">yaml_emitter_s</a>
|
||||
, <a class="el" href="structyaml__parser__s.html#a6a4bbbd3f58533e0969b7218c1e73fd4">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>flow_plain_allowed
|
||||
: <a class="el" href="structyaml__emitter__s.html#afd8496f5bb995bb5aacc349fd6b45bf5">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
|
||||
<li>handle
|
||||
: <a class="el" href="structyaml__tag__directive__s.html#a9934c62f2b18fd087a95af25c7739490">yaml_tag_directive_s</a>
|
||||
, <a class="el" href="structyaml__token__s.html#a01665687653c945a6666dd9debaecd65">yaml_token_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a7f043a9092eef2d644cc8f1180386239">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>handle_length
|
||||
: <a class="el" href="structyaml__emitter__s.html#a3552cece6908f99518205e8cbe2c793a">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>head
|
||||
: <a class="el" href="structyaml__parser__s.html#aa1c7a1248ca22159a3e60ba45b386507">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a547dfd20576006e606ffb0d8042b4234">yaml_emitter_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
@ -1,92 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<title>yaml: Data Fields - Variables</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Generated by Doxygen 1.7.1 -->
|
||||
<div class="navigation" id="top">
|
||||
<div class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li><a href="files.html"><span>Files</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
||||
<li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions.html"><span>All</span></a></li>
|
||||
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tabs3">
|
||||
<ul class="tablist">
|
||||
<li><a href="functions_vars.html#index_a"><span>a</span></a></li>
|
||||
<li><a href="functions_vars_0x62.html#index_b"><span>b</span></a></li>
|
||||
<li><a href="functions_vars_0x63.html#index_c"><span>c</span></a></li>
|
||||
<li><a href="functions_vars_0x64.html#index_d"><span>d</span></a></li>
|
||||
<li><a href="functions_vars_0x65.html#index_e"><span>e</span></a></li>
|
||||
<li><a href="functions_vars_0x66.html#index_f"><span>f</span></a></li>
|
||||
<li><a href="functions_vars_0x68.html#index_h"><span>h</span></a></li>
|
||||
<li class="current"><a href="functions_vars_0x69.html#index_i"><span>i</span></a></li>
|
||||
<li><a href="functions_vars_0x6b.html#index_k"><span>k</span></a></li>
|
||||
<li><a href="functions_vars_0x6c.html#index_l"><span>l</span></a></li>
|
||||
<li><a href="functions_vars_0x6d.html#index_m"><span>m</span></a></li>
|
||||
<li><a href="functions_vars_0x6e.html#index_n"><span>n</span></a></li>
|
||||
<li><a href="functions_vars_0x6f.html#index_o"><span>o</span></a></li>
|
||||
<li><a href="functions_vars_0x70.html#index_p"><span>p</span></a></li>
|
||||
<li><a href="functions_vars_0x71.html#index_q"><span>q</span></a></li>
|
||||
<li><a href="functions_vars_0x72.html#index_r"><span>r</span></a></li>
|
||||
<li><a href="functions_vars_0x73.html#index_s"><span>s</span></a></li>
|
||||
<li><a href="functions_vars_0x74.html#index_t"><span>t</span></a></li>
|
||||
<li><a href="functions_vars_0x75.html#index_u"><span>u</span></a></li>
|
||||
<li><a href="functions_vars_0x76.html#index_v"><span>v</span></a></li>
|
||||
<li><a href="functions_vars_0x77.html#index_w"><span>w</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contents">
|
||||
|
||||
|
||||
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
|
||||
<li>implicit
|
||||
: <a class="el" href="structyaml__event__s.html#a3cbb10e276d55890ee2fa802dd6290e1">yaml_event_s</a>
|
||||
</li>
|
||||
<li>indent
|
||||
: <a class="el" href="structyaml__parser__s.html#abad00703b649df32ee0d7b00b2f10403">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#a93a73494a5d62464a67cc71f86ad9728">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>indention
|
||||
: <a class="el" href="structyaml__emitter__s.html#a407de8ff950b16b4254a381d4e5cea42">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>indents
|
||||
: <a class="el" href="structyaml__parser__s.html#a2e29feac36a89f644d9640d44df62b74">yaml_parser_s</a>
|
||||
, <a class="el" href="structyaml__emitter__s.html#ad31c591593ccb78e6b04887bf4f162c8">yaml_emitter_s</a>
|
||||
</li>
|
||||
<li>index
|
||||
: <a class="el" href="structyaml__mark__s.html#a525306fb424a79f0b0d5a7d3990aa596">yaml_mark_s</a>
|
||||
, <a class="el" href="structyaml__alias__data__s.html#ac45e17508386dec9163b4aa5cfb5312e">yaml_alias_data_s</a>
|
||||
</li>
|
||||
<li>input
|
||||
: <a class="el" href="structyaml__parser__s.html#ae800ef7fd42ad8bcbb69b116da3a7f53">yaml_parser_s</a>
|
||||
</li>
|
||||
<li>items
|
||||
: <a class="el" href="structyaml__node__s.html#a6b340541cc012ac5aacdcaa46ced097a">yaml_node_s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr class="footer"/><address class="footer"><small>Generated on Mon May 30 2011 22:00:00 for yaml by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user