From cec6fc98ebecc208edc30a900e6ab195e7c21851 Mon Sep 17 00:00:00 2001 From: Kirill Simonov Date: Sat, 20 May 2006 22:43:15 +0000 Subject: [PATCH] Add the basic autoconf infrastructure. --- LICENSE | 19 +++++++++ Makefile.am | 4 ++ README | 22 ++++++++++ bootstrap | 3 ++ configure.ac | 70 ++++++++++++++++++++++++++++++++ include/Makefile.am | 1 + include/{ => yaml}/yaml.h | 81 +++++++++++++++++++------------------ include/yaml/yaml_error.h | 25 ++++++++++++ include/yaml/yaml_version.h | 21 ++++++++++ src/Makefile.am | 4 ++ src/version.c | 29 +++++++++++++ tests/Makefile.am | 4 ++ tests/test-version.c | 23 +++++++++++ 13 files changed, 267 insertions(+), 39 deletions(-) create mode 100644 LICENSE create mode 100644 Makefile.am create mode 100644 README create mode 100755 bootstrap create mode 100644 configure.ac create mode 100644 include/Makefile.am rename include/{ => yaml}/yaml.h (77%) create mode 100644 include/yaml/yaml_error.h create mode 100644 include/yaml/yaml_version.h create mode 100644 src/Makefile.am create mode 100644 src/version.c create mode 100644 tests/Makefile.am create mode 100644 tests/test-version.c diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..050ced2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +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. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..d25f6d2 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,4 @@ +## Run `./bootstrap` to generate the "Makefile.in" files in this directory and +## the "$SUBDIR" subdirectories. + +SUBDIRS = include src . tests diff --git a/README b/README new file mode 100644 index 0000000..fdda610 --- /dev/null +++ b/README @@ -0,0 +1,22 @@ +libyaml - A C library for parsing and emitting YAML. + +The project is in an early stage of development and not usable for end users. + +To build and install the library, run: +$ ./bootstrap +$ ./configure +$ make +$ make check +# 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 . It is released +under the MIT license. See the file LICENSE for more details. diff --git a/bootstrap b/bootstrap new file mode 100755 index 0000000..1745838 --- /dev/null +++ b/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh + +exec autoreconf -fvi diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..34d7f70 --- /dev/null +++ b/configure.ac @@ -0,0 +1,70 @@ +# 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], 0) +m4_define([YAML_PATCH], 1) +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], 0) +m4_define([YAML_REVISION], 0) +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 + +# 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([include/Makefile src/Makefile Makefile tests/Makefile]) + +# Generate the "configure" script. +AC_OUTPUT diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 0000000..29b04f3 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1 @@ +nobase_include_HEADERS = yaml/yaml.h yaml/yaml_version.h yaml/yaml_error.h diff --git a/include/yaml.h b/include/yaml/yaml.h similarity index 77% rename from include/yaml.h rename to include/yaml/yaml.h index b5e2403..eecfe10 100644 --- a/include/yaml.h +++ b/include/yaml/yaml.h @@ -1,25 +1,25 @@ -#ifndef _YAML_H -#define _YAML_H +#ifndef YAML_H +#define YAML_H #ifdef __cplusplus extern "C" { #endif -typedef enum { - YAML_READER_ERROR, - YAML_SCANNER_ERROR, - YAML_PARSER_ERROR, - YAML_EMITTER_ERROR -} yaml_error_type_t; +#include + +#include "yaml_version.h" +#include "yaml_error.h" typedef enum { + YAML_DETECT_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING } yaml_encoding_t; typedef enum { + YAML_ANY_SCALAR_STYLE, YAML_PLAIN_SCALAR_STYLE, YAML_SINGLE_QUOTED_SCALAR_STYLE, YAML_DOUBLE_QUOTED_SCALAR_STYLE, @@ -28,11 +28,13 @@ typedef enum { } yaml_scalar_style_t; typedef enum { + YAML_ANY_SEQUENCE_STYLE, YAML_BLOCK_SEQUENCE_STYLE, YAML_FLOW_SEQUENCE_STYLE } yaml_sequence_style_t; typedef enum { + YAML_ANY_MAPPING_STYLE, YAML_BLOCK_MAPPING_STYLE, YAML_FLOW_MAPPING_STYLE } yaml_mapping_style_t; @@ -40,21 +42,26 @@ typedef enum { typedef enum { YAML_STREAM_START_TOKEN, YAML_STREAM_END_TOKEN, + YAML_VERSION_DIRECTIVE_TOKEN, YAML_TAG_DIRECTIVE_TOKEN, YAML_DOCUMENT_START_TOKEN, YAML_DOCUMENT_END_TOKEN, + YAML_BLOCK_SEQUENCE_START_TOKEN, YAML_BLOCK_MAPPING_START_TOKEN, YAML_BLOCK_END_TOKEN, + YAML_FLOW_SEQUENCE_START_TOKEN, YAML_FLOW_SEQUENCE_END_TOKEN, YAML_FLOW_MAPPING_START_TOKEN, YAML_FLOW_MAPPING_END_TOKEN, + YAML_BLOCK_ENTRY_TOKEN, YAML_FLOW_ENTRY_TOKEN, YAML_KEY_TOKEN, YAML_VALUE_TOKEN, + YAML_ALIAS_TOKEN, YAML_ANCHOR_TOKEN, YAML_TAG_TOKEN, @@ -64,22 +71,22 @@ typedef enum { typedef enum { YAML_STREAM_START_EVENT, YAML_STREAM_END_EVENT, + YAML_DOCUMENT_START_EVENT, YAML_DOCUMENT_END_EVENT, + YAML_ALIAS_EVENT, + YAML_SCALAR_EVENT, + YAML_SEQUENCE_START_EVENT, YAML_SEQUENCE_END_EVENT, + YAML_MAPPING_START_EVENT, - YAML_MAPPING_END_EVENT, - YAML_SCALAR_EVENT + YAML_MAPPING_END_EVENT } yaml_event_type_t; typedef struct { - char *value; - size_t length; -} yaml_string_t; - -typedef struct { + size_t offset; size_t index; size_t line; size_t column; @@ -97,10 +104,11 @@ typedef struct { yaml_token_type_t type; union { yaml_encoding_t encoding; - yaml_string_t anchor; - yaml_string_t tag; + char *anchor; + char *tag; struct { - yaml_string_t value; + char *value; + size_t length; yaml_scalar_style_t style; } scalar; struct { @@ -108,8 +116,8 @@ typedef struct { int minor; } version; struct { - yaml_string_t handle; - yaml_string_t prefix; + char *handle; + char *prefix; } tag_pair; } data; yaml_mark_t start_mark; @@ -128,8 +136,8 @@ typedef struct { int minor; } version; struct { - yaml_string_t handle; - yaml_string_t prefix; + char *handle; + char *prefix; } **tag_pairs; int implicit; } document_start; @@ -137,24 +145,26 @@ typedef struct { int implicit; } document_end; struct { - yaml_string_t anchor; + char *anchor; } alias; struct { - yaml_string_t anchor; - yaml_string_t tag; + char *anchor; + char *tag; + char *value; + size_t length; int plain_implicit; int quoted_implicit; yaml_scalar_style_t style; } scalar; struct { - yaml_string_t anchor; - yaml_string_t tag; + char *anchor; + char *tag; int implicit; yaml_sequence_style_t style; } sequence_start; struct { - yaml_string_t anchor; - yaml_string_t tag; + char *anchor; + char *tag; int implicit; yaml_mapping_style_t style; } mapping_start; @@ -163,24 +173,17 @@ typedef struct { yaml_mark_t end_mark; } yaml_event_t; -typedef struct { -} yaml_scanner_t; - +/* typedef struct { } yaml_parser_t; -typedef struct { -} yaml_composer_t; - typedef struct { } yaml_emitter_t; - -typedef struct { -} yaml_serializer_t; +*/ #ifdef __cplusplus } #endif -#endif /* #ifndef _YAML_H */ +#endif /* #ifndef YAML_H */ diff --git a/include/yaml/yaml_error.h b/include/yaml/yaml_error.h new file mode 100644 index 0000000..df0ca7d --- /dev/null +++ b/include/yaml/yaml_error.h @@ -0,0 +1,25 @@ +#ifndef YAML_ERROR_H +#define YAML_ERROR_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + YAML_NO_ERROR, + + YAML_MEMORY_ERROR, + + YAML_READER_ERROR, + YAML_SCANNER_ERROR, + YAML_PARSER_ERROR, + + YAML_WRITER_ERROR, + YAML_EMITTER_ERROR +} yaml_error_type_t; + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef YAML_ERROR_H */ diff --git a/include/yaml/yaml_version.h b/include/yaml/yaml_version.h new file mode 100644 index 0000000..bcea9b8 --- /dev/null +++ b/include/yaml/yaml_version.h @@ -0,0 +1,21 @@ +#ifndef YAML_VERSION_H +#define YAML_VERSION_H + +#ifdef __cplusplus +extern "C" { +#endif + +const char * +yaml_get_version_string(void); + +void +yaml_get_version(int *major, int *minor, int *patch); + +int +yaml_check_version(int major, int minor, int patch); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef YAML_VERSION_H */ diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..963962e --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,4 @@ +AM_CPPFLAGS = -I$(top_srcdir)/include +lib_LTLIBRARIES = libyaml.la +libyaml_la_SOURCES = version.c +libyaml_la_LDFLAGS = -release $(YAML_LT_RELEASE) -version-info $(YAML_LT_CURRENT):$(YAML_LT_REVISION):$(YAML_LT_AGE) diff --git a/src/version.c b/src/version.c new file mode 100644 index 0000000..3f8938d --- /dev/null +++ b/src/version.c @@ -0,0 +1,29 @@ + +#if HAVE_CONFIG_H +#include +#endif + +#include + +const char * +yaml_get_version_string(void) +{ + return YAML_VERSION_STRING; +} + +void +yaml_get_version(int *major, int *minor, int *patch) +{ + *major = YAML_VERSION_MAJOR; + *minor = YAML_VERSION_MINOR; + *patch = YAML_VERSION_PATCH; +} + +int +yaml_check_version(int major, int minor, int patch) +{ + return (major == YAML_VERSION_MAJOR + && minor == YAML_VERSION_MINOR + && patch >= YAML_VERSION_PATCH); +} + diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..75e52f9 --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,4 @@ +AM_CPPFLAGS = -I$(top_srcdir)/include +LDADD = $(top_srcdir)/src/libyaml.la +TESTS = test-version +check_PROGRAMS = test-version diff --git a/tests/test-version.c b/tests/test-version.c new file mode 100644 index 0000000..51b75f4 --- /dev/null +++ b/tests/test-version.c @@ -0,0 +1,23 @@ +#include + +#include +#include +#include + +int +main(void) +{ + int major, minor, patch; + char buf[64]; + + yaml_get_version(&major, &minor, &patch); + sprintf(buf, "%d.%d.%d", major, minor, patch); + assert(strcmp(buf, yaml_get_version_string()) == 0); + assert(yaml_check_version(major+1, minor, patch) == 0); + assert(yaml_check_version(major, minor+1, patch) == 0); + assert(yaml_check_version(major, minor, patch+1) == 1); + assert(yaml_check_version(major, minor, patch) == 1); + assert(yaml_check_version(major, minor, patch-1) == 0); + + return 0; +} -- 2.45.1