summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-05-20 22:43:15 +0000
committerxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-05-20 22:43:15 +0000
commit22b7d273c0cc7fff3e6149677a5a099c8ad97748 (patch)
tree5d1010377ff93a7c476f89fcaa8847d83eb4d8ab
parent07d1969082dffefec6feca41b83253cdaf8f4e60 (diff)
downloadlibyaml-22b7d273c0cc7fff3e6149677a5a099c8ad97748.tar.gz
Add the basic autoconf infrastructure.
git-svn-id: http://svn.pyyaml.org/libyaml/trunk@169 18f92427-320e-0410-9341-c67f048884a3
-rw-r--r--LICENSE19
-rw-r--r--Makefile.am4
-rw-r--r--README22
-rwxr-xr-xbootstrap3
-rw-r--r--configure.ac70
-rw-r--r--include/Makefile.am1
-rw-r--r--include/yaml/yaml.h (renamed from include/yaml.h)81
-rw-r--r--include/yaml/yaml_error.h25
-rw-r--r--include/yaml/yaml_version.h21
-rw-r--r--src/Makefile.am4
-rw-r--r--src/version.c29
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/test-version.c23
13 files changed, 267 insertions, 39 deletions
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 <xi@resolvent.net>. 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
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 <stdlib.h>
+
+#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 <config.h>
+#endif
+
+#include <yaml/yaml.h>
+
+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 <yaml/yaml.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+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;
+}