Browse Source

Update carla-lilv to latest upstream, refresh custom patches

tags/v0.9.0
falkTX 13 years ago
parent
commit
7b684c7d07
100 changed files with 2404 additions and 1260 deletions
  1. +1
    -1
      c++/carla-includes/lilv
  2. +1
    -1
      c++/carla-includes/serd
  3. +1
    -1
      c++/carla-includes/sord
  4. +1
    -1
      c++/carla-includes/sratom
  5. +24
    -24
      c++/carla-lilv/Makefile
  6. +20
    -13
      c++/carla-lilv/config/lilv_config.h
  7. +12
    -10
      c++/carla-lilv/config/serd_config.h
  8. +1
    -1
      c++/carla-lilv/config/sord_config.h
  9. +2
    -2
      c++/carla-lilv/config/sratom_config.h
  10. +137
    -0
      c++/carla-lilv/custom-patches/lilv_ui-features+lilvmm.patch
  11. +0
    -90
      c++/carla-lilv/custom-patches/lilv_ui-features.patch
  12. +39
    -0
      c++/carla-lilv/custom-patches/serd_static-fix.patch
  13. +0
    -75
      c++/carla-lilv/custom-patches/sord_zix-tree-size.patch
  14. +0
    -35
      c++/carla-lilv/lilv-0.14.2/INSTALL
  15. BIN
      c++/carla-lilv/lilv-0.14.2/waf
  16. +0
    -0
      c++/carla-lilv/lilv-0.14.4/AUTHORS
  17. +0
    -0
      c++/carla-lilv/lilv-0.14.4/COPYING
  18. +59
    -0
      c++/carla-lilv/lilv-0.14.4/INSTALL
  19. +20
    -0
      c++/carla-lilv/lilv-0.14.4/NEWS
  20. +0
    -0
      c++/carla-lilv/lilv-0.14.4/PACKAGING
  21. +0
    -0
      c++/carla-lilv/lilv-0.14.4/README
  22. +0
    -0
      c++/carla-lilv/lilv-0.14.4/bindings/lilv.i
  23. +0
    -0
      c++/carla-lilv/lilv-0.14.4/bindings/python/lv2_apply.py
  24. +0
    -0
      c++/carla-lilv/lilv-0.14.4/bindings/python/lv2_list.py
  25. +0
    -0
      c++/carla-lilv/lilv-0.14.4/doc/lv2info.1
  26. +0
    -0
      c++/carla-lilv/lilv-0.14.4/doc/lv2ls.1
  27. +403
    -125
      c++/carla-lilv/lilv-0.14.4/doc/reference.doxygen.in
  28. +9
    -18
      c++/carla-lilv/lilv-0.14.4/doc/style.css
  29. +0
    -0
      c++/carla-lilv/lilv-0.14.4/lilv.pc.in
  30. +0
    -0
      c++/carla-lilv/lilv-0.14.4/lilv.ttl
  31. +1
    -1
      c++/carla-lilv/lilv-0.14.4/lilv/lilv.h
  32. +38
    -11
      c++/carla-lilv/lilv-0.14.4/lilv/lilvmm.hpp
  33. +7
    -6
      c++/carla-lilv/lilv-0.14.4/src/collections.c
  34. +1
    -1
      c++/carla-lilv/lilv-0.14.4/src/instance.c
  35. +0
    -0
      c++/carla-lilv/lilv-0.14.4/src/lib.c
  36. +8
    -12
      c++/carla-lilv/lilv-0.14.4/src/lilv_internal.h
  37. +53
    -63
      c++/carla-lilv/lilv-0.14.4/src/node.c
  38. +35
    -30
      c++/carla-lilv/lilv-0.14.4/src/plugin.c
  39. +0
    -0
      c++/carla-lilv/lilv-0.14.4/src/pluginclass.c
  40. +2
    -1
      c++/carla-lilv/lilv-0.14.4/src/port.c
  41. +1
    -1
      c++/carla-lilv/lilv-0.14.4/src/query.c
  42. +0
    -0
      c++/carla-lilv/lilv-0.14.4/src/scalepoint.c
  43. +36
    -16
      c++/carla-lilv/lilv-0.14.4/src/state.c
  44. +1
    -1
      c++/carla-lilv/lilv-0.14.4/src/ui.c
  45. +15
    -11
      c++/carla-lilv/lilv-0.14.4/src/util.c
  46. +20
    -14
      c++/carla-lilv/lilv-0.14.4/src/world.c
  47. +7
    -0
      c++/carla-lilv/lilv-0.14.4/src/zix/common.h
  48. +68
    -29
      c++/carla-lilv/lilv-0.14.4/src/zix/tree.c
  49. +16
    -16
      c++/carla-lilv/lilv-0.14.4/src/zix/tree.h
  50. +43
    -42
      c++/carla-lilv/lilv-0.14.4/test/lilv_test.c
  51. +0
    -0
      c++/carla-lilv/lilv-0.14.4/test/manifest.ttl.in
  52. +1
    -1
      c++/carla-lilv/lilv-0.14.4/test/test_plugin.c
  53. +0
    -0
      c++/carla-lilv/lilv-0.14.4/test/test_plugin.ttl.in
  54. +52
    -0
      c++/carla-lilv/lilv-0.14.4/utils/bench.h
  55. +0
    -17
      c++/carla-lilv/lilv-0.14.4/utils/lilv-bench.c
  56. +0
    -0
      c++/carla-lilv/lilv-0.14.4/utils/lilv.bash_completion
  57. +226
    -0
      c++/carla-lilv/lilv-0.14.4/utils/lv2bench.c
  58. +16
    -10
      c++/carla-lilv/lilv-0.14.4/utils/lv2info.c
  59. +3
    -3
      c++/carla-lilv/lilv-0.14.4/utils/lv2ls.c
  60. +73
    -0
      c++/carla-lilv/lilv-0.14.4/utils/uri_table.h
  61. BIN
      c++/carla-lilv/lilv-0.14.4/waf
  62. +103
    -94
      c++/carla-lilv/lilv-0.14.4/wscript
  63. +14
    -13
      c++/carla-lilv/lilv.c
  64. +0
    -35
      c++/carla-lilv/serd-0.14.0/INSTALL
  65. +0
    -184
      c++/carla-lilv/serd-0.14.0/doc/layout.xml
  66. BIN
      c++/carla-lilv/serd-0.14.0/waf
  67. +0
    -0
      c++/carla-lilv/serd-0.18.0/AUTHORS
  68. +0
    -0
      c++/carla-lilv/serd-0.18.0/COPYING
  69. +59
    -0
      c++/carla-lilv/serd-0.18.0/INSTALL
  70. +18
    -0
      c++/carla-lilv/serd-0.18.0/NEWS
  71. +0
    -0
      c++/carla-lilv/serd-0.18.0/PACKAGING
  72. +0
    -0
      c++/carla-lilv/serd-0.18.0/README
  73. +402
    -124
      c++/carla-lilv/serd-0.18.0/doc/reference.doxygen.in
  74. +9
    -1
      c++/carla-lilv/serd-0.18.0/doc/serdi.1
  75. +16
    -25
      c++/carla-lilv/serd-0.18.0/doc/style.css
  76. +0
    -0
      c++/carla-lilv/serd-0.18.0/serd.pc.in
  77. +84
    -1
      c++/carla-lilv/serd-0.18.0/serd/serd.h
  78. +4
    -5
      c++/carla-lilv/serd-0.18.0/src/env.c
  79. +7
    -7
      c++/carla-lilv/serd-0.18.0/src/node.c
  80. +114
    -38
      c++/carla-lilv/serd-0.18.0/src/reader.c
  81. +14
    -1
      c++/carla-lilv/serd-0.18.0/src/serd_internal.h
  82. +32
    -4
      c++/carla-lilv/serd-0.18.0/src/serdi.c
  83. +4
    -1
      c++/carla-lilv/serd-0.18.0/src/string.c
  84. +3
    -3
      c++/carla-lilv/serd-0.18.0/src/uri.c
  85. +68
    -41
      c++/carla-lilv/serd-0.18.0/src/writer.c
  86. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/README.txt
  87. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/UTF-8.ttl
  88. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-00.ttl
  89. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-01.ttl
  90. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-02.ttl
  91. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-03.ttl
  92. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-04.ttl
  93. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-05.ttl
  94. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-06.ttl
  95. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-07.ttl
  96. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-08.ttl
  97. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-09.ttl
  98. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-10.ttl
  99. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-11.ttl
  100. +0
    -0
      c++/carla-lilv/serd-0.18.0/tests/bad-12.ttl

+ 1
- 1
c++/carla-includes/lilv View File

@@ -1 +1 @@
../carla-lilv/lilv-0.14.2/lilv
../carla-lilv/lilv-0.14.4/lilv

+ 1
- 1
c++/carla-includes/serd View File

@@ -1 +1 @@
../carla-lilv/serd-0.14.0/serd
../carla-lilv/serd-0.18.0/serd

+ 1
- 1
c++/carla-includes/sord View File

@@ -1 +1 @@
../carla-lilv/sord-0.8.0/sord
../carla-lilv/sord-0.10.0/sord

+ 1
- 1
c++/carla-includes/sratom View File

@@ -1 +1 @@
../carla-lilv/sratom-0.2.0/sratom
../carla-lilv/sratom-0.4.0/sratom

+ 24
- 24
c++/carla-lilv/Makefile View File

@@ -7,10 +7,10 @@
CC ?= gcc CC ?= gcc
AR ?= ar AR ?= ar


SERD_VERSION = 0.14.0
SORD_VERSION = 0.8.0
SRATOM_VERSION = 0.2.0
LILV_VERSION = 0.14.2
SERD_VERSION = 0.18.0
SORD_VERSION = 0.10.0
SRATOM_VERSION = 0.4.0
LILV_VERSION = 0.14.4


BUILD_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fvisibility=hidden -fPIC -mtune=generic -msse -mfpmath=sse -std=c99 -Wall $(CFLAGS) BUILD_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fvisibility=hidden -fPIC -mtune=generic -msse -mfpmath=sse -std=c99 -Wall $(CFLAGS)
BUILD_FLAGS += -Iconfig -I../carla-includes BUILD_FLAGS += -Iconfig -I../carla-includes
@@ -32,16 +32,16 @@ carla_lilv.a: $(OBJS)
$(AR) rs $@ $^ $(AR) rs $@ $^


serd.o: serd.c serd.o: serd.c
$(CC) $< $(BUILD_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Iserd-$(SERD_VERSION) -c -o $@


sord.o: sord.c sord.o: sord.c
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION) -Isord-$(SORD_VERSION)/src -c -o $@


sratom.o: sratom.c sratom.o: sratom.c
$(CC) $< $(BUILD_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isratom-$(SRATOM_VERSION) -c -o $@


lilv.o: lilv.c lilv.o: lilv.c
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src -c -o $@
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION) -Ililv-$(LILV_VERSION)/src -c -o $@


# -------------------------------------------------------------- # --------------------------------------------------------------


@@ -51,16 +51,16 @@ carla_lilv_posix32.a: $(OBJS_posix32)
$(AR) rs $@ $^ $(AR) rs $@ $^


serd_posix32.o: serd.c serd_posix32.o: serd.c
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Iserd-$(SERD_VERSION) $(32BIT_FLAGS) -c -o $@


sord_posix32.o: sord.c sord_posix32.o: sord.c
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@


sratom_posix32.o: sratom.c sratom_posix32.o: sratom.c
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isratom-$(SRATOM_VERSION) $(32BIT_FLAGS) -c -o $@


lilv_posix32.o: lilv.c lilv_posix32.o: lilv.c
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@


# -------------------------------------------------------------- # --------------------------------------------------------------


@@ -70,16 +70,16 @@ carla_lilv_posix64.a: $(OBJS_posix64)
$(AR) rs $@ $^ $(AR) rs $@ $^


serd_posix64.o: serd.c serd_posix64.o: serd.c
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Iserd-$(SERD_VERSION) $(64BIT_FLAGS) -c -o $@


sord_posix64.o: sord.c sord_posix64.o: sord.c
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@


sratom_posix64.o: sratom.c sratom_posix64.o: sratom.c
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isratom-$(SRATOM_VERSION) $(64BIT_FLAGS) -c -o $@


lilv_posix64.o: lilv.c lilv_posix64.o: lilv.c
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@


# -------------------------------------------------------------- # --------------------------------------------------------------


@@ -89,16 +89,16 @@ carla_lilv_win32.a: $(OBJS_win32)
$(AR) rs $@ $^ $(AR) rs $@ $^


serd_win32.o: serd.c serd_win32.o: serd.c
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Iserd-$(SERD_VERSION) $(32BIT_FLAGS) -c -o $@


sord_win32.o: sord.c sord_win32.o: sord.c
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION) -Isord-$(SORD_VERSION)/src $(32BIT_FLAGS) -c -o $@


sratom_win32.o: sratom.c sratom_win32.o: sratom.c
$(CC) $< $(BUILD_FLAGS) $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isratom-$(SRATOM_VERSION) $(32BIT_FLAGS) -c -o $@


lilv_win32.o: lilv.c lilv_win32.o: lilv.c
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION) -Ililv-$(LILV_VERSION)/src $(32BIT_FLAGS) -c -o $@


# -------------------------------------------------------------- # --------------------------------------------------------------


@@ -108,16 +108,16 @@ carla_lilv_win64.a: $(OBJS_win64)
$(AR) rs $@ $^ $(AR) rs $@ $^


serd_win64.o: serd.c serd_win64.o: serd.c
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Iserd-$(SERD_VERSION) $(64BIT_FLAGS) -c -o $@


sord_win64.o: sord.c sord_win64.o: sord.c
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isord-$(SORD_VERSION) -Isord-$(SORD_VERSION)/src $(64BIT_FLAGS) -c -o $@


sratom_win64.o: sratom.c sratom_win64.o: sratom.c
$(CC) $< $(BUILD_FLAGS) $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Isratom-$(SRATOM_VERSION) $(64BIT_FLAGS) -c -o $@


lilv_win64.o: lilv.c lilv_win64.o: lilv.c
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@
$(CC) $< $(BUILD_FLAGS) -Ililv-$(LILV_VERSION) -Ililv-$(LILV_VERSION)/src $(64BIT_FLAGS) -c -o $@


# -------------------------------------------------------------- # --------------------------------------------------------------




+ 20
- 13
c++/carla-lilv/config/lilv_config.h View File

@@ -2,27 +2,34 @@
#ifndef _LILV_CONFIG_H_ #ifndef _LILV_CONFIG_H_
#define _LILV_CONFIG_H_ #define _LILV_CONFIG_H_


#define LILV_VERSION "0.14.2"
#define LILV_VERSION "0.14.4"
#define LILV_NEW_LV2 1 #define LILV_NEW_LV2 1


#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define HAVE_LV2 1
#define HAVE_SERD 1
#define HAVE_SORD 1
#define HAVE_SRATOM 1 #define HAVE_SRATOM 1

#define HAVE_FILENO 1 #define HAVE_FILENO 1
#define HAVE_CLOCK_GETTIME 1


#ifndef _WIN32
#define HAVE_FLOCK 1
#ifdef __WIN32__
#define LILV_PATH_SEP ";"
#define LILV_DIR_SEP "\\"
#else
#define LILV_PATH_SEP ":"
#define LILV_DIR_SEP "/"
#define HAVE_FLOCK 1
#endif #endif


#ifdef _WIN32
#define LILV_PATH_SEP ";"
#define LILV_DIR_SEP "\\"
#define LILV_DEFAULT_LV2_PATH "%APPDATA%\\LV2;%COMMONPROGRAMFILES%\\LV2"
#if defined(__APPLE__)
#define LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2:/Library/Audio/Plug-Ins/LV2"
#elif defined(__HAIKU__)
#define LILV_DEFAULT_LV2_PATH "~/.lv2:/boot/common/add-ons/lv2"
#elif defined(__WIN32__)
#define LILV_DEFAULT_LV2_PATH "%APPDATA%\\LV2;%COMMONPROGRAMFILES%\\LV2"
#else #else
#define LILV_PATH_SEP ":"
#define LILV_DIR_SEP "/"
#define LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2"
#define LILV_DEFAULT_LV2_PATH "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2"
#endif #endif


#endif /* _LILV_CONFIG_H_ */ #endif /* _LILV_CONFIG_H_ */

+ 12
- 10
c++/carla-lilv/config/serd_config.h View File

@@ -2,18 +2,20 @@
#ifndef _SERD_CONFIG_H_ #ifndef _SERD_CONFIG_H_
#define _SERD_CONFIG_H_ #define _SERD_CONFIG_H_


#define SERD_VERSION "0.14.0"
#define SERD_VERSION "0.18.0"


#define HAVE_FMAX 1
#define HAVE_FILENO 1
#if defined(_WIN32)
// nothing
#elif defined(__APPLE__) || defined(__HAIKU__)
# define HAVE_POSIX_MEMALIGN 1
#if defined(__APPLE__) || defined(__HAIKU__)
#define HAVE_FMAX 1
#define HAVE_FILENO 1
#define HAVE_POSIX_MEMALIGN 1
#elif defined(__WIN32__)
#define HAVE_FMAX 1
#define HAVE_FILENO 1
#else #else
# define HAVE_POSIX_MEMALIGN 1
# define HAVE_POSIX_FADVISE 1
#define HAVE_FMAX 1
#define HAVE_FILENO 1
#define HAVE_POSIX_MEMALIGN 1
#define HAVE_POSIX_FADVISE 1
#endif #endif


#endif /* _SERD_CONFIG_H_ */ #endif /* _SERD_CONFIG_H_ */

+ 1
- 1
c++/carla-lilv/config/sord_config.h View File

@@ -2,7 +2,7 @@
#ifndef _SORD_CONFIG_H_ #ifndef _SORD_CONFIG_H_
#define _SORD_CONFIG_H_ #define _SORD_CONFIG_H_


#define SORD_VERSION "0.8.0"
#define SORD_VERSION "0.10.0"


#define HAVE_SERD 1 #define HAVE_SERD 1
#define HAVE_PCRE 1 #define HAVE_PCRE 1


+ 2
- 2
c++/carla-lilv/config/sratom_config.h View File

@@ -2,9 +2,9 @@
#ifndef _SRATOM_CONFIG_H_ #ifndef _SRATOM_CONFIG_H_
#define _SRATOM_CONFIG_H_ #define _SRATOM_CONFIG_H_


#define SRATOM_VERSION "0.2.0"
#define SRATOM_VERSION "0.4.0"


#define HAVE_LV2 1
#define HAVE_LV2 1
#define HAVE_SERD 1 #define HAVE_SERD 1
#define HAVE_SORD 1 #define HAVE_SORD 1




+ 137
- 0
c++/carla-lilv/custom-patches/lilv_ui-features+lilvmm.patch View File

@@ -0,0 +1,137 @@
diff -U 3 -H -d -r -N -- lilv-0.14.4.old/lilv/lilv.h lilv-0.14.4/lilv/lilv.h
--- lilv-0.14.4.old/lilv/lilv.h 2012-09-07 19:00:48.464571333 +0100
+++ lilv-0.14.4/lilv/lilv.h 2012-09-07 18:54:00.626548936 +0100
@@ -1693,6 +1693,25 @@
lilv_ui_get_binary_uri(const LilvUI* ui);
/**
+ Custom calls
+*/
+LILV_API
+LilvNodes*
+lilv_ui_get_supported_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_required_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_optional_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_extension_data(const LilvUI* ui);
+
+/**
@}
@}
*/
diff -U 3 -H -d -r -N -- lilv-0.14.4.old/lilv/lilvmm.hpp lilv-0.14.4/lilv/lilvmm.hpp
--- lilv-0.14.4.old/lilv/lilvmm.hpp 2012-07-18 02:42:43.000000000 +0100
+++ lilv-0.14.4/lilv/lilvmm.hpp 2012-09-07 18:53:14.134318379 +0100
@@ -136,6 +136,7 @@
struct Nodes {
LILV_WRAP_COLL(Nodes, Node, nodes);
LILV_WRAP1(bool, nodes, contains, const Node, node);
+ LILV_WRAP0(Node, nodes, get_first);
};
struct Port {
@@ -167,6 +168,26 @@
const LilvPort* me;
};
+struct UI {
+ inline UI(const LilvUI* c_obj) : me(c_obj) {}
+ LILV_WRAP_CONVERSION(const LilvUI);
+
+ LILV_WRAP0(Node, ui, get_uri);
+ LILV_WRAP1(bool, ui, is_a, LilvNode*, ui_class);
+ LILV_WRAP0(Node, ui, get_bundle_uri);
+ LILV_WRAP0(Node, ui, get_binary_uri);
+ LILV_WRAP0(Nodes, ui, get_supported_features);
+ LILV_WRAP0(Nodes, ui, get_required_features);
+ LILV_WRAP0(Nodes, ui, get_optional_features);
+ LILV_WRAP0(Nodes, ui, get_extension_data);
+
+ const LilvUI* me;
+};
+
+struct UIs {
+ LILV_WRAP_COLL(UIs, UI, uis);
+};
+
struct Plugin {
inline Plugin(const LilvPlugin* c_obj) : me(c_obj) {}
LILV_WRAP_CONVERSION(const LilvPlugin);
@@ -190,6 +211,8 @@
LILV_WRAP0(Node, plugin, get_author_email);
LILV_WRAP0(Node, plugin, get_author_homepage);
LILV_WRAP0(bool, plugin, is_replaced);
+ LILV_WRAP0(Nodes, plugin, get_extension_data);
+ LILV_WRAP0(UIs, plugin, get_uis);
inline Port get_port_by_index(unsigned index) {
return Port(me, lilv_plugin_get_port_by_index(me, index));
diff -U 3 -H -d -r -N -- lilv-0.14.4.old/src/ui.c lilv-0.14.4/src/ui.c
--- lilv-0.14.4.old/src/ui.c 2012-09-07 19:00:48.464571333 +0100
+++ lilv-0.14.4/src/ui.c 2012-09-07 18:59:51.652289664 +0100
@@ -128,3 +128,57 @@
assert(ui->binary_uri);
return ui->binary_uri;
}
+
+static LilvNodes*
+lilv_ui_get_value_internal(const LilvUI* ui,
+ const SordNode* predicate)
+{
+ return lilv_world_query_values_internal(
+ ui->world, ui->uri->node, predicate, NULL);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_supported_features(const LilvUI* ui)
+{
+ LilvNodes* optional = lilv_ui_get_optional_features(ui);
+ LilvNodes* required = lilv_ui_get_required_features(ui);
+ LilvNodes* result = lilv_nodes_new();
+
+ LILV_FOREACH(nodes, i, optional)
+ zix_tree_insert((ZixTree*)result,
+ lilv_node_duplicate(lilv_nodes_get(optional, i)),
+ NULL);
+ LILV_FOREACH(nodes, i, required)
+ zix_tree_insert((ZixTree*)result,
+ lilv_node_duplicate(lilv_nodes_get(required, i)),
+ NULL);
+
+ lilv_nodes_free(optional);
+ lilv_nodes_free(required);
+
+ return result;
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_required_features(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(
+ ui, ui->world->uris.lv2_requiredFeature);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_optional_features(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(
+ ui, ui->world->uris.lv2_optionalFeature);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_extension_data(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_extensionData);
+}

+ 0
- 90
c++/carla-lilv/custom-patches/lilv_ui-features.patch View File

@@ -1,90 +0,0 @@
diff -U 3 -H -d -r -N -- lilv-0.14.2.old/lilv/lilv.h lilv-0.14.2/lilv/lilv.h
--- lilv-0.14.2.old/lilv/lilv.h 2012-05-31 00:01:08.000000000 +0100
+++ lilv-0.14.2/lilv/lilv.h 2012-04-29 20:48:18.000000000 +0100
@@ -1693,6 +1693,25 @@
lilv_ui_get_binary_uri(const LilvUI* ui);
/**
+ Custom calls
+*/
+LILV_API
+LilvNodes*
+lilv_ui_get_supported_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_required_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_optional_features(const LilvUI* ui);
+
+LILV_API
+LilvNodes*
+lilv_ui_get_extension_data(const LilvUI* ui);
+
+/**
@}
@}
*/
diff -U 3 -H -d -r -N -- lilv-0.14.2.old/src/ui.c lilv-0.14.2/src/ui.c
--- lilv-0.14.2.old/src/ui.c 2012-03-27 04:41:41.000000000 +0100
+++ lilv-0.14.2/src/ui.c 2012-04-29 20:58:07.000000000 +0100
@@ -128,3 +128,57 @@
assert(ui->binary_uri);
return ui->binary_uri;
}
+
+static LilvNodes*
+lilv_ui_get_value_internal(const LilvUI* ui,
+ const SordNode* predicate)
+{
+ return lilv_world_query_values_internal(
+ ui->world, ui->uri->val.uri_val, predicate, NULL);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_supported_features(const LilvUI* ui)
+{
+ LilvNodes* optional = lilv_ui_get_optional_features(ui);
+ LilvNodes* required = lilv_ui_get_required_features(ui);
+ LilvNodes* result = lilv_nodes_new();
+
+ LILV_FOREACH(nodes, i, optional)
+ zix_tree_insert((ZixTree*)result,
+ lilv_node_duplicate(lilv_nodes_get(optional, i)),
+ NULL);
+ LILV_FOREACH(nodes, i, required)
+ zix_tree_insert((ZixTree*)result,
+ lilv_node_duplicate(lilv_nodes_get(required, i)),
+ NULL);
+
+ lilv_nodes_free(optional);
+ lilv_nodes_free(required);
+
+ return result;
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_required_features(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(
+ ui, ui->world->uris.lv2_requiredFeature);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_optional_features(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(
+ ui, ui->world->uris.lv2_optionalFeature);
+}
+
+LILV_API
+LilvNodes*
+lilv_ui_get_extension_data(const LilvUI* ui)
+{
+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_extensionData);
+}

+ 39
- 0
c++/carla-lilv/custom-patches/serd_static-fix.patch View File

@@ -0,0 +1,39 @@
diff -U 3 -H -d -r -N -- serd-0.18.0/src/writer.c serd-0.18.0.orig/src/writer.c
--- serd-0.18.0/src/writer.c 2012-09-07 18:12:02.886064145 +0100
+++ serd-0.18.0.orig/src/writer.c 2012-09-07 18:11:16.000000000 +0100
@@ -103,7 +103,7 @@
} TextContext;
static void
-error2(SerdWriter* writer, SerdStatus st, const char* fmt, ...)
+error(SerdWriter* writer, SerdStatus st, const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
@@ -219,7 +219,7 @@
size = 4;
c = in & 0x07;
} else {
- error2(writer, SERD_ERR_BAD_ARG, "invalid UTF-8: %X\n", in);
+ error(writer, SERD_ERR_BAD_ARG, "invalid UTF-8: %X\n", in);
const uint8_t replacement_char[] = { 0xEF, 0xBF, 0xBD };
len += sink(replacement_char, sizeof(replacement_char), writer);
return len;
@@ -364,7 +364,7 @@
switch (writer->syntax) {
case SERD_NTRIPLES:
if (serd_env_expand(writer->env, node, &uri_prefix, &uri_suffix)) {
- error2(writer, SERD_ERR_BAD_CURIE,
+ error(writer, SERD_ERR_BAD_CURIE,
"undefined namespace prefix `%s'\n", node->buf);
return false;
}
@@ -603,7 +603,7 @@
return SERD_SUCCESS;
}
if (serd_stack_is_empty(&writer->anon_stack)) {
- error2(writer, SERD_ERR_UNKNOWN,
+ error(writer, SERD_ERR_UNKNOWN,
"unexpected end of anonymous node\n");
return SERD_ERR_UNKNOWN;
}

+ 0
- 75
c++/carla-lilv/custom-patches/sord_zix-tree-size.patch View File

@@ -1,75 +0,0 @@
diff -U 3 -H -d -r -N -- sord-0.8.0.old/src/zix/tree.c sord-0.8.0/src/zix/tree.c
--- sord-0.8.0.old/src/zix/tree.c 2012-04-17 18:01:39.000000000 +0100
+++ sord-0.8.0/src/zix/tree.c 2012-05-31 00:09:18.000000000 +0100
@@ -29,6 +29,7 @@
ZixTreeNode* root;
ZixComparator cmp;
void* cmp_data;
+ size_t size;
bool allow_duplicates;
};
@@ -51,6 +52,7 @@
t->root = NULL;
t->cmp = cmp;
t->cmp_data = cmp_data;
+ t->size = 0;
t->allow_duplicates = allow_duplicates;
return t;
}
@@ -74,6 +76,12 @@
free(t);
}
+size_t
+zix_tree_size(ZixTree* t)
+{
+ return t->size;
+}
+
static void
rotate(ZixTreeNode* p, ZixTreeNode* q)
{
@@ -343,6 +351,8 @@
}
}
+ ++t->size;
+
return ZIX_STATUS_SUCCESS;
}
@@ -358,6 +368,8 @@
if ((n == t->root) && !n->left && !n->right) {
t->root = NULL;
free(n);
+ --t->size;
+ assert(t->size == 0);
return ZIX_STATUS_SUCCESS;
}
@@ -481,6 +493,8 @@
free(n);
+ --t->size;
+
return ZIX_STATUS_SUCCESS;
}
diff -U 3 -H -d -r -N -- sord-0.8.0.old/src/zix/tree.h sord-0.8.0/src/zix/tree.h
--- sord-0.8.0.old/src/zix/tree.h 2012-04-17 18:01:39.000000000 +0100
+++ sord-0.8.0/src/zix/tree.h 2012-05-31 00:09:25.000000000 +0100
@@ -53,6 +53,12 @@
zix_tree_free(ZixTree* t);
/**
+ Return the number of elements in @a t.
+*/
+size_t
+zix_tree_size(ZixTree* t);
+
+/**
Insert the element @a e into @a t and point @a ti at the new element.
*/
ZixStatus

+ 0
- 35
c++/carla-lilv/lilv-0.14.2/INSTALL View File

@@ -1,35 +0,0 @@
This software requires only Python to build.

Like an auto* project, building has three phases:


* Configure: ./waf configure [OPTIONS]

Example:
./waf configure --prefix=/some/where --debug --strict

If --debug is not given, the flags from the environment variables
CFLAGS and CXXFLAGS will be used.

The default prefix is /usr/local


* Build: ./waf [OPTIONS]

Example:
./waf -j4


* Install: ./waf install [OPTIONS]

The environment variable DESTDIR can be used to add any prefix to
the install paths (useful for packaging). Example:

DESTDIR=/home/drobilla/packages ./waf install


*** IMPORTANT: You must use absolute paths everywhere


Run './waf --help' for detailed option information.


BIN
c++/carla-lilv/lilv-0.14.2/waf View File


c++/carla-lilv/lilv-0.14.2/AUTHORS → c++/carla-lilv/lilv-0.14.4/AUTHORS View File


c++/carla-lilv/lilv-0.14.2/COPYING → c++/carla-lilv/lilv-0.14.4/COPYING View File


+ 59
- 0
c++/carla-lilv/lilv-0.14.4/INSTALL View File

@@ -0,0 +1,59 @@
Installation Instructions
=========================

Basic Installation
------------------

Building this software requires only Python. To install with default options:

./waf configure
./waf
./waf install

You may need to become root for the install stage, for example:

sudo ./waf install

Configuration Options
---------------------

All supported options can be viewed using the command:

./waf --help

Most options only need to be passed during the configure stage, for example:

./waf configure --prefix=/usr
./waf
./waf install

Compiler Configuration
----------------------

Several standard environment variables can be used to control how compilers are
invoked:

* CC: Path to C compiler
* CFLAGS: C compiler options
* CXX: Path to C++ compiler
* CXXFLAGS: C++ compiler options
* CPPFLAGS: C preprocessor options
* LINKFLAGS: Linker options

Installation Directories
------------------------

The --prefix option (or the PREFIX environment variable) can be used to change
the prefix which all files are installed under. There are also several options
allowing for more fine-tuned control, see the --help output for details.

Packaging
---------

Everything can be installed to a specific root directory by passing a --destdir
option to the install stage (or setting the DESTDIR environment variable),
which adds a prefix to all install paths. For example:

./waf configure --prefix=/usr
./waf
./waf install --destdir=/tmp/package

c++/carla-lilv/lilv-0.14.2/NEWS → c++/carla-lilv/lilv-0.14.4/NEWS View File

@@ -1,3 +1,23 @@
lilv (0.14.4) stable;

* Deprecate old flawed Lilv::Instance constructors
* Fix documentation for ui_type parameter of lilv_ui_is_supported()
* Fix crash when lv2info is run with an invalid URI argument
* Gracefully handle failure to save plugin state and print error message
* Reduce memory usage (per node)
* Simpler node implementation always backed by a SordNode
* Make all 'zix' symbols private to avoid symbol clashes in static builds
* Add lv2bench utility
* Fix various hyper-strict warnings
* Do not require a C++ compiler to build
* Add option to build utilities as static binaries
* Upgrade to waf 1.7.2
* lilvmm.hpp: Make Lilv::Instance handle features and failed instantiations
* lilvmm.hpp: Add Lilv::Instance::get_handle()
* lilvmm.hpp: Add Lilv::Instance::get_extension_data()

-- David Robillard <d@drobilla.net> Thu, 23 Aug 2012 01:38:29 -0400

lilv (0.14.2) stable; lilv (0.14.2) stable;


* Fix dynmanifest support * Fix dynmanifest support

c++/carla-lilv/lilv-0.14.2/PACKAGING → c++/carla-lilv/lilv-0.14.4/PACKAGING View File


c++/carla-lilv/lilv-0.14.2/README → c++/carla-lilv/lilv-0.14.4/README View File


c++/carla-lilv/lilv-0.14.2/bindings/lilv.i → c++/carla-lilv/lilv-0.14.4/bindings/lilv.i View File


c++/carla-lilv/lilv-0.14.2/bindings/python/lv2_apply.py → c++/carla-lilv/lilv-0.14.4/bindings/python/lv2_apply.py View File


c++/carla-lilv/lilv-0.14.2/bindings/python/lv2_list.py → c++/carla-lilv/lilv-0.14.4/bindings/python/lv2_list.py View File


c++/carla-lilv/lilv-0.14.2/doc/lv2info.1 → c++/carla-lilv/lilv-0.14.4/doc/lv2info.1 View File


c++/carla-lilv/lilv-0.14.2/doc/lv2ls.1 → c++/carla-lilv/lilv-0.14.4/doc/lv2ls.1 View File


c++/carla-lilv/lilv-0.14.2/doc/reference.doxygen.in → c++/carla-lilv/lilv-0.14.4/doc/reference.doxygen.in View File

@@ -1,14 +1,14 @@
# Doxyfile 1.6.1
# Doxyfile 1.8.1.1


# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
# doxygen (www.doxygen.org) for a project.
# #
# All text after a hash (#) is considered a comment and will be ignored
# All text after a hash (#) is considered a comment and will be ignored.
# The format is: # The format is:
# TAG = value [value, ...] # TAG = value [value, ...]
# For lists items can also be appended using: # For lists items can also be appended using:
# TAG += value [value, ...] # TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
# Values that contain spaces should be placed between quotes (" ").


#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
@@ -22,8 +22,9 @@


DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8


# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
# The PROJECT_NAME tag is a single word (or sequence of words) that should
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.


PROJECT_NAME = Lilv PROJECT_NAME = Lilv


@@ -33,6 +34,19 @@ PROJECT_NAME = Lilv


PROJECT_NUMBER = @LILV_VERSION@ PROJECT_NUMBER = @LILV_VERSION@


# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
# a quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF =

# With the PROJECT_LOGO tag one can specify an logo or icon that is
# included in the documentation. The maximum height of the logo should not
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.

PROJECT_LOGO =

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location # If a relative path is entered, it will be relative to the location
@@ -57,7 +71,7 @@ CREATE_SUBDIRS = NO
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.


OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
@@ -126,7 +140,7 @@ STRIP_FROM_PATH =
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH =


# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful is your file systems
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM. # doesn't support long names like on DOS, Mac, or CD-ROM.


SHORT_NAMES = NO SHORT_NAMES = NO
@@ -181,6 +195,13 @@ TAB_SIZE = 4


ALIASES = ALIASES =


# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
# itcl::class meaning.

TCL_SUBST =

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C. # sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list # For instance, some of the names that are used will be different. The list
@@ -207,22 +228,32 @@ OPTIMIZE_FOR_FORTRAN = NO


OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_VHDL = NO


# Doxygen selects the parser to use depending on the extension of the files it parses.
# With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this tag.
# The format is ext=language, where ext is a file extension, and language is one of
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.


EXTENSION_MAPPING = EXTENSION_MAPPING =


# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
# comments according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.

MARKDOWN_SUPPORT = YES

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should # to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and # set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also make the inheritance and collaboration
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate. # diagrams that involve STL classes more complete and accurate.


BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
@@ -240,7 +271,7 @@ SIP_SUPPORT = NO


# For Microsoft's IDL there are propget and propput attributes to indicate getter # For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default) # and setter methods for a property. Setting this option to YES (the default)
# will make doxygen to replace the get and set methods by a property in the
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or # documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the # setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO. # methods anyway, you should set this option to NO.
@@ -262,6 +293,22 @@ DISTRIBUTE_GROUP_DOC = NO


SUBGROUPING = YES SUBGROUPING = YES


# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
# unions are shown inside the group in which they are included (e.g. using
# @ingroup) instead of on a separate page (for HTML and Man pages) or
# section (for LaTeX and RTF).

INLINE_GROUPED_CLASSES = YES

# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data fields will be shown inline in the documentation
# of the scope in which they are defined (i.e. file, namespace, or group
# documentation), provided this scope is documented. If set to NO (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).

INLINE_SIMPLE_STRUCTS = YES

# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So # is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
@@ -278,16 +325,27 @@ TYPEDEF_HIDES_STRUCT = YES
# For small to medium size projects (<1000 input files) the default value is # For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause # probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time # doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penality.
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the # If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on # performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will rougly double the
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula: # memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols
# corresponding to a cache size of 2^16 = 65536 symbols.


SYMBOL_CACHE_SIZE = 0 SYMBOL_CACHE_SIZE = 0


# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
# their name and scope. Since this can be an expensive process and often the
# same symbol appear multiple times in the code, doxygen keeps a cache of
# pre-resolved symbols. If the cache is too small doxygen will become slower.
# If the cache is too large, memory is wasted. The cache size is given by this
# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.

LOOKUP_CACHE_SIZE = 0

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -304,6 +362,10 @@ EXTRACT_ALL = YES


EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO


# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.

EXTRACT_PACKAGE = NO

# If the EXTRACT_STATIC tag is set to YES all static members of a file # If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation. # will be included in the documentation.


@@ -326,7 +388,7 @@ EXTRACT_LOCAL_METHODS = NO
# extracted and appear in the documentation as a namespace called # extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base # 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default # name of the file that contains the anonymous namespace. By default
# anonymous namespace are hidden.
# anonymous namespaces are hidden.


EXTRACT_ANON_NSPACES = NO EXTRACT_ANON_NSPACES = NO


@@ -386,6 +448,12 @@ HIDE_SCOPE_NAMES = NO


SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES


# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.

FORCE_LOCAL_INCLUDES = NO

# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members. # is inserted in the documentation for inline members.


@@ -405,7 +473,13 @@ SORT_MEMBER_DOCS = NO


SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = NO


# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
# will sort the (brief and detailed) documentation of class members so that
# constructors and destructors are listed first. If set to NO (the default)
# the constructors will appear in the respective orders defined by
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.


SORT_MEMBERS_CTORS_1ST = NO SORT_MEMBERS_CTORS_1ST = NO


@@ -425,6 +499,15 @@ SORT_GROUP_NAMES = NO


SORT_BY_SCOPE_NAME = YES SORT_BY_SCOPE_NAME = YES


# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
# do proper type resolution of all parameters of a function it will reject a
# match between the prototype and the implementation of a member function even
# if there is only one candidate or it is obvious which candidate to choose
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
# will still accept a match between prototype and implementation in such cases.

STRICT_PROTO_MATCHING = NO

# The GENERATE_TODOLIST tag can be used to enable (YES) or # The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo # disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation. # commands in the documentation.
@@ -455,10 +538,10 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = ENABLED_SECTIONS =


# The MAX_INITIALIZER_LINES tag determines the maximum number of lines # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to appear in
# the initial value of a variable or macro consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified # the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely. # here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and defines in the
# The appearance of the initializer of individual variables and macros in the
# documentation can be controlled using \showinitializer or \hideinitializer # documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting. # command in the documentation regardless of this setting.


@@ -470,12 +553,6 @@ MAX_INITIALIZER_LINES = 30


SHOW_USED_FILES = YES SHOW_USED_FILES = YES


# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
# in the documentation. The default is NO.

SHOW_DIRECTORIES = NO

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the # This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES. # Folder Tree View (if specified). The default is YES.
@@ -499,15 +576,25 @@ SHOW_NAMESPACES = NO


FILE_VERSION_FILTER = FILE_VERSION_FILTER =


# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
# doxygen. The layout file controls the global structure of the generated output files
# in an output format independent way. The create the layout file that represents
# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
# file name after the option, if omitted DoxygenLayout.xml will be used as the name
# of the layout file.
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.


LAYOUT_FILE = @LILV_SRCDIR@/doc/layout.xml LAYOUT_FILE = @LILV_SRCDIR@/doc/layout.xml


# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
# .bib extension is automatically appended if omitted. Using this command
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path.

CITE_BIB_FILES =

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -527,7 +614,7 @@ WARNINGS = YES
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will # for undocumented members. If EXTRACT_ALL is set to YES then this flag will
# automatically be disabled. # automatically be disabled.


WARN_IF_UNDOCUMENTED = NO
WARN_IF_UNDOCUMENTED = YES


# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some # potential errors in the documentation, such as not documenting some
@@ -536,13 +623,13 @@ WARN_IF_UNDOCUMENTED = NO


WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES


# This WARN_NO_PARAMDOC option can be abled to get warnings for
# The WARN_NO_PARAMDOC option can be enabled to get warnings for
# functions that are documented, but have no documentation for their parameters # functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about # or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of # wrong or incomplete parameter documentation, but not about the absence of
# documentation. # documentation.


WARN_NO_PARAMDOC = NO
WARN_NO_PARAMDOC = YES


# The WARN_FORMAT tag determines the format of the warning messages that # The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text # doxygen can produce. The string should contain the $file, $line, and $text
@@ -582,8 +669,9 @@ INPUT_ENCODING = UTF-8
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left # and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested: # blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl


FILE_PATTERNS = FILE_PATTERNS =


@@ -593,14 +681,16 @@ FILE_PATTERNS =


RECURSIVE = NO RECURSIVE = NO


# The EXCLUDE tag can be used to specify files and/or directories that should
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a # excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag. # subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to the directory from which doxygen is
# run.


EXCLUDE = EXCLUDE =


# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input. # from the input.


EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
@@ -664,8 +754,8 @@ INPUT_FILTER =
# filter if there is a match. # filter if there is a match.
# The filters are a list of the form: # The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
# info on how filters are used. If FILTER_PATTERNS is empty or if
# non of the patterns match the file name, INPUT_FILTER is applied.


FILTER_PATTERNS = FILTER_PATTERNS =


@@ -675,6 +765,14 @@ FILTER_PATTERNS =


FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO


# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
# and it is also possible to disable source filtering for a specific pattern
# using *.ext= (so without naming a filter). This option only has effect when
# FILTER_SOURCE_FILES is enabled.

FILTER_SOURCE_PATTERNS =

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -693,7 +791,7 @@ INLINE_SOURCES = NO


# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code # doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible.
# fragments. Normal C, C++ and Fortran comments will always remain visible.


STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES


@@ -729,7 +827,7 @@ USE_HTAGS = NO
# will generate a verbatim copy of the header file for each class for # will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this. # which an include is specified. Set to NO to disable this.


VERBATIM_HEADERS = YES
VERBATIM_HEADERS = NO


#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
@@ -777,7 +875,14 @@ HTML_FILE_EXTENSION = .html


# The HTML_HEADER tag can be used to specify a personal HTML header for # The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a # each generated HTML page. If it is left blank doxygen will generate a
# standard header.
# standard header. Note that when using a custom header you are responsible
# for the proper inclusion of any scripts and style sheets that doxygen
# needs, which is dependent on the configuration options used.
# It is advised to generate a default header using "doxygen -w html
# header.html footer.html stylesheet.css YourConfigFile" and then modify
# that header. Note that the header is subject to change so you typically
# have to redo this when upgrading to a newer version of doxygen or when
# changing the value of configuration settings such as GENERATE_TREEVIEW!


HTML_HEADER = HTML_HEADER =


@@ -792,24 +897,67 @@ HTML_FOOTER =
# fine-tune the look of the HTML output. If the tag is left blank doxygen # fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy # will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own # the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
# style sheet in the HTML output directory as well, or it will be erased!

HTML_STYLESHEET = @LILV_SRCDIR@/doc/style.css

# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.

HTML_EXTRA_FILES =

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.

HTML_COLORSTYLE_HUE = 160

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.

HTML_COLORSTYLE_SAT = 100

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.


HTML_STYLESHEET = doc/style.css
HTML_COLORSTYLE_GAMMA = 80


# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.


HTML_ALIGN_MEMBERS = YES
HTML_TIMESTAMP = YES


# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the # documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
# page has loaded.


HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO


# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
# entries shown in the various tree structured indices initially; the user
# can expand and collapse entries dynamically later on. Doxygen will expand
# the tree to such a level that at most the specified number of entries are
# visible (unless a fully collapsed tree already exceeds this amount).
# So setting the number of entries 1 will produce a full collapsed tree by
# default. 0 is a special value representing an infinite number of entries
# and will result in a full expanded tree by default.

HTML_INDEX_NUM_ENTRIES = 100

# If the GENERATE_DOCSET tag is set to YES, additional index files # If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3 # will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard). # integrated development environment, introduced with OSX 10.5 (Leopard).
@@ -818,7 +966,8 @@ HTML_DYNAMIC_SECTIONS = NO
# directory and running "make install" will install the docset in # directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup. # it at startup.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.


GENERATE_DOCSET = NO GENERATE_DOCSET = NO


@@ -836,6 +985,16 @@ DOCSET_FEEDNAME = "Doxygen generated docs"


DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_BUNDLE_ID = org.doxygen.Project


# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.

DOCSET_PUBLISHER_ID = org.doxygen.Publisher

# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.

DOCSET_PUBLISHER_NAME = Publisher

# If the GENERATE_HTMLHELP tag is set to YES, additional index files # If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the # will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
@@ -880,10 +1039,10 @@ BINARY_TOC = NO


TOC_EXPAND = NO TOC_EXPAND = NO


# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
# are set, an additional index file will be generated that can be used as input for
# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
# HTML documentation.
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
# that can be used as input for Qt's qhelpgenerator to generate a
# Qt Compressed Help (.qch) of the generated HTML documentation.


GENERATE_QHP = NO GENERATE_QHP = NO


@@ -905,20 +1064,24 @@ QHP_NAMESPACE =


QHP_VIRTUAL_FOLDER = doc QHP_VIRTUAL_FOLDER = doc


# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
# For more information please see
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters # http://doc.trolltech.com/qthelpproject.html#custom-filters


QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_NAME =


# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
# Qt Help Project / Custom Filters</a>.


QHP_CUST_FILTER_ATTRS = QHP_CUST_FILTER_ATTRS =


# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
# filter section matches. # filter section matches.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
# Qt Help Project / Filter Attributes</a>.


QHP_SECT_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS =


@@ -929,16 +1092,30 @@ QHP_SECT_FILTER_ATTRS =


QHG_LOCATION = QHG_LOCATION =


# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
# the help appears.


DISABLE_INDEX = NO
GENERATE_ECLIPSEHELP = NO


# This tag can be used to set the number of enum values (range [1..20])
# that doxygen will group on one line in the generated HTML documentation.
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.


ENUM_VALUES_PER_LINE = 4
ECLIPSE_DOC_ID = org.doxygen.Project

# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
# at top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it. Since the tabs have the same information as the
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.

DISABLE_INDEX = YES


# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. # structure should be generated to display hierarchical information.
@@ -947,13 +1124,17 @@ ENUM_VALUES_PER_LINE = 4
# is generated for HTML Help). For this to work a browser that supports # is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature. # Windows users are probably better off using the HTML help feature.
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.


GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO


# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
# documentation. Note that a value of 0 will completely suppress the enum
# values from appearing in the overview section.


USE_INLINE_TREES = NO
ENUM_VALUES_PER_LINE = 4


# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree # used to set the initial width (in pixels) of the frame in which the tree
@@ -961,6 +1142,11 @@ USE_INLINE_TREES = NO


TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250


# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
# links to external symbols imported via tag files in a separate window.

EXT_LINKS_IN_WINDOW = NO

# Use this tag to change the font size of Latex formulas included # Use this tag to change the font size of Latex formulas included
# as images in the HTML documentation. The default is 10. Note that # as images in the HTML documentation. The default is 10. Note that
# when you change the font size after a successful doxygen run you need # when you change the font size after a successful doxygen run you need
@@ -969,13 +1155,60 @@ TREEVIEW_WIDTH = 250


FORMULA_FONTSIZE = 10 FORMULA_FONTSIZE = 10


# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
# there is already a search function so this one should typically
# be disabled.
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are
# not supported properly for IE 6.0, but are supported on all modern browsers.
# Note that when changing this option you need to delete any form_*.png files
# in the HTML output before the changes have effect.

FORMULA_TRANSPARENT = YES

# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
# (see http://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you may also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option.

USE_MATHJAX = NO

# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to
# the MathJax Content Delivery Network so you can quickly see the result without
# installing MathJax.
# However, it is strongly recommended to install a local
# copy of MathJax from http://www.mathjax.org before deployment.

MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest

# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.

MATHJAX_EXTENSIONS =

# When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
# (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.


SEARCHENGINE = NO SEARCHENGINE = NO


# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.

SERVER_BASED_SEARCH = NO

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -993,6 +1226,9 @@ LATEX_OUTPUT = latex


# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name. # invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.


LATEX_CMD_NAME = latex LATEX_CMD_NAME = latex


@@ -1009,7 +1245,7 @@ MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO COMPACT_LATEX = NO


# The PAPER_TYPE tag can be used to set the paper type that is used # The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, a4wide, letter, legal and
# by the printer. Possible values are: a4, letter, legal and
# executive. If left blank a4wide will be used. # executive. If left blank a4wide will be used.


PAPER_TYPE = a4wide PAPER_TYPE = a4wide
@@ -1026,6 +1262,13 @@ EXTRA_PACKAGES =


LATEX_HEADER = LATEX_HEADER =


# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
# the generated latex document. The footer should contain everything after
# the last chapter. If it is left blank doxygen will generate a
# standard footer. Notice: only use this tag if you know what you are doing!

LATEX_FOOTER =

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will # is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references # contain links (just like the HTML output) instead of page references
@@ -1052,10 +1295,19 @@ LATEX_BATCHMODE = NO


LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO


# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
# source code with syntax highlighting in the LaTeX output.
# Note that which sources are shown also depends on other settings
# such as SOURCE_BROWSER.


LATEX_SOURCE_CODE = NO LATEX_SOURCE_CODE = NO


# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
# http://en.wikipedia.org/wiki/BibTeX for more info.

LATEX_BIB_STYLE = plain

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -1087,7 +1339,7 @@ COMPACT_RTF = NO


RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO


# Load stylesheet definitions from file. Syntax is similar to doxygen's
# Load style sheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide # config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value. # replacements, missing definitions are set to their default value.


@@ -1232,7 +1484,7 @@ MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO


# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# in the INCLUDE_PATH (see below) will be search if a #include is found.
# pointed to by INCLUDE_PATH will be searched when a #include is found.


SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES


@@ -1262,15 +1514,15 @@ PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded. # this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used. # The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition.
# Use the PREDEFINED tag if you want to use a different macro definition that
# overrules the definition found in the source code.


EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =


# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
# on a line, have an all uppercase name, and do not end with a semicolon. Such
# function macros are typically used for boiler-plate code, and will confuse
# the parser if not removed.
# doxygen's preprocessor will remove all references to function-like macros
# that are alone on a line, have an all uppercase name, and do not end with a
# semicolon, because these will confuse the parser if not removed.


SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES


@@ -1278,22 +1530,18 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------


# The TAGFILES option can be used to specify one or more tagfiles.
# Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without
# this location is as follows:
# The TAGFILES option can be used to specify one or more tagfiles. For each
# tag file the location of the external documentation should be added. The
# format of a tag file without this location is as follows:
# #
# TAGFILES = file1 file2 ... # TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows: # Adding location for the tag files is done as follows:
# #
# TAGFILES = file1=loc1 "file2 = loc2" ... # TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool
# does not have to be run to correct the links.
# Note that each tag file must have a unique name
# (where the name does NOT include the path)
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
# where "loc1" and "loc2" can be relative or absolute paths
# or URLs. Note that each tag file must have a unique name (where the name does
# NOT include the path). If a tag file is not located in the directory in which
# doxygen is run, you must also specify the path to the tagfile here.


TAGFILES = TAGFILES =


@@ -1326,9 +1574,8 @@ PERL_PATH = /usr/bin/perl
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that # or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option is superseded by the HAVE_DOT option below. This is only a
# fallback. It is recommended to install and use dot, since it yields more
# powerful graphs.
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.


CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO


@@ -1354,14 +1601,20 @@ HIDE_UNDOC_RELATIONS = YES


HAVE_DOT = NO HAVE_DOT = NO


# By default doxygen will write a font called FreeSans.ttf to the output
# directory and reference it in all dot files that doxygen generates. This
# font does not include all possible unicode characters however, so when you need
# these (or just want a differently looking font) you can specify the font name
# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
# which can be done by putting it in a standard location or by setting the
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
# containing the font.
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
# base this on the number of processors available in the system. You can set it
# explicitly to a value larger than 0 to get control over the balance
# between CPU load and processing speed.

DOT_NUM_THREADS = 0

# By default doxygen will use the Helvetica font for all dot files that
# doxygen generates. When you want a differently looking font you can specify
# the font name using DOT_FONTNAME. You need to make sure dot is able to find
# the font, which can be done by putting it in a standard location or by setting
# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font.


DOT_FONTNAME = FreeSans DOT_FONTNAME = FreeSans


@@ -1370,17 +1623,16 @@ DOT_FONTNAME = FreeSans


DOT_FONTSIZE = 10 DOT_FONTSIZE = 10


# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
# can find it using this tag.
# By default doxygen will tell dot to use the Helvetica font.
# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
# set the path where dot can find it.


DOT_FONTPATH = DOT_FONTPATH =


# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and # will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the # indirect inheritance relations. Setting this tag to YES will force the
# the CLASS_DIAGRAMS tag to NO.
# CLASS_DIAGRAMS tag to NO.


CLASS_GRAPH = NO CLASS_GRAPH = NO


@@ -1402,6 +1654,15 @@ GROUP_GRAPHS = YES


UML_LOOK = NO UML_LOOK = NO


# If the UML_LOOK tag is enabled, the fields and methods are shown inside
# the class node. If there are many fields or methods and many nodes the
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
# threshold limits the number of items for each type to make the size more
# managable. Set this to 0 for no limit. Note that the threshold may be
# exceeded by 50% before the limit is enforced.

UML_LIMIT_NUM_FIELDS = 10

# If set to YES, the inheritance and collaboration graphs will show the # If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances. # relations between templates and their instances.


@@ -1438,23 +1699,34 @@ CALL_GRAPH = NO
CALLER_GRAPH = NO CALLER_GRAPH = NO


# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
# will generate a graphical hierarchy of all classes instead of a textual one.


GRAPHICAL_HIERARCHY = NO GRAPHICAL_HIERARCHY = NO


# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories # then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include # in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories. # relations between the files in the directories.


DIRECTORY_GRAPH = YES
DIRECTORY_GRAPH = NO


# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, jpg, or gif
# If left blank png will be used.
# generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used. If you choose svg you need to set
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).


DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png


# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
# Note that this requires a modern browser other than Internet Explorer.
# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible. Older versions of IE do not have SVG support.

INTERACTIVE_SVG = NO

# The tag DOT_PATH can be used to specify the path where the dot tool can be # The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path. # found. If left blank, it is assumed the dot tool can be found in the path.


@@ -1466,6 +1738,12 @@ DOT_PATH =


DOTFILE_DIRS = DOTFILE_DIRS =


# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).

MSCFILE_DIRS =

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph # nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is # becomes larger than this value, doxygen will truncate the graph, which is

c++/carla-lilv/serd-0.14.0/doc/style.css → c++/carla-lilv/lilv-0.14.4/doc/style.css View File

@@ -1,5 +1,5 @@
body { body {
font-size: 100%;
font-size: medium;
font-family: sans-serif; font-family: sans-serif;
} }


@@ -9,7 +9,7 @@ body {
padding: 0; padding: 0;
border-bottom: 1px solid #DDD; border-bottom: 1px solid #DDD;
margin-bottom: 1ex; margin-bottom: 1ex;
font-size: 180%;
font-size: xx-large;
font-weight: bold; font-weight: bold;
} }


@@ -113,33 +113,24 @@ div.navtab {


/* @group Link Styling */ /* @group Link Styling */
a { a {
color: #3D578C;
color: #3D8C57;
text-decoration: none; text-decoration: none;
} }


.contents a:visited { .contents a:visited {
color: #4665A2;
color: #50755E;
} }


a:hover { a:hover {
text-decoration: underline; text-decoration: underline;
} }


a.qindex {
}

a.qindexHL { a.qindexHL {
background-color: #9CAFD4; background-color: #9CAFD4;
color: #FFF; color: #FFF;
border: 1px double #869DCA; border: 1px double #869DCA;
} }


a.el {
}

a.elRef {
}

a.code { a.code {
color: #4665A2; color: #4665A2;
} }
@@ -245,7 +236,7 @@ div.center img {


address.footer { address.footer {
text-align: right; text-align: right;
padding-right: 12px;
padding: 0 0.25em 0.25em 0;
} }


img.footer { img.footer {
@@ -324,7 +315,7 @@ hr.footer {
/* @group Member Descriptions */ /* @group Member Descriptions */
table.memberdecls { table.memberdecls {
border-spacing: 0; border-spacing: 0;
font-size: 94%;
font-size: small;
} }


.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams { .mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams {
@@ -338,7 +329,7 @@ table.memberdecls {
} }


.memItemLeft,.memItemRight,.memTemplParams { .memItemLeft,.memItemRight,.memTemplParams {
border-top: 1px solid #EEE;
border-top: 1px solid #DDD;
} }


.memItemLeft,.memTemplItemLeft { .memItemLeft,.memTemplItemLeft {
@@ -372,6 +363,7 @@ table.memberdecls {
.memitem { .memitem {
padding: 0; padding: 0;
margin: 1ex 0 2ex 0; margin: 1ex 0 2ex 0;
border: 1px solid #CCC;
} }


.memname { .memname {
@@ -380,9 +372,8 @@ table.memberdecls {
} }


.memproto { .memproto {
border-top: 1px solid #DDD;
border-bottom: 1px solid #DDD;
padding: 0.5ex; padding: 0.5ex;
color: #253555;
font-weight: bold; font-weight: bold;
background-color: #F3F3F3; background-color: #F3F3F3;
} }

c++/carla-lilv/lilv-0.14.2/lilv.pc.in → c++/carla-lilv/lilv-0.14.4/lilv.pc.in View File


c++/carla-lilv/lilv-0.14.2/lilv.ttl → c++/carla-lilv/lilv-0.14.4/lilv.ttl View File


c++/carla-lilv/lilv-0.14.2/lilv/lilv.h → c++/carla-lilv/lilv-0.14.4/lilv/lilv.h View File

@@ -1664,7 +1664,7 @@ typedef unsigned (*LilvUISupportedFunc)(const char* container_type_uri,
@param supported_func User provided supported predicate. @param supported_func User provided supported predicate.
@param container_type The widget type to host the UI within. @param container_type The widget type to host the UI within.
@param ui_type (Output) If non-NULL, set to the native type of the UI @param ui_type (Output) If non-NULL, set to the native type of the UI
which the caller must free with lilv_node_free.
which is owned by @c ui and must not be freed by the caller.
@return The embedding quality level returned by @c supported_func. @return The embedding quality level returned by @c supported_func.
*/ */
LILV_API LILV_API

c++/carla-lilv/lilv-0.14.2/lilv/lilvmm.hpp → c++/carla-lilv/lilv-0.14.4/lilv/lilvmm.hpp View File

@@ -19,6 +19,12 @@


#include "lilv/lilv.h" #include "lilv/lilv.h"


#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
# define LILV_DEPRECATED __attribute__((__deprecated__))
#else
# define LILV_DEPRECATED
#endif

namespace Lilv { namespace Lilv {


static inline const char* static inline const char*
@@ -130,7 +136,7 @@ struct ScalePoints {
struct Nodes { struct Nodes {
LILV_WRAP_COLL(Nodes, Node, nodes); LILV_WRAP_COLL(Nodes, Node, nodes);
LILV_WRAP1(bool, nodes, contains, const Node, node); LILV_WRAP1(bool, nodes, contains, const Node, node);
LILV_WRAP0(Node, nodes, get_first);
LILV_WRAP0(Node, nodes, get_first);
}; };


struct Port { struct Port {
@@ -166,10 +172,10 @@ struct UI {
inline UI(const LilvUI* c_obj) : me(c_obj) {} inline UI(const LilvUI* c_obj) : me(c_obj) {}
LILV_WRAP_CONVERSION(const LilvUI); LILV_WRAP_CONVERSION(const LilvUI);


LILV_WRAP0(Node, ui, get_uri);
LILV_WRAP1(bool, ui, is_a, LilvNode*, ui_class);
LILV_WRAP0(Node, ui, get_bundle_uri);
LILV_WRAP0(Node, ui, get_binary_uri);
LILV_WRAP0(Node, ui, get_uri);
LILV_WRAP1(bool, ui, is_a, LilvNode*, ui_class);
LILV_WRAP0(Node, ui, get_bundle_uri);
LILV_WRAP0(Node, ui, get_binary_uri);
LILV_WRAP0(Nodes, ui, get_supported_features); LILV_WRAP0(Nodes, ui, get_supported_features);
LILV_WRAP0(Nodes, ui, get_required_features); LILV_WRAP0(Nodes, ui, get_required_features);
LILV_WRAP0(Nodes, ui, get_optional_features); LILV_WRAP0(Nodes, ui, get_optional_features);
@@ -205,9 +211,8 @@ struct Plugin {
LILV_WRAP0(Node, plugin, get_author_email); LILV_WRAP0(Node, plugin, get_author_email);
LILV_WRAP0(Node, plugin, get_author_homepage); LILV_WRAP0(Node, plugin, get_author_homepage);
LILV_WRAP0(bool, plugin, is_replaced); LILV_WRAP0(bool, plugin, is_replaced);
LILV_WRAP0(Nodes, plugin, get_extension_data);
LILV_WRAP1(Nodes, plugin, get_related, Node, pred);
LILV_WRAP0(UIs, plugin, get_uis);
LILV_WRAP0(Nodes, plugin, get_extension_data);
LILV_WRAP0(UIs, plugin, get_uis);


inline Port get_port_by_index(unsigned index) { inline Port get_port_by_index(unsigned index) {
return Port(me, lilv_plugin_get_port_by_index(me, index)); return Port(me, lilv_plugin_get_port_by_index(me, index));
@@ -239,11 +244,28 @@ struct Plugins {
}; };


struct Instance { struct Instance {
inline Instance(LilvInstance* instance) : me(instance) {}

LILV_DEPRECATED
inline Instance(Plugin plugin, double sample_rate) { inline Instance(Plugin plugin, double sample_rate) {
// TODO: features
me = lilv_plugin_instantiate(plugin, sample_rate, NULL); me = lilv_plugin_instantiate(plugin, sample_rate, NULL);
} }


LILV_DEPRECATED inline Instance(Plugin plugin,
double sample_rate,
LV2_Feature* const* features) {
me = lilv_plugin_instantiate(plugin, sample_rate, features);
}

static inline Instance* create(Plugin plugin,
double sample_rate,
LV2_Feature* const* features) {
LilvInstance* me = lilv_plugin_instantiate(
plugin, sample_rate, features);

return me ? new Instance(me) : NULL;
}

LILV_WRAP_CONVERSION(LilvInstance); LILV_WRAP_CONVERSION(LilvInstance);


LILV_WRAP2_VOID(instance, connect_port, LILV_WRAP2_VOID(instance, connect_port,
@@ -254,12 +276,18 @@ struct Instance {
LILV_WRAP1_VOID(instance, run, unsigned, sample_count); LILV_WRAP1_VOID(instance, run, unsigned, sample_count);
LILV_WRAP0_VOID(instance, deactivate); LILV_WRAP0_VOID(instance, deactivate);


// TODO: get_extension_data
inline const void* get_extension_data(const char* uri) {
return lilv_instance_get_extension_data(me, uri);
}


inline const LV2_Descriptor* get_descriptor() { inline const LV2_Descriptor* get_descriptor() {
return lilv_instance_get_descriptor(me); return lilv_instance_get_descriptor(me);
} }


inline LV2_Handle get_handle() {
return lilv_instance_get_handle(me);
}

LilvInstance* me; LilvInstance* me;
}; };


@@ -291,7 +319,6 @@ struct World {
LILV_WRAP2_VOID(world, set_option, const char*, uri, LilvNode*, value); LILV_WRAP2_VOID(world, set_option, const char*, uri, LilvNode*, value);
LILV_WRAP0_VOID(world, load_all); LILV_WRAP0_VOID(world, load_all);
LILV_WRAP1_VOID(world, load_bundle, LilvNode*, bundle_uri); LILV_WRAP1_VOID(world, load_bundle, LilvNode*, bundle_uri);
LILV_WRAP1_VOID(world, load_resource, LilvNode*, resource);
LILV_WRAP0(const LilvPluginClass*, world, get_plugin_class); LILV_WRAP0(const LilvPluginClass*, world, get_plugin_class);
LILV_WRAP0(const LilvPluginClasses*, world, get_plugin_classes); LILV_WRAP0(const LilvPluginClasses*, world, get_plugin_classes);
LILV_WRAP0(const Plugins, world, get_all_plugins); LILV_WRAP0(const Plugins, world, get_all_plugins);

c++/carla-lilv/lilv-0.14.2/src/collections.c → c++/carla-lilv/lilv-0.14.4/src/collections.c View File

@@ -25,8 +25,8 @@ lilv_ptr_cmp(const void* a, const void* b, void* user_data)
int int
lilv_resource_node_cmp(const void* a, const void* b, void* user_data) lilv_resource_node_cmp(const void* a, const void* b, void* user_data)
{ {
const SordNode* an = ((LilvNode*)a)->val.uri_val;
const SordNode* bn = ((LilvNode*)b)->val.uri_val;
const SordNode* an = ((const LilvNode*)a)->node;
const SordNode* bn = ((const LilvNode*)b)->node;
return (intptr_t)an - (intptr_t)bn; return (intptr_t)an - (intptr_t)bn;
} }


@@ -48,7 +48,7 @@ lilv_collection_free(LilvCollection* coll)
unsigned unsigned
lilv_collection_size(const LilvCollection* coll) lilv_collection_size(const LilvCollection* coll)
{ {
return (coll ? zix_tree_size((ZixTree*)coll) : 0);
return (coll ? zix_tree_size((const ZixTree*)coll) : 0);
} }


LilvIter* LilvIter*
@@ -104,14 +104,15 @@ const LilvPluginClass*
lilv_plugin_classes_get_by_uri(const LilvPluginClasses* coll, lilv_plugin_classes_get_by_uri(const LilvPluginClasses* coll,
const LilvNode* uri) const LilvNode* uri)
{ {
return (LilvPluginClass*)lilv_collection_get_by_uri((ZixTree*)coll, uri);
return (LilvPluginClass*)lilv_collection_get_by_uri(
(const ZixTree*)coll, uri);
} }


LILV_API LILV_API
const LilvUI* const LilvUI*
lilv_uis_get_by_uri(const LilvUIs* coll, const LilvNode* uri) lilv_uis_get_by_uri(const LilvUIs* coll, const LilvNode* uri)
{ {
return (LilvUI*)lilv_collection_get_by_uri((ZixTree*)coll, uri);
return (LilvUI*)lilv_collection_get_by_uri((const ZixTree*)coll, uri);
} }


/* Plugins */ /* Plugins */
@@ -126,7 +127,7 @@ LILV_API
const LilvPlugin* const LilvPlugin*
lilv_plugins_get_by_uri(const LilvPlugins* list, const LilvNode* uri) lilv_plugins_get_by_uri(const LilvPlugins* list, const LilvNode* uri)
{ {
return (LilvPlugin*)lilv_collection_get_by_uri((ZixTree*)list, uri);
return (LilvPlugin*)lilv_collection_get_by_uri((const ZixTree*)list, uri);
} }


/* Nodes */ /* Nodes */

c++/carla-lilv/lilv-0.14.2/src/instance.c → c++/carla-lilv/lilv-0.14.4/src/instance.c View File

@@ -83,7 +83,7 @@ lilv_plugin_instantiate(const LilvPlugin* plugin,
result = (LilvInstance*)malloc(sizeof(LilvInstance)); result = (LilvInstance*)malloc(sizeof(LilvInstance));
result->lv2_descriptor = ld; result->lv2_descriptor = ld;
result->lv2_handle = ld->instantiate( result->lv2_handle = ld->instantiate(
ld, sample_rate, (char*)bundle_path,
ld, sample_rate, bundle_path,
(features) ? features : local_features); (features) ? features : local_features);
result->pimpl = lib; result->pimpl = lib;
serd_node_free(&abs_uri_node); serd_node_free(&abs_uri_node);

c++/carla-lilv/lilv-0.14.2/src/lib.c → c++/carla-lilv/lilv-0.14.4/src/lib.c View File


c++/carla-lilv/lilv-0.14.2/src/lilv_internal.h → c++/carla-lilv/lilv-0.14.4/src/lilv_internal.h View File

@@ -35,6 +35,7 @@ extern "C" {
# define __func__ __FUNCTION__ # define __func__ __FUNCTION__
# define INFINITY DBL_MAX + DBL_MAX # define INFINITY DBL_MAX + DBL_MAX
# define NAN INFINITY - INFINITY # define NAN INFINITY - INFINITY
# define snprintf _snprintf
# endif # endif
static inline char* dlerror(void) { return "Unknown error"; } static inline char* dlerror(void) { return "Unknown error"; }
#else #else
@@ -50,7 +51,7 @@ static inline char* dlerror(void) { return "Unknown error"; }
#include "lilv/lilv.h" #include "lilv/lilv.h"


#ifdef LILV_DYN_MANIFEST #ifdef LILV_DYN_MANIFEST
# include "lv2/dynmanifest.h"
# include "lv2/lv2plug.in/ns/ext/dynmanifest/dynmanifest.h"
#endif #endif


/* /*
@@ -200,19 +201,14 @@ typedef enum {
} LilvNodeType; } LilvNodeType;


struct LilvNodeImpl { struct LilvNodeImpl {
LilvWorld* world;
char* str_val; ///< always present
LilvWorld* world;
SordNode* node;
LilvNodeType type;
union { union {
int int_val;
float float_val;
bool bool_val;
SordNode* uri_val;
struct {
void* buf;
size_t size;
} blob_val;
int int_val;
float float_val;
bool bool_val;
} val; } val;
LilvNodeType type;
}; };


struct LilvScalePointImpl { struct LilvScalePointImpl {

c++/carla-lilv/lilv-0.14.2/src/node.c → c++/carla-lilv/lilv-0.14.4/src/node.c View File

@@ -23,25 +23,24 @@
static void static void
lilv_node_set_numerics_from_string(LilvNode* val, size_t len) lilv_node_set_numerics_from_string(LilvNode* val, size_t len)
{ {
char* endptr;
const char* str = (const char*)sord_node_get_string(val->node);
char* endptr;


switch (val->type) { switch (val->type) {
case LILV_VALUE_URI: case LILV_VALUE_URI:
case LILV_VALUE_BLANK: case LILV_VALUE_BLANK:
case LILV_VALUE_STRING: case LILV_VALUE_STRING:
case LILV_VALUE_BLOB:
break; break;
case LILV_VALUE_INT: case LILV_VALUE_INT:
val->val.int_val = strtol(val->str_val, &endptr, 10);
val->val.int_val = strtol(str, &endptr, 10);
break; break;
case LILV_VALUE_FLOAT: case LILV_VALUE_FLOAT:
val->val.float_val = serd_strtod(val->str_val, &endptr);
val->val.float_val = serd_strtod(str, &endptr);
break; break;
case LILV_VALUE_BOOL: case LILV_VALUE_BOOL:
val->val.bool_val = (!strcmp(val->str_val, "true"));
val->val.bool_val = !strcmp(str, "true");
break; break;
case LILV_VALUE_BLOB:
val->val.blob_val.buf = serd_base64_decode(
(const uint8_t*)val->str_val, len, &val->val.blob_val.size);
} }
} }


@@ -57,20 +56,32 @@ lilv_node_new(LilvWorld* world, LilvNodeType type, const char* str)
val->world = world; val->world = world;
val->type = type; val->type = type;


const uint8_t* ustr = (const uint8_t*)str;
switch (type) { switch (type) {
case LILV_VALUE_URI: case LILV_VALUE_URI:
val->val.uri_val = sord_new_uri(world->world, (const uint8_t*)str);
val->str_val = (char*)sord_node_get_string(val->val.uri_val);
val->node = sord_new_uri(world->world, ustr);
break; break;
case LILV_VALUE_BLANK: case LILV_VALUE_BLANK:
val->val.uri_val = sord_new_blank(world->world, (const uint8_t*)str);
val->str_val = (char*)sord_node_get_string(val->val.uri_val);
val->node = sord_new_blank(world->world, ustr);
break;
case LILV_VALUE_STRING: case LILV_VALUE_STRING:
val->node = sord_new_literal(world->world, NULL, ustr, NULL);
break;
case LILV_VALUE_INT: case LILV_VALUE_INT:
val->node = sord_new_literal(
world->world, world->uris.xsd_integer, ustr, NULL);
break;
case LILV_VALUE_FLOAT: case LILV_VALUE_FLOAT:
val->node = sord_new_literal(
world->world, world->uris.xsd_decimal, ustr, NULL);
break;
case LILV_VALUE_BOOL: case LILV_VALUE_BOOL:
val->node = sord_new_literal(
world->world, world->uris.xsd_boolean, ustr, NULL);
break;
case LILV_VALUE_BLOB: case LILV_VALUE_BLOB:
val->str_val = lilv_strdup(str);
val->node = sord_new_literal(
world->world, world->uris.xsd_base64Binary, ustr, NULL);
break; break;
} }


@@ -88,18 +99,16 @@ lilv_node_new_from_node(LilvWorld* world, const SordNode* node)


switch (sord_node_get_type(node)) { switch (sord_node_get_type(node)) {
case SORD_URI: case SORD_URI:
result = (LilvNode*)malloc(sizeof(LilvNode));
result->world = (LilvWorld*)world;
result->type = LILV_VALUE_URI;
result->val.uri_val = sord_node_copy(node);
result->str_val = (char*)sord_node_get_string(result->val.uri_val);
result = (LilvNode*)malloc(sizeof(LilvNode));
result->world = (LilvWorld*)world;
result->type = LILV_VALUE_URI;
result->node = sord_node_copy(node);
break; break;
case SORD_BLANK: case SORD_BLANK:
result = (LilvNode*)malloc(sizeof(LilvNode));
result->world = (LilvWorld*)world;
result->type = LILV_VALUE_BLANK;
result->val.uri_val = sord_node_copy(node);
result->str_val = (char*)sord_node_get_string(result->val.uri_val);
result = (LilvNode*)malloc(sizeof(LilvNode));
result->world = (LilvWorld*)world;
result->type = LILV_VALUE_BLANK;
result->node = sord_node_copy(node);
break; break;
case SORD_LITERAL: case SORD_LITERAL:
datatype_uri = sord_node_get_datatype(node); datatype_uri = sord_node_get_datatype(node);
@@ -179,24 +188,15 @@ LILV_API
LilvNode* LilvNode*
lilv_node_duplicate(const LilvNode* val) lilv_node_duplicate(const LilvNode* val)
{ {
if (val == NULL)
if (!val) {
return NULL; return NULL;
}


LilvNode* result = (LilvNode*)malloc(sizeof(LilvNode)); LilvNode* result = (LilvNode*)malloc(sizeof(LilvNode));
result->world = val->world; result->world = val->world;
result->type = val->type;

switch (val->type) {
case LILV_VALUE_URI:
case LILV_VALUE_BLANK:
result->val.uri_val = sord_node_copy(val->val.uri_val);
result->str_val = (char*)sord_node_get_string(result->val.uri_val);
break;
default:
result->str_val = lilv_strdup(val->str_val);
result->val = val->val;
}

result->node = sord_node_copy(val->node);
result->val = val->val;
result->type = val->type;
return result; return result;
} }


@@ -205,14 +205,7 @@ void
lilv_node_free(LilvNode* val) lilv_node_free(LilvNode* val)
{ {
if (val) { if (val) {
switch (val->type) {
case LILV_VALUE_URI:
case LILV_VALUE_BLANK:
sord_node_free(val->world->world, val->val.uri_val);
break;
default:
free(val->str_val);
}
sord_node_free(val->world->world, val->node);
free(val); free(val);
} }
} }
@@ -230,20 +223,16 @@ lilv_node_equals(const LilvNode* value, const LilvNode* other)


switch (value->type) { switch (value->type) {
case LILV_VALUE_URI: case LILV_VALUE_URI:
return sord_node_equals(value->val.uri_val, other->val.uri_val);
case LILV_VALUE_BLANK: case LILV_VALUE_BLANK:
case LILV_VALUE_STRING: case LILV_VALUE_STRING:
return !strcmp(value->str_val, other->str_val);
case LILV_VALUE_BLOB:
return sord_node_equals(value->node, other->node);
case LILV_VALUE_INT: case LILV_VALUE_INT:
return (value->val.int_val == other->val.int_val); return (value->val.int_val == other->val.int_val);
case LILV_VALUE_FLOAT: case LILV_VALUE_FLOAT:
return (value->val.float_val == other->val.float_val); return (value->val.float_val == other->val.float_val);
case LILV_VALUE_BOOL: case LILV_VALUE_BOOL:
return (value->val.bool_val == other->val.bool_val); return (value->val.bool_val == other->val.bool_val);
case LILV_VALUE_BLOB:
return (value->val.blob_val.size == other->val.blob_val.size)
&& !memcmp(value->val.blob_val.buf, other->val.blob_val.buf,
value->val.blob_val.size);
} }


return false; /* shouldn't get here */ return false; /* shouldn't get here */
@@ -253,32 +242,33 @@ LILV_API
char* char*
lilv_node_get_turtle_token(const LilvNode* value) lilv_node_get_turtle_token(const LilvNode* value)
{ {
size_t len = 0;
char* result = NULL;
SerdNode node;
const char* str = (const char*)sord_node_get_string(value->node);
size_t len = 0;
char* result = NULL;
SerdNode node;


switch (value->type) { switch (value->type) {
case LILV_VALUE_URI: case LILV_VALUE_URI:
len = strlen(value->str_val) + 3;
len = strlen(str) + 3;
result = (char*)calloc(len, 1); result = (char*)calloc(len, 1);
snprintf(result, len, "<%s>", value->str_val);
snprintf(result, len, "<%s>", str);
break; break;
case LILV_VALUE_BLANK: case LILV_VALUE_BLANK:
len = strlen(value->str_val) + 3;
len = strlen(str) + 3;
result = (char*)calloc(len, 1); result = (char*)calloc(len, 1);
snprintf(result, len, "_:%s", value->str_val);
snprintf(result, len, "_:%s", str);
break; break;
case LILV_VALUE_STRING: case LILV_VALUE_STRING:
case LILV_VALUE_BOOL: case LILV_VALUE_BOOL:
case LILV_VALUE_BLOB: case LILV_VALUE_BLOB:
result = lilv_strdup(value->str_val);
result = lilv_strdup(str);
break; break;
case LILV_VALUE_INT: case LILV_VALUE_INT:
node = serd_node_new_integer(value->val.int_val); node = serd_node_new_integer(value->val.int_val);
result = (char*)node.buf; result = (char*)node.buf;
break; break;
case LILV_VALUE_FLOAT: case LILV_VALUE_FLOAT:
node = serd_node_new_decimal(value->val.float_val, 8);
node = serd_node_new_decimal(value->val.float_val, 8);
result = (char*)node.buf; result = (char*)node.buf;
break; break;
} }
@@ -298,14 +288,14 @@ const char*
lilv_node_as_uri(const LilvNode* value) lilv_node_as_uri(const LilvNode* value)
{ {
assert(lilv_node_is_uri(value)); assert(lilv_node_is_uri(value));
return value->str_val;
return (const char*)sord_node_get_string(value->node);
} }


const SordNode* const SordNode*
lilv_node_as_node(const LilvNode* value) lilv_node_as_node(const LilvNode* value)
{ {
assert(lilv_node_is_uri(value)); assert(lilv_node_is_uri(value));
return value->val.uri_val;
return value->node;
} }


LILV_API LILV_API
@@ -320,7 +310,7 @@ const char*
lilv_node_as_blank(const LilvNode* value) lilv_node_as_blank(const LilvNode* value)
{ {
assert(lilv_node_is_blank(value)); assert(lilv_node_is_blank(value));
return value->str_val;
return (const char*)sord_node_get_string(value->node);
} }


LILV_API LILV_API
@@ -351,7 +341,7 @@ LILV_API
const char* const char*
lilv_node_as_string(const LilvNode* value) lilv_node_as_string(const LilvNode* value)
{ {
return value ? value->str_val : NULL;
return value ? (const char*)sord_node_get_string(value->node) : NULL;
} }


LILV_API LILV_API

c++/carla-lilv/lilv-0.14.2/src/plugin.c → c++/carla-lilv/lilv-0.14.4/src/plugin.c View File

@@ -14,9 +14,12 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */


#define __STDC_LIMIT_MACROS

#include <assert.h> #include <assert.h>
#include <math.h> #include <math.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@@ -132,7 +135,7 @@ lilv_plugin_get_unique(const LilvPlugin* p,
static void static void
lilv_plugin_load(LilvPlugin* p) lilv_plugin_load(LilvPlugin* p)
{ {
SordNode* bundle_uri_node = p->bundle_uri->val.uri_val;
SordNode* bundle_uri_node = p->bundle_uri->node;
const SerdNode* bundle_uri_snode = sord_node_to_serd_node(bundle_uri_node); const SerdNode* bundle_uri_snode = sord_node_to_serd_node(bundle_uri_node);


SerdEnv* env = serd_env_new(bundle_uri_snode); SerdEnv* env = serd_env_new(bundle_uri_snode);
@@ -142,7 +145,7 @@ lilv_plugin_load(LilvPlugin* p)
// Parse all the plugin's data files into RDF model // Parse all the plugin's data files into RDF model
LILV_FOREACH(nodes, i, p->data_uris) { LILV_FOREACH(nodes, i, p->data_uris) {
const LilvNode* data_uri_val = lilv_nodes_get(p->data_uris, i); const LilvNode* data_uri_val = lilv_nodes_get(p->data_uris, i);
const SordNode* data_uri_node = data_uri_val->val.uri_val;
const SordNode* data_uri_node = data_uri_val->node;
const char* data_uri_str = lilv_node_as_uri(data_uri_val); const char* data_uri_str = lilv_node_as_uri(data_uri_val);


serd_env_set_base_uri(env, sord_node_to_serd_node(data_uri_node)); serd_env_set_base_uri(env, sord_node_to_serd_node(data_uri_node));
@@ -161,7 +164,7 @@ lilv_plugin_load(LilvPlugin* p)
GetDataFunc get_data_func = (GetDataFunc)lilv_dlfunc( GetDataFunc get_data_func = (GetDataFunc)lilv_dlfunc(
p->dynmanifest->lib, "lv2_dyn_manifest_get_data"); p->dynmanifest->lib, "lv2_dyn_manifest_get_data");
if (get_data_func) { if (get_data_func) {
const SordNode* bundle = p->dynmanifest->bundle->val.uri_val;
const SordNode* bundle = p->dynmanifest->bundle->node;
serd_env_set_base_uri(env, sord_node_to_serd_node(bundle)); serd_env_set_base_uri(env, sord_node_to_serd_node(bundle));
FILE* fd = tmpfile(); FILE* fd = tmpfile();
get_data_func(p->dynmanifest->handle, fd, get_data_func(p->dynmanifest->handle, fd,
@@ -209,7 +212,7 @@ lilv_plugin_load_ports_if_necessary(const LilvPlugin* const_p)


SordIter* ports = lilv_world_query_internal( SordIter* ports = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
p->world->uris.lv2_port, p->world->uris.lv2_port,
NULL); NULL);


@@ -221,7 +224,8 @@ lilv_plugin_load_ports_if_necessary(const LilvPlugin* const_p)
p, port, p->world->uris.lv2_symbol); p, port, p->world->uris.lv2_symbol);


bool error = false; bool error = false;
if (!lilv_node_is_string(symbol) || !is_symbol(symbol->str_val)) {
if (!lilv_node_is_string(symbol) ||
!is_symbol((const char*)sord_node_get_string(symbol->node))) {
LILV_ERRORF("Plugin <%s> port symbol `%s' is invalid\n", LILV_ERRORF("Plugin <%s> port symbol `%s' is invalid\n",
lilv_node_as_uri(p->plugin_uri), lilv_node_as_uri(p->plugin_uri),
lilv_node_as_string(symbol)); lilv_node_as_string(symbol));
@@ -329,7 +333,7 @@ lilv_plugin_get_library_uri(const LilvPlugin* const_p)
// <plugin> lv2:binary ?binary // <plugin> lv2:binary ?binary
SordIter* results = lilv_world_query_internal( SordIter* results = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
p->world->uris.lv2_binary, p->world->uris.lv2_binary,
NULL); NULL);
FOREACH_MATCH(results) { FOREACH_MATCH(results) {
@@ -365,7 +369,7 @@ lilv_plugin_get_class(const LilvPlugin* const_p)
// <plugin> a ?class // <plugin> a ?class
SordIter* results = lilv_world_query_internal( SordIter* results = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
p->world->uris.rdf_a, p->world->uris.rdf_a,
NULL); NULL);
FOREACH_MATCH(results) { FOREACH_MATCH(results) {
@@ -402,7 +406,7 @@ lilv_plugin_get_value_internal(const LilvPlugin* p,
{ {
lilv_plugin_load_if_necessary(p); lilv_plugin_load_if_necessary(p);
return lilv_world_query_values_internal( return lilv_world_query_values_internal(
p->world, p->plugin_uri->val.uri_val, predicate, NULL);
p->world, p->plugin_uri->node, predicate, NULL);
} }


LILV_API LILV_API
@@ -564,7 +568,7 @@ lilv_plugin_has_latency(const LilvPlugin* p)
lilv_plugin_load_if_necessary(p); lilv_plugin_load_if_necessary(p);
SordIter* ports = lilv_world_query_internal( SordIter* ports = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
p->world->uris.lv2_port, p->world->uris.lv2_port,
NULL); NULL);


@@ -599,7 +603,7 @@ lilv_plugin_get_port_by_property(const LilvPlugin* plugin,
plugin->world, plugin->world,
port->node, port->node,
plugin->world->uris.lv2_portProperty, plugin->world->uris.lv2_portProperty,
port_property->val.uri_val);
port_property->node);


const bool found = !sord_iter_end(iter); const bool found = !sord_iter_end(iter);
sord_iter_free(iter); sord_iter_free(iter);
@@ -626,7 +630,7 @@ lilv_plugin_get_port_by_designation(const LilvPlugin* plugin,
world, world,
port->node, port->node,
world->uris.lv2_designation, world->uris.lv2_designation,
designation->val.uri_val);
designation->node);


const bool found = !sord_iter_end(iter) && const bool found = !sord_iter_end(iter) &&
lilv_port_is_a(plugin, port, port_class); lilv_port_is_a(plugin, port, port_class);
@@ -710,15 +714,16 @@ lilv_plugin_has_extension_data(const LilvPlugin* p,
const LilvNode* uri) const LilvNode* uri)
{ {
if (!lilv_node_is_uri(uri)) { if (!lilv_node_is_uri(uri)) {
LILV_ERRORF("Extension data `%s' is not a URI\n", uri->str_val);
LILV_ERRORF("Extension data `%s' is not a URI\n",
sord_node_get_string(uri->node));
return false; return false;
} }


SordIter* iter = lilv_world_query_internal( SordIter* iter = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
p->world->uris.lv2_extensionData, p->world->uris.lv2_extensionData,
uri->val.uri_val);
uri->node);


if (iter) { if (iter) {
sord_iter_free(iter); sord_iter_free(iter);
@@ -773,7 +778,7 @@ lilv_plugin_get_project(const LilvPlugin* p)


SordIter* projects = lilv_world_query_internal( SordIter* projects = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
lv2_project, lv2_project,
NULL); NULL);


@@ -799,7 +804,7 @@ lilv_plugin_get_author(const LilvPlugin* p)


SordIter* maintainers = lilv_world_query_internal( SordIter* maintainers = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
doap_maintainer, doap_maintainer,
NULL); NULL);


@@ -813,7 +818,7 @@ lilv_plugin_get_author(const LilvPlugin* p)


maintainers = lilv_world_query_internal( maintainers = lilv_world_query_internal(
p->world, p->world,
project->val.uri_val,
project->node,
doap_maintainer, doap_maintainer,
NULL); NULL);
} }
@@ -888,7 +893,7 @@ lilv_plugin_get_uis(const LilvPlugin* p)
LilvUIs* result = lilv_uis_new(); LilvUIs* result = lilv_uis_new();
SordIter* uis = lilv_world_query_internal( SordIter* uis = lilv_world_query_internal(
p->world, p->world,
p->plugin_uri->val.uri_val,
p->plugin_uri->node,
ui_ui_node, ui_ui_node,
NULL); NULL);


@@ -937,7 +942,7 @@ lilv_plugin_get_related(const LilvPlugin* plugin, const LilvNode* type)
world, world,
NULL, NULL,
world->uris.lv2_appliesTo, world->uris.lv2_appliesTo,
lilv_plugin_get_uri(plugin)->val.uri_val);
lilv_plugin_get_uri(plugin)->node);


if (!type) { if (!type) {
return related; return related;
@@ -947,10 +952,10 @@ lilv_plugin_get_related(const LilvPlugin* plugin, const LilvNode* type)
LILV_FOREACH(nodes, i, related) { LILV_FOREACH(nodes, i, related) {
LilvNode* node = (LilvNode*)lilv_collection_get((ZixTree*)related, i); LilvNode* node = (LilvNode*)lilv_collection_get((ZixTree*)related, i);
SordIter* titer = lilv_world_query_internal( SordIter* titer = lilv_world_query_internal(
world, node->val.uri_val, world->uris.rdf_a, type->val.uri_val);
world, node->node, world->uris.rdf_a, type->node);
if (!sord_iter_end(titer)) { if (!sord_iter_end(titer)) {
zix_tree_insert((ZixTree*)matches, zix_tree_insert((ZixTree*)matches,
lilv_node_new_from_node(world, node->val.uri_val),
lilv_node_new_from_node(world, node->node),
NULL); NULL);
} }
sord_iter_free(titer); sord_iter_free(titer);
@@ -998,7 +1003,7 @@ lilv_plugin_write_description(LilvWorld* world,
{ {
const LilvNode* subject = lilv_plugin_get_uri(plugin); const LilvNode* subject = lilv_plugin_get_uri(plugin);
const uint32_t num_ports = lilv_plugin_get_num_ports(plugin); const uint32_t num_ports = lilv_plugin_get_num_ports(plugin);
const SerdNode* base = sord_node_to_serd_node(base_uri->val.uri_val);
const SerdNode* base = sord_node_to_serd_node(base_uri->node);
SerdEnv* env = new_lv2_env(base); SerdEnv* env = new_lv2_env(base);


SerdWriter* writer = serd_writer_new( SerdWriter* writer = serd_writer_new(
@@ -1013,16 +1018,16 @@ lilv_plugin_write_description(LilvWorld* world,
maybe_write_prefixes(writer, env, plugin_file); maybe_write_prefixes(writer, env, plugin_file);


// Write plugin description // Write plugin description
SordIter* iter = lilv_world_query_internal(
world, subject->val.uri_val, NULL, NULL);
sord_write_iter(iter, writer);
SordIter* plug_iter = lilv_world_query_internal(
world, subject->node, NULL, NULL);
sord_write_iter(plug_iter, writer);


// Write port descriptions // Write port descriptions
for (uint32_t i = 0; i < num_ports; ++i) { for (uint32_t i = 0; i < num_ports; ++i) {
const LilvPort* port = plugin->ports[i]; const LilvPort* port = plugin->ports[i];
SordIter* iter = lilv_world_query_internal(
SordIter* port_iter = lilv_world_query_internal(
world, port->node, NULL, NULL); world, port->node, NULL, NULL);
sord_write_iter(iter, writer);
sord_write_iter(port_iter, writer);
} }


serd_writer_free(writer); serd_writer_free(writer);
@@ -1038,7 +1043,7 @@ lilv_plugin_write_manifest_entry(LilvWorld* world,
const char* plugin_file_path) const char* plugin_file_path)
{ {
const LilvNode* subject = lilv_plugin_get_uri(plugin); const LilvNode* subject = lilv_plugin_get_uri(plugin);
const SerdNode* base = sord_node_to_serd_node(base_uri->val.uri_val);
const SerdNode* base = sord_node_to_serd_node(base_uri->node);
SerdEnv* env = new_lv2_env(base); SerdEnv* env = new_lv2_env(base);


SerdWriter* writer = serd_writer_new( SerdWriter* writer = serd_writer_new(
@@ -1055,7 +1060,7 @@ lilv_plugin_write_manifest_entry(LilvWorld* world,
// Write manifest entry // Write manifest entry
serd_writer_write_statement( serd_writer_write_statement(
writer, 0, NULL, writer, 0, NULL,
sord_node_to_serd_node(subject->val.uri_val),
sord_node_to_serd_node(subject->node),
sord_node_to_serd_node(plugin->world->uris.rdf_a), sord_node_to_serd_node(plugin->world->uris.rdf_a),
sord_node_to_serd_node(plugin->world->uris.lv2_Plugin), 0, 0); sord_node_to_serd_node(plugin->world->uris.lv2_Plugin), 0, 0);


@@ -1063,7 +1068,7 @@ lilv_plugin_write_manifest_entry(LilvWorld* world,
SERD_URI, (const uint8_t*)plugin_file_path); SERD_URI, (const uint8_t*)plugin_file_path);
serd_writer_write_statement( serd_writer_write_statement(
writer, 0, NULL, writer, 0, NULL,
sord_node_to_serd_node(subject->val.uri_val),
sord_node_to_serd_node(subject->node),
sord_node_to_serd_node(plugin->world->uris.rdfs_seeAlso), sord_node_to_serd_node(plugin->world->uris.rdfs_seeAlso),
&file_node, 0, 0); &file_node, 0, 0);



c++/carla-lilv/lilv-0.14.2/src/pluginclass.c → c++/carla-lilv/lilv-0.14.4/src/pluginclass.c View File


c++/carla-lilv/lilv-0.14.2/src/port.c → c++/carla-lilv/lilv-0.14.4/src/port.c View File

@@ -121,7 +121,8 @@ lilv_port_get_value(const LilvPlugin* p,
const LilvNode* predicate) const LilvNode* predicate)
{ {
if (!lilv_node_is_uri(predicate)) { if (!lilv_node_is_uri(predicate)) {
LILV_ERRORF("Predicate `%s' is not a URI\n", predicate->str_val);
LILV_ERRORF("Predicate `%s' is not a URI\n",
sord_node_get_string(predicate->node));
return NULL; return NULL;
} }



c++/carla-lilv/lilv-0.14.2/src/query.c → c++/carla-lilv/lilv-0.14.4/src/query.c View File

@@ -46,7 +46,7 @@ lilv_lang_matches(const char* a, const char* b)
return LILV_LANG_MATCH_NONE; return LILV_LANG_MATCH_NONE;
} }


LilvNodes*
static LilvNodes*
lilv_nodes_from_stream_objects_i18n(LilvWorld* world, lilv_nodes_from_stream_objects_i18n(LilvWorld* world,
SordIter* stream, SordIter* stream,
SordQuadIndex field) SordQuadIndex field)

c++/carla-lilv/lilv-0.14.2/src/scalepoint.c → c++/carla-lilv/lilv-0.14.4/src/scalepoint.c View File


c++/carla-lilv/lilv-0.14.2/src/state.c → c++/carla-lilv/lilv-0.14.4/src/state.c View File

@@ -200,16 +200,16 @@ make_path(LV2_State_Make_Path_Handle handle, const char* path)


static char* static char*
abstract_path(LV2_State_Map_Path_Handle handle, abstract_path(LV2_State_Map_Path_Handle handle,
const char* absolute_path)
const char* abs_path)
{ {
LilvState* state = (LilvState*)handle; LilvState* state = (LilvState*)handle;
char* path = NULL; char* path = NULL;
char* real_path = lilv_realpath(absolute_path);
char* real_path = lilv_realpath(abs_path);
const PathMap key = { (char*)real_path, NULL }; const PathMap key = { (char*)real_path, NULL };
ZixTreeIter* iter = NULL; ZixTreeIter* iter = NULL;


if (absolute_path[0] == '\0') {
return lilv_strdup(absolute_path);
if (abs_path[0] == '\0') {
return lilv_strdup(abs_path);
} else if (!zix_tree_find(state->abs2rel, &key, &iter)) { } else if (!zix_tree_find(state->abs2rel, &key, &iter)) {
// Already mapped path in a previous call // Already mapped path in a previous call
PathMap* pm = (PathMap*)zix_tree_get(iter); PathMap* pm = (PathMap*)zix_tree_get(iter);
@@ -259,26 +259,26 @@ abstract_path(LV2_State_Map_Path_Handle handle,


static char* static char*
absolute_path(LV2_State_Map_Path_Handle handle, absolute_path(LV2_State_Map_Path_Handle handle,
const char* abstract_path)
const char* state_path)
{ {
LilvState* state = (LilvState*)handle; LilvState* state = (LilvState*)handle;
char* path = NULL; char* path = NULL;
if (lilv_path_is_absolute(abstract_path)) {
if (lilv_path_is_absolute(state_path)) {
// Absolute path, return identical path // Absolute path, return identical path
path = lilv_strdup(abstract_path);
path = lilv_strdup(state_path);
} else if (state->dir) { } else if (state->dir) {
// Relative path inside state directory // Relative path inside state directory
path = lilv_path_join(state->dir, abstract_path);
path = lilv_path_join(state->dir, state_path);
} else { } else {
// State has not been saved, unmap // State has not been saved, unmap
path = lilv_strdup(lilv_state_rel2abs(state, abstract_path));
path = lilv_strdup(lilv_state_rel2abs(state, state_path));
} }


return path; return path;
} }


/** Return a new features array which is @c feature added to @c features. */ /** Return a new features array which is @c feature added to @c features. */
const LV2_Feature**
static const LV2_Feature**
add_features(const LV2_Feature *const * features, add_features(const LV2_Feature *const * features,
const LV2_Feature* map, const LV2_Feature* make) const LV2_Feature* map, const LV2_Feature* make)
{ {
@@ -306,6 +306,19 @@ absolute_dir(const char* path)
return base; return base;
} }


static const char*
state_strerror(LV2_State_Status st)
{
switch (st) {
case LV2_STATE_SUCCESS: return "Completed successfully";
case LV2_STATE_ERR_BAD_TYPE: return "Unsupported type";
case LV2_STATE_ERR_BAD_FLAGS: return "Unsupported flags";
case LV2_STATE_ERR_NO_FEATURE: return "Missing features";
case LV2_STATE_ERR_NO_PROPERTY: return "Missing property";
default: return "Unknown error";
}
}

LILV_API LILV_API
LilvState* LilvState*
lilv_state_new_from_instance(const LilvPlugin* plugin, lilv_state_new_from_instance(const LilvPlugin* plugin,
@@ -365,11 +378,18 @@ lilv_state_new_from_instance(const LilvPlugin* plugin,
: NULL; : NULL;


if (iface) { if (iface) {
iface->save(instance->lv2_handle, store_callback,
state, flags, features);
LV2_State_Status st = iface->save(
instance->lv2_handle, store_callback, state, flags, features);
if (st) {
LILV_ERRORF("Error saving plugin state: %s\n", state_strerror(st));
free(state->props);
state->props = NULL;
state->num_props = 0;
} else {
qsort(state->props, state->num_props, sizeof(Property), property_cmp);
}
} }


qsort(state->props, state->num_props, sizeof(Property), property_cmp);
qsort(state->values, state->num_values, sizeof(PortValue), value_cmp); qsort(state->values, state->num_values, sizeof(PortValue), value_cmp);


free(sfeatures); free(sfeatures);
@@ -557,7 +577,7 @@ lilv_state_new_from_world(LilvWorld* world,
} }


LilvState* state = new_state_from_model( LilvState* state = new_state_from_model(
world, map, world->model, node->val.uri_val, NULL);
world, map, world->model, node->node, NULL);


return state; return state;
} }
@@ -585,7 +605,7 @@ lilv_state_new_from_file(LilvWorld* world,
serd_reader_read_file(reader, node.buf); serd_reader_read_file(reader, node.buf);


SordNode* subject_node = (subject) SordNode* subject_node = (subject)
? subject->val.uri_val
? subject->node
: sord_node_from_serd_node(world->world, env, &node, NULL, NULL); : sord_node_from_serd_node(world->world, env, &node, NULL, NULL);


char* dirname = lilv_dirname(path); char* dirname = lilv_dirname(path);
@@ -760,7 +780,7 @@ lilv_state_write(LilvWorld* world,
SERD_CURIE, USTR("lv2:appliesTo")); SERD_CURIE, USTR("lv2:appliesTo"));


const SerdNode* plugin_uri = sord_node_to_serd_node( const SerdNode* plugin_uri = sord_node_to_serd_node(
state->plugin_uri->val.uri_val);
state->plugin_uri->node);


SerdNode subject = serd_node_from_string(SERD_URI, USTR(uri ? uri : "")); SerdNode subject = serd_node_from_string(SERD_URI, USTR(uri ? uri : ""));



c++/carla-lilv/lilv-0.14.2/src/ui.c → c++/carla-lilv/lilv-0.14.4/src/ui.c View File

@@ -134,7 +134,7 @@ lilv_ui_get_value_internal(const LilvUI* ui,
const SordNode* predicate) const SordNode* predicate)
{ {
return lilv_world_query_values_internal( return lilv_world_query_values_internal(
ui->world, ui->uri->val.uri_val, predicate, NULL);
ui->world, ui->uri->node, predicate, NULL);
} }


LILV_API LILV_API

c++/carla-lilv/lilv-0.14.2/src/util.c → c++/carla-lilv/lilv-0.14.4/src/util.c View File

@@ -49,6 +49,10 @@
# include <sys/file.h> # include <sys/file.h>
#endif #endif


#ifndef PAGE_SIZE
# define PAGE_SIZE 4096
#endif

char* char*
lilv_strjoin(const char* first, ...) lilv_strjoin(const char* first, ...)
{ {
@@ -65,7 +69,12 @@ lilv_strjoin(const char* first, ...)
break; break;


const size_t this_len = strlen(s); const size_t this_len = strlen(s);
result = (char*)realloc(result, len + this_len + 1);
if (!(result = (char*)realloc(result, len + this_len + 1))) {
free(result);
LILV_ERROR("realloc() failed\n");
return NULL;
}

memcpy(result + len, s, this_len); memcpy(result + len, s, this_len);
len += this_len; len += this_len;
} }
@@ -133,7 +142,7 @@ lilv_get_lang(void)
} }


/** Append suffix to dst, update dst_len, and return the realloc'd result. */ /** Append suffix to dst, update dst_len, and return the realloc'd result. */
char*
static char*
strappend(char* dst, size_t* dst_len, const char* suffix, size_t suffix_len) strappend(char* dst, size_t* dst_len, const char* suffix, size_t suffix_len)
{ {
dst = (char*)realloc(dst, *dst_len + suffix_len + 1); dst = (char*)realloc(dst, *dst_len + suffix_len + 1);
@@ -143,7 +152,7 @@ strappend(char* dst, size_t* dst_len, const char* suffix, size_t suffix_len)
} }


/** Append the value of the environment variable var to dst. */ /** Append the value of the environment variable var to dst. */
char*
static char*
append_var(char* dst, size_t* dst_len, const char* var) append_var(char* dst, size_t* dst_len, const char* var)
{ {
// Get value from environment // Get value from environment
@@ -269,10 +278,9 @@ lilv_copy_file(const char* src, const char* dst)
return 2; return 2;
} }


static const size_t page_size = 4096;
char* page = (char*)malloc(page_size);
size_t n_read = 0;
while ((n_read = fread(page, 1, page_size, in)) > 0) {
char* page = (char*)malloc(PAGE_SIZE);
size_t n_read = 0;
while ((n_read = fread(page, 1, PAGE_SIZE, in)) > 0) {
if (fwrite(page, 1, n_read, out) != n_read) { if (fwrite(page, 1, n_read, out) != n_read) {
LILV_ERRORF("write to %s failed (%s)\n", dst, strerror(errno)); LILV_ERRORF("write to %s failed (%s)\n", dst, strerror(errno));
break; break;
@@ -418,11 +426,7 @@ lilv_symlink(const char* oldpath, const char* newpath)
int ret = 0; int ret = 0;
if (strcmp(oldpath, newpath)) { if (strcmp(oldpath, newpath)) {
#ifdef _WIN32 #ifdef _WIN32
#ifndef __MINGW32__
ret = !CreateSymbolicLink(newpath, oldpath, 0); ret = !CreateSymbolicLink(newpath, oldpath, 0);
#else
ret = 0;
#endif
#else #else
ret = symlink(oldpath, newpath); ret = symlink(oldpath, newpath);
#endif #endif

c++/carla-lilv/lilv-0.14.2/src/world.c → c++/carla-lilv/lilv-0.14.4/src/world.c View File

@@ -182,11 +182,13 @@ lilv_world_find_nodes(LilvWorld* world,
const LilvNode* object) const LilvNode* object)
{ {
if (subject && !lilv_node_is_uri(subject) && !lilv_node_is_blank(subject)) { if (subject && !lilv_node_is_uri(subject) && !lilv_node_is_blank(subject)) {
LILV_ERRORF("Subject `%s' is not a resource\n", subject->str_val);
LILV_ERRORF("Subject `%s' is not a resource\n",
sord_node_get_string(subject->node));
return NULL; return NULL;
} }
if (!lilv_node_is_uri(predicate)) { if (!lilv_node_is_uri(predicate)) {
LILV_ERRORF("Predicate `%s' is not a URI\n", predicate->str_val);
LILV_ERRORF("Predicate `%s' is not a URI\n",
sord_node_get_string(predicate->node));
return NULL; return NULL;
} }
if (!subject && !object) { if (!subject && !object) {
@@ -195,15 +197,15 @@ lilv_world_find_nodes(LilvWorld* world,
} }


SordNode* const subject_node = subject SordNode* const subject_node = subject
? sord_node_copy(subject->val.uri_val)
? sord_node_copy(subject->node)
: NULL; : NULL;


SordNode* const object_node = object SordNode* const object_node = object
? sord_node_copy(object->val.uri_val)
? sord_node_copy(object->node)
: NULL; : NULL;


LilvNodes* ret = lilv_world_query_values_internal( LilvNodes* ret = lilv_world_query_values_internal(
world, subject_node, predicate->val.uri_val, object_node);
world, subject_node, predicate->node, object_node);


sord_node_free(world->world, subject_node); sord_node_free(world->world, subject_node);
sord_node_free(world->world, object_node); sord_node_free(world->world, object_node);
@@ -267,6 +269,10 @@ struct LilvHeader*
lilv_collection_get_by_uri(const ZixTree* const_seq, lilv_collection_get_by_uri(const ZixTree* const_seq,
const LilvNode* uri) const LilvNode* uri)
{ {
if (!lilv_node_is_uri(uri)) {
return NULL;
}

ZixTree* seq = (ZixTree*)const_seq; ZixTree* seq = (ZixTree*)const_seq;
struct LilvHeader key = { NULL, (LilvNode*)uri }; struct LilvHeader key = { NULL, (LilvNode*)uri };


@@ -494,11 +500,12 @@ void
lilv_world_load_bundle(LilvWorld* world, LilvNode* bundle_uri) lilv_world_load_bundle(LilvWorld* world, LilvNode* bundle_uri)
{ {
if (!lilv_node_is_uri(bundle_uri)) { if (!lilv_node_is_uri(bundle_uri)) {
LILV_ERRORF("Bundle URI `%s' is not a URI\n", bundle_uri->str_val);
LILV_ERRORF("Bundle URI `%s' is not a URI\n",
sord_node_get_string(bundle_uri->node));
return; return;
} }


SordNode* bundle_node = bundle_uri->val.uri_val;
SordNode* bundle_node = bundle_uri->node;


SerdNode manifest_uri = lilv_new_uri_relative_to_base( SerdNode manifest_uri = lilv_new_uri_relative_to_base(
(const uint8_t*)"manifest.ttl", (const uint8_t*)"manifest.ttl",
@@ -629,7 +636,7 @@ lilv_world_load_specifications(LilvWorld* world)
LILV_FOREACH(nodes, f, spec->data_uris) { LILV_FOREACH(nodes, f, spec->data_uris) {
LilvNode* file = (LilvNode*)lilv_collection_get(spec->data_uris, f); LilvNode* file = (LilvNode*)lilv_collection_get(spec->data_uris, f);


const SerdNode* node = sord_node_to_serd_node(file->val.uri_val);
const SerdNode* node = sord_node_to_serd_node(file->node);
SerdEnv* env = serd_env_new(node); SerdEnv* env = serd_env_new(node);
SerdReader* reader = sord_new_reader(world->model, env, SerdReader* reader = sord_new_reader(world->model, env,
SERD_TURTLE, NULL); SERD_TURTLE, NULL);
@@ -698,12 +705,10 @@ lilv_world_load_plugin_classes(LilvWorld* world)
const uint8_t* label = sord_node_get_string(label_node); const uint8_t* label = sord_node_get_string(label_node);
sord_iter_free(labels); sord_iter_free(labels);


LilvPluginClasses* classes = world->plugin_classes;
LilvPluginClass* pclass = lilv_plugin_class_new(
LilvPluginClass* pclass = lilv_plugin_class_new(
world, parent_node, class_node, (const char*)label); world, parent_node, class_node, (const char*)label);

if (pclass) { if (pclass) {
zix_tree_insert((ZixTree*)classes, pclass, NULL);
zix_tree_insert((ZixTree*)world->plugin_classes, pclass, NULL);
} }
} }
sord_iter_free(classes); sord_iter_free(classes);
@@ -751,13 +756,14 @@ lilv_world_load_resource(LilvWorld* world,
const LilvNode* resource) const LilvNode* resource)
{ {
if (!lilv_node_is_uri(resource) && !lilv_node_is_blank(resource)) { if (!lilv_node_is_uri(resource) && !lilv_node_is_blank(resource)) {
LILV_ERRORF("Node `%s' is not a resource\n", resource->str_val);
LILV_ERRORF("Node `%s' is not a resource\n",
sord_node_get_string(resource->node));
return -1; return -1;
} }


int n_read = 0; int n_read = 0;
SordIter* files = sord_search(world->model, SordIter* files = sord_search(world->model,
resource->val.uri_val,
resource->node,
world->uris.rdfs_seeAlso, world->uris.rdfs_seeAlso,
NULL, NULL); NULL, NULL);
FOREACH_MATCH(files) { FOREACH_MATCH(files) {

c++/carla-lilv/lilv-0.14.2/src/zix/common.h → c++/carla-lilv/lilv-0.14.4/src/zix/common.h View File

@@ -36,8 +36,13 @@
# else # else
# define ZIX_API ZIX_LIB_IMPORT # define ZIX_API ZIX_LIB_IMPORT
# endif # endif
# define ZIX_PRIVATE static
#elif defined(ZIX_INLINE)
# define ZIX_API static inline
# define ZIX_PRIVATE static inline
#else #else
# define ZIX_API # define ZIX_API
# define ZIX_PRIVATE static
#endif #endif
/** @endcond */ /** @endcond */


@@ -53,6 +58,8 @@ typedef enum {
ZIX_STATUS_NO_MEM, ZIX_STATUS_NO_MEM,
ZIX_STATUS_NOT_FOUND, ZIX_STATUS_NOT_FOUND,
ZIX_STATUS_EXISTS, ZIX_STATUS_EXISTS,
ZIX_STATUS_BAD_ARG,
ZIX_STATUS_BAD_PERMS,
} ZixStatus; } ZixStatus;


/** /**

c++/carla-lilv/lilv-0.14.2/src/zix/tree.c → c++/carla-lilv/lilv-0.14.4/src/zix/tree.c View File

@@ -66,8 +66,7 @@ struct ZixTreeNodeImpl {
# define DEBUG_PRINTF(fmt, ...) # define DEBUG_PRINTF(fmt, ...)
#endif #endif


ZIX_API
ZixTree*
ZIX_API ZixTree*
zix_tree_new(bool allow_duplicates, zix_tree_new(bool allow_duplicates,
ZixComparator cmp, ZixComparator cmp,
void* cmp_data, void* cmp_data,
@@ -83,7 +82,7 @@ zix_tree_new(bool allow_duplicates,
return t; return t;
} }


static void
ZIX_PRIVATE void
zix_tree_free_rec(ZixTree* t, ZixTreeNode* n) zix_tree_free_rec(ZixTree* t, ZixTreeNode* n)
{ {
if (n) { if (n) {
@@ -96,8 +95,7 @@ zix_tree_free_rec(ZixTree* t, ZixTreeNode* n)
} }
} }


ZIX_API
void
ZIX_API void
zix_tree_free(ZixTree* t) zix_tree_free(ZixTree* t)
{ {
if (t) { if (t) {
@@ -106,13 +104,13 @@ zix_tree_free(ZixTree* t)
} }
} }


size_t
zix_tree_size(ZixTree* t)
ZIX_API size_t
zix_tree_size(const ZixTree* t)
{ {
return t->size; return t->size;
} }


static void
ZIX_PRIVATE void
rotate(ZixTreeNode* p, ZixTreeNode* q) rotate(ZixTreeNode* p, ZixTreeNode* q)
{ {
assert(q->parent == p); assert(q->parent == p);
@@ -156,7 +154,7 @@ rotate(ZixTreeNode* p, ZixTreeNode* q)
* / \ / \ * / \ / \
* B C A B * B C A B
*/ */
static ZixTreeNode*
ZIX_PRIVATE ZixTreeNode*
rotate_left(ZixTreeNode* p, int* height_change) rotate_left(ZixTreeNode* p, int* height_change)
{ {
ZixTreeNode* const q = p->right; ZixTreeNode* const q = p->right;
@@ -189,7 +187,7 @@ rotate_left(ZixTreeNode* p, int* height_change)
* A B B C * A B B C
* *
*/ */
static ZixTreeNode*
ZIX_PRIVATE ZixTreeNode*
rotate_right(ZixTreeNode* p, int* height_change) rotate_right(ZixTreeNode* p, int* height_change)
{ {
ZixTreeNode* const q = p->left; ZixTreeNode* const q = p->left;
@@ -224,7 +222,7 @@ rotate_right(ZixTreeNode* p, int* height_change)
* B C * B C
* *
*/ */
static ZixTreeNode*
ZIX_PRIVATE ZixTreeNode*
rotate_left_right(ZixTreeNode* p, int* height_change) rotate_left_right(ZixTreeNode* p, int* height_change)
{ {
ZixTreeNode* const q = p->left; ZixTreeNode* const q = p->left;
@@ -268,7 +266,7 @@ rotate_left_right(ZixTreeNode* p, int* height_change)
* B C * B C
* *
*/ */
static ZixTreeNode*
ZIX_PRIVATE ZixTreeNode*
rotate_right_left(ZixTreeNode* p, int* height_change) rotate_right_left(ZixTreeNode* p, int* height_change)
{ {
ZixTreeNode* const q = p->right; ZixTreeNode* const q = p->right;
@@ -301,7 +299,7 @@ rotate_right_left(ZixTreeNode* p, int* height_change)
return r; return r;
} }


static ZixTreeNode*
ZIX_PRIVATE ZixTreeNode*
zix_tree_rebalance(ZixTree* t, ZixTreeNode* node, int* height_change) zix_tree_rebalance(ZixTree* t, ZixTreeNode* node, int* height_change)
{ {
#ifdef ZIX_TREE_HYPER_VERIFY #ifdef ZIX_TREE_HYPER_VERIFY
@@ -338,8 +336,7 @@ zix_tree_rebalance(ZixTree* t, ZixTreeNode* node, int* height_change)
return replacement; return replacement;
} }


ZIX_API
ZixStatus
ZIX_API ZixStatus
zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti) zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti)
{ {
DEBUG_PRINTF("**** INSERT %ld\n", (intptr_t)e); DEBUG_PRINTF("**** INSERT %ld\n", (intptr_t)e);
@@ -438,8 +435,7 @@ zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti)
return ZIX_STATUS_SUCCESS; return ZIX_STATUS_SUCCESS;
} }


ZIX_API
ZixStatus
ZIX_API ZixStatus
zix_tree_remove(ZixTree* t, ZixTreeIter* ti) zix_tree_remove(ZixTree* t, ZixTreeIter* ti)
{ {
ZixTreeNode* const n = ti; ZixTreeNode* const n = ti;
@@ -596,8 +592,7 @@ zix_tree_remove(ZixTree* t, ZixTreeIter* ti)
return ZIX_STATUS_SUCCESS; return ZIX_STATUS_SUCCESS;
} }


ZIX_API
ZixStatus
ZIX_API ZixStatus
zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti) zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti)
{ {
ZixTreeNode* n = t->root; ZixTreeNode* n = t->root;
@@ -616,15 +611,13 @@ zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti)
return (n) ? ZIX_STATUS_SUCCESS : ZIX_STATUS_NOT_FOUND; return (n) ? ZIX_STATUS_SUCCESS : ZIX_STATUS_NOT_FOUND;
} }


ZIX_API
void*
ZIX_API void*
zix_tree_get(ZixTreeIter* ti) zix_tree_get(ZixTreeIter* ti)
{ {
return ti ? ti->data : NULL; return ti ? ti->data : NULL;
} }


ZIX_API
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_begin(ZixTree* t) zix_tree_begin(ZixTree* t)
{ {
if (!t->root) { if (!t->root) {
@@ -638,22 +631,45 @@ zix_tree_begin(ZixTree* t)
return n; return n;
} }


ZIX_API
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_end(ZixTree* t) zix_tree_end(ZixTree* t)
{ {
return NULL; return NULL;
} }


ZIX_API
bool
ZIX_API ZixTreeIter*
zix_tree_rbegin(ZixTree* t)
{
if (!t->root) {
return NULL;
}

ZixTreeNode* n = t->root;
while (n->right) {
n = n->right;
}
return n;
}

ZIX_API ZixTreeIter*
zix_tree_rend(ZixTree* t)
{
return NULL;
}

ZIX_API bool
zix_tree_iter_is_end(ZixTreeIter* i) zix_tree_iter_is_end(ZixTreeIter* i)
{ {
return !i; return !i;
} }


ZIX_API
ZixTreeIter*
ZIX_API bool
zix_tree_iter_is_rend(ZixTreeIter* i)
{
return !i;
}

ZIX_API ZixTreeIter*
zix_tree_iter_next(ZixTreeIter* i) zix_tree_iter_next(ZixTreeIter* i)
{ {
if (!i) { if (!i) {
@@ -675,3 +691,26 @@ zix_tree_iter_next(ZixTreeIter* i)


return i; return i;
} }

ZIX_API ZixTreeIter*
zix_tree_iter_prev(ZixTreeIter* i)
{
if (!i) {
return NULL;
}

if (i->left) {
i = i->left;
while (i->right) {
i = i->right;
}
} else {
while (i->parent && i->parent->left == i) { // i is a left child
i = i->parent;
}

i = i->parent;
}

return i;
}

c++/carla-lilv/lilv-0.14.2/src/zix/tree.h → c++/carla-lilv/lilv-0.14.4/src/zix/tree.h View File

@@ -45,7 +45,7 @@ typedef struct ZixTreeNodeImpl ZixTreeIter;
/** /**
Create a new (empty) tree. Create a new (empty) tree.
*/ */
ZixTree*
ZIX_API ZixTree*
zix_tree_new(bool allow_duplicates, zix_tree_new(bool allow_duplicates,
ZixComparator cmp, ZixComparator cmp,
void* cmp_data, void* cmp_data,
@@ -54,86 +54,86 @@ zix_tree_new(bool allow_duplicates,
/** /**
Free @a t. Free @a t.
*/ */
void
ZIX_API void
zix_tree_free(ZixTree* t); zix_tree_free(ZixTree* t);


/** /**
Return the number of elements in @a t. Return the number of elements in @a t.
*/ */
size_t
zix_tree_size(ZixTree* t);
ZIX_API size_t
zix_tree_size(const ZixTree* t);


/** /**
Insert the element @a e into @a t and point @a ti at the new element. Insert the element @a e into @a t and point @a ti at the new element.
*/ */
ZixStatus
ZIX_API ZixStatus
zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti); zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti);


/** /**
Remove the item pointed at by @a ti from @a t. Remove the item pointed at by @a ti from @a t.
*/ */
ZixStatus
ZIX_API ZixStatus
zix_tree_remove(ZixTree* t, ZixTreeIter* ti); zix_tree_remove(ZixTree* t, ZixTreeIter* ti);


/** /**
Set @a ti to an element equal to @a e in @a t. Set @a ti to an element equal to @a e in @a t.
If no such item exists, @a ti is set to NULL. If no such item exists, @a ti is set to NULL.
*/ */
ZixStatus
ZIX_API ZixStatus
zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti); zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti);


/** /**
Return the data associated with the given tree item. Return the data associated with the given tree item.
*/ */
void*
ZIX_API void*
zix_tree_get(ZixTreeIter* ti); zix_tree_get(ZixTreeIter* ti);


/** /**
Return an iterator to the first (smallest) element in @a t. Return an iterator to the first (smallest) element in @a t.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_begin(ZixTree* t); zix_tree_begin(ZixTree* t);


/** /**
Return an iterator the the element one past the last element in @a t. Return an iterator the the element one past the last element in @a t.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_end(ZixTree* t); zix_tree_end(ZixTree* t);


/** /**
Return true iff @a i is an iterator to the end of its tree. Return true iff @a i is an iterator to the end of its tree.
*/ */
bool
ZIX_API bool
zix_tree_iter_is_end(ZixTreeIter* i); zix_tree_iter_is_end(ZixTreeIter* i);


/** /**
Return an iterator to the last (largest) element in @a t. Return an iterator to the last (largest) element in @a t.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_rbegin(ZixTree* t); zix_tree_rbegin(ZixTree* t);


/** /**
Return an iterator the the element one before the first element in @a t. Return an iterator the the element one before the first element in @a t.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_rend(ZixTree* t); zix_tree_rend(ZixTree* t);


/** /**
Return true iff @a i is an iterator to the reverse end of its tree. Return true iff @a i is an iterator to the reverse end of its tree.
*/ */
bool
ZIX_API bool
zix_tree_iter_is_rend(ZixTreeIter* i); zix_tree_iter_is_rend(ZixTreeIter* i);


/** /**
Return an iterator that points to the element one past @a i. Return an iterator that points to the element one past @a i.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_iter_next(ZixTreeIter* i); zix_tree_iter_next(ZixTreeIter* i);


/** /**
Return an iterator that points to the element one before @a i. Return an iterator that points to the element one before @a i.
*/ */
ZixTreeIter*
ZIX_API ZixTreeIter*
zix_tree_iter_prev(ZixTreeIter* i); zix_tree_iter_prev(ZixTreeIter* i);


/** /**

c++/carla-lilv/lilv-0.14.2/test/lilv_test.c → c++/carla-lilv/lilv-0.14.4/test/lilv_test.c View File

@@ -64,7 +64,7 @@ static LilvWorld* world;
int test_count = 0; int test_count = 0;
int error_count = 0; int error_count = 0;


void
static void
delete_bundle(void) delete_bundle(void)
{ {
unlink(content_name); unlink(content_name);
@@ -72,7 +72,7 @@ delete_bundle(void)
remove(bundle_dir_name); remove(bundle_dir_name);
} }


void
static void
init_tests(void) init_tests(void)
{ {
strncpy(bundle_dir_name, getenv("HOME"), 900); strncpy(bundle_dir_name, getenv("HOME"), 900);
@@ -86,8 +86,8 @@ init_tests(void)
delete_bundle(); delete_bundle();
} }


void
fatal_error(const char *err, const char *arg)
static void
fatal_error(const char* err, const char* arg)
{ {
/* TODO: possibly change to vfprintf later */ /* TODO: possibly change to vfprintf later */
fprintf(stderr, err, arg); fprintf(stderr, err, arg);
@@ -96,8 +96,8 @@ fatal_error(const char *err, const char *arg)
exit(1); exit(1);
} }


void
write_file(const char *name, const char *content)
static void
write_file(const char* name, const char* content)
{ {
FILE* f = fopen(name, "w"); FILE* f = fopen(name, "w");
size_t len = strlen(content); size_t len = strlen(content);
@@ -106,14 +106,14 @@ write_file(const char *name, const char *content)
fclose(f); fclose(f);
} }


int
static int
init_world(void) init_world(void)
{ {
world = lilv_world_new(); world = lilv_world_new();
return world != NULL; return world != NULL;
} }


int
static int
load_all_bundles(void) load_all_bundles(void)
{ {
if (!init_world()) if (!init_world())
@@ -122,8 +122,8 @@ load_all_bundles(void)
return 1; return 1;
} }


void
create_bundle(char *manifest, char *content)
static void
create_bundle(const char* manifest, const char* content)
{ {
if (mkdir(bundle_dir_name, 0700) && errno != EEXIST) if (mkdir(bundle_dir_name, 0700) && errno != EEXIST)
fatal_error("Cannot create directory %s\n", bundle_dir_name); fatal_error("Cannot create directory %s\n", bundle_dir_name);
@@ -131,14 +131,14 @@ create_bundle(char *manifest, char *content)
write_file(content_name, content); write_file(content_name, content);
} }


int
start_bundle(char *manifest, char *content)
static int
start_bundle(const char* manifest, const char* content)
{ {
create_bundle(manifest, content); create_bundle(manifest, content);
return load_all_bundles(); return load_all_bundles();
} }


void
static void
unload_bundle(void) unload_bundle(void)
{ {
if (world) if (world)
@@ -146,7 +146,7 @@ unload_bundle(void)
world = NULL; world = NULL;
} }


void
static void
cleanup(void) cleanup(void)
{ {
delete_bundle(); delete_bundle();
@@ -166,7 +166,7 @@ cleanup(void)
typedef int (*TestFunc)(void); typedef int (*TestFunc)(void);


struct TestCase { struct TestCase {
const char *title;
const char* title;
TestFunc func; TestFunc func;
}; };


@@ -184,13 +184,13 @@ struct TestCase {
#define PLUGIN_NAME(name) "doap:name \"" name "\"" #define PLUGIN_NAME(name) "doap:name \"" name "\""
#define LICENSE_GPL "doap:license <http://usefulinc.com/doap/licenses/gpl>" #define LICENSE_GPL "doap:license <http://usefulinc.com/doap/licenses/gpl>"


static char *uris_plugin = "http://example.org/plug";
static const char* uris_plugin = "http://example.org/plug";
static LilvNode* plugin_uri_value; static LilvNode* plugin_uri_value;
static LilvNode* plugin2_uri_value; static LilvNode* plugin2_uri_value;


/*****************************************************************************/ /*****************************************************************************/


void
static void
init_uris(void) init_uris(void)
{ {
plugin_uri_value = lilv_new_uri(world, uris_plugin); plugin_uri_value = lilv_new_uri(world, uris_plugin);
@@ -199,7 +199,7 @@ init_uris(void)
TEST_ASSERT(plugin2_uri_value); TEST_ASSERT(plugin2_uri_value);
} }


void
static void
cleanup_uris(void) cleanup_uris(void)
{ {
lilv_node_free(plugin2_uri_value); lilv_node_free(plugin2_uri_value);
@@ -210,7 +210,7 @@ cleanup_uris(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_utils(void) test_utils(void)
{ {
TEST_ASSERT(!strcmp(lilv_uri_to_path("file:///tmp/blah"), "/tmp/blah")); TEST_ASSERT(!strcmp(lilv_uri_to_path("file:///tmp/blah"), "/tmp/blah"));
@@ -221,7 +221,7 @@ test_utils(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_value(void) test_value(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -349,7 +349,7 @@ discovery_verify_plugin(const LilvPlugin* plugin)
} }
} }


int
static int
test_discovery(void) test_discovery(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -392,7 +392,7 @@ test_discovery(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_lv2_path(void) test_lv2_path(void)
{ {
#ifndef _WIN32 #ifndef _WIN32
@@ -400,7 +400,7 @@ test_lv2_path(void)


setenv("LV2_PATH", "~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2", 1); setenv("LV2_PATH", "~/.lv2:/usr/local/lib/lv2:/usr/lib/lv2", 1);


LilvWorld* world = lilv_world_new();
world = lilv_world_new();
lilv_world_load_all(world); lilv_world_load_all(world);


const LilvPlugins* plugins = lilv_world_get_all_plugins(world); const LilvPlugins* plugins = lilv_world_get_all_plugins(world);
@@ -414,6 +414,7 @@ test_lv2_path(void)
plugins = lilv_world_get_all_plugins(world); plugins = lilv_world_get_all_plugins(world);
TEST_ASSERT(lilv_plugins_size(plugins) == n_plugins); TEST_ASSERT(lilv_plugins_size(plugins) == n_plugins);
lilv_world_free(world); lilv_world_free(world);
world = NULL;


if (orig_lv2_path) { if (orig_lv2_path) {
setenv("LV2_PATH", orig_lv2_path, 1); setenv("LV2_PATH", orig_lv2_path, 1);
@@ -427,7 +428,7 @@ test_lv2_path(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_verify(void) test_verify(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -451,7 +452,7 @@ test_verify(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_no_verify(void) test_no_verify(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -471,7 +472,7 @@ test_no_verify(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_classes(void) test_classes(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -515,7 +516,7 @@ test_classes(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_plugin(void) test_plugin(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -730,7 +731,7 @@ test_plugin(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_port(void) test_port(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -965,7 +966,7 @@ ui_supported(const char* container_type_uri,
return !strcmp(container_type_uri, ui_type_uri); return !strcmp(container_type_uri, ui_type_uri);
} }


int
static int
test_ui(void) test_ui(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -1075,7 +1076,7 @@ uint32_t atom_Float = 0;
float in = 1.0; float in = 1.0;
float out = 42.0; float out = 42.0;


const void*
static const void*
get_port_value(const char* port_symbol, get_port_value(const char* port_symbol,
void* user_data, void* user_data,
uint32_t* size, uint32_t* size,
@@ -1097,7 +1098,7 @@ get_port_value(const char* port_symbol,
} }
} }


void
static void
set_port_value(const char* port_symbol, set_port_value(const char* port_symbol,
void* user_data, void* user_data,
const void* value, const void* value,
@@ -1117,7 +1118,7 @@ set_port_value(const char* port_symbol,
char** uris = NULL; char** uris = NULL;
size_t n_uris = 0; size_t n_uris = 0;


LV2_URID
static LV2_URID
map_uri(LV2_URID_Map_Handle handle, map_uri(LV2_URID_Map_Handle handle,
const char* uri) const char* uri)
{ {
@@ -1133,7 +1134,7 @@ map_uri(LV2_URID_Map_Handle handle,
return n_uris; return n_uris;
} }


const char*
static const char*
unmap_uri(LV2_URID_Map_Handle handle, unmap_uri(LV2_URID_Map_Handle handle,
LV2_URID urid) LV2_URID urid)
{ {
@@ -1145,19 +1146,20 @@ unmap_uri(LV2_URID_Map_Handle handle,


static char* temp_dir = NULL; static char* temp_dir = NULL;


char*
static char*
lilv_make_path(LV2_State_Make_Path_Handle handle, lilv_make_path(LV2_State_Make_Path_Handle handle,
const char* path) const char* path)
{ {
return lilv_path_join(temp_dir, path); return lilv_path_join(temp_dir, path);
} }


int
static int
test_state(void) test_state(void)
{ {
init_world();

uint8_t* abs_bundle = (uint8_t*)lilv_path_absolute(LILV_TEST_BUNDLE); uint8_t* abs_bundle = (uint8_t*)lilv_path_absolute(LILV_TEST_BUNDLE);
SerdNode bundle = serd_node_new_file_uri(abs_bundle, 0, 0, true); SerdNode bundle = serd_node_new_file_uri(abs_bundle, 0, 0, true);
LilvWorld* world = lilv_world_new();
LilvNode* bundle_uri = lilv_new_uri(world, (const char*)bundle.buf); LilvNode* bundle_uri = lilv_new_uri(world, (const char*)bundle.buf);
LilvNode* plugin_uri = lilv_new_uri(world, LilvNode* plugin_uri = lilv_new_uri(world,
"http://example.org/lilv-test-plugin"); "http://example.org/lilv-test-plugin");
@@ -1414,7 +1416,6 @@ test_state(void)


lilv_node_free(plugin_uri); lilv_node_free(plugin_uri);
lilv_node_free(bundle_uri); lilv_node_free(bundle_uri);
lilv_world_free(world);
free(link_dir); free(link_dir);
free(copy_dir); free(copy_dir);
free(temp_dir); free(temp_dir);
@@ -1425,7 +1426,7 @@ test_state(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_bad_port_symbol(void) test_bad_port_symbol(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -1456,7 +1457,7 @@ test_bad_port_symbol(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_bad_port_index(void) test_bad_port_index(void)
{ {
if (!start_bundle(MANIFEST_PREFIXES if (!start_bundle(MANIFEST_PREFIXES
@@ -1487,7 +1488,7 @@ test_bad_port_index(void)


/*****************************************************************************/ /*****************************************************************************/


int
static int
test_string(void) test_string(void)
{ {
char* s = NULL; char* s = NULL;
@@ -1547,7 +1548,7 @@ static struct TestCase tests[] = {
{ NULL, NULL } { NULL, NULL }
}; };


void
static void
run_tests(void) run_tests(void)
{ {
int i; int i;
@@ -1565,7 +1566,7 @@ run_tests(void)
} }


int int
main(int argc, char *argv[])
main(int argc, char* argv[])
{ {
if (argc != 1) { if (argc != 1) {
printf("Syntax: %s\n", argv[0]); printf("Syntax: %s\n", argv[0]);

c++/carla-lilv/lilv-0.14.2/test/manifest.ttl.in → c++/carla-lilv/lilv-0.14.4/test/manifest.ttl.in View File


c++/carla-lilv/lilv-0.14.2/test/test_plugin.c → c++/carla-lilv/lilv-0.14.4/test/test_plugin.c View File

@@ -351,7 +351,7 @@ restore(LV2_Handle instance,
return LV2_STATE_SUCCESS; return LV2_STATE_SUCCESS;
} }


const void*
static const void*
extension_data(const char* uri) extension_data(const char* uri)
{ {
static const LV2_State_Interface state = { save, restore }; static const LV2_State_Interface state = { save, restore };

c++/carla-lilv/lilv-0.14.2/test/test_plugin.ttl.in → c++/carla-lilv/lilv-0.14.4/test/test_plugin.ttl.in View File


+ 52
- 0
c++/carla-lilv/lilv-0.14.4/utils/bench.h View File

@@ -0,0 +1,52 @@
/*
Copyright 2011-2012 David Robillard <http://drobilla.net>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

/**
@file bench.h A simple real-time benchmarking API.
*/

#ifndef BENCH_H
#define BENCH_H

#define _POSIX_C_SOURCE 199309L

#include <time.h>
#include <sys/time.h>

static inline double
bench_elapsed_s(const struct timespec* start, const struct timespec* end)
{
return ((end->tv_sec - start->tv_sec)
+ ((end->tv_nsec - start->tv_nsec) * 0.000000001));
}

static inline struct timespec
bench_start()
{
struct timespec start_t;
clock_gettime(CLOCK_REALTIME, &start_t);
return start_t;
}

static inline double
bench_end(const struct timespec* start_t)
{
struct timespec end_t;
clock_gettime(CLOCK_REALTIME, &end_t);
return bench_elapsed_s(start_t, &end_t);
}

#endif /* BENCH_H */

c++/carla-lilv/lilv-0.14.2/utils/lilv-bench.c → c++/carla-lilv/lilv-0.14.4/utils/lilv-bench.c View File

@@ -20,23 +20,6 @@


#include "lilv_config.h" #include "lilv_config.h"


void
print_version(void)
{
printf("lilv_bench (lilv) " LILV_VERSION "\n");
printf("Copyright 2011-2011 David Robillard <http://drobilla.net>\n");
printf("License: <http://www.opensource.org/licenses/isc-license>\n");
printf("This is free software: you are free to change and redistribute it.\n");
printf("There is NO WARRANTY, to the extent permitted by law.\n");
}

void
print_usage(void)
{
printf("Usage: lilv_bench\n");
printf("Load all discovered LV2 plugins.\n");
}

int int
main(int argc, char** argv) main(int argc, char** argv)
{ {

c++/carla-lilv/lilv-0.14.2/utils/lilv.bash_completion → c++/carla-lilv/lilv-0.14.4/utils/lilv.bash_completion View File


+ 226
- 0
c++/carla-lilv/lilv-0.14.4/utils/lv2bench.c View File

@@ -0,0 +1,226 @@
/*
Copyright 2012 David Robillard <http://drobilla.net>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#define _POSIX_C_SOURCE 199309L

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "lilv/lilv.h"
#include "lv2/lv2plug.in/ns/ext/atom/atom.h"

#include "lilv_config.h"
#include "bench.h"
#include "uri_table.h"

static LilvNode* atom_AtomPort = NULL;
static LilvNode* atom_Sequence = NULL;
static LilvNode* lv2_AudioPort = NULL;
static LilvNode* lv2_CVPort = NULL;
static LilvNode* lv2_ControlPort = NULL;
static LilvNode* lv2_InputPort = NULL;
static LilvNode* lv2_OutputPort = NULL;
static LilvNode* urid_map = NULL;

static bool full_output = false;

static void
print_version(void)
{
printf(
"lv2bench (lilv) " LILV_VERSION "\n"
"Copyright 2012 David Robillard <http://drobilla.net>\n"
"License: <http://www.opensource.org/licenses/isc-license>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n");
}

static void
print_usage(void)
{
printf("lv2bench - Benchmark all installed and supported LV2 plugins.\n");
printf("Usage: lv2bench [OPTIONS]\n");
printf("\n");
printf(" -b BLOCK_SIZE Specify block size, in audio frames.\n");
printf(" -f, --full Full plottable output.\n");
printf(" -h, --help Display this help and exit.\n");
printf(" -n FRAMES Total number of audio frames to process\n");
printf(" --version Display version information and exit\n");
}

static double
bench(const LilvPlugin* p, uint32_t sample_count, uint32_t block_size)
{
URITable uri_table;
uri_table_init(&uri_table);

LV2_URID_Map map = { &uri_table, uri_table_map };
LV2_Feature map_feature = { LV2_URID_MAP_URI, &map };
LV2_URID_Unmap unmap = { &uri_table, uri_table_unmap };
LV2_Feature unmap_feature = { LV2_URID_UNMAP_URI, &unmap };
const LV2_Feature* features[] = { &map_feature, &unmap_feature, NULL };

float* const buf = (float*)calloc(block_size * 2, sizeof(float));
float* const in = buf;
float* const out = buf + block_size;
if (!buf) {
fprintf(stderr, "Out of memory\n");
return 0.0;
}

LV2_Atom_Sequence seq = {
{ sizeof(LV2_Atom_Sequence_Body),
uri_table_map(&uri_table, LV2_ATOM__Sequence) },
{ 0, 0 } };

const char* uri = lilv_node_as_string(lilv_plugin_get_uri(p));
LilvNodes* required = lilv_plugin_get_required_features(p);
LILV_FOREACH(nodes, i, required) {
const LilvNode* feature = lilv_nodes_get(required, i);
if (!lilv_node_equals(feature, urid_map)) {
fprintf(stderr, "<%s> requires feature <%s>, skipping\n",
uri, lilv_node_as_uri(feature));
free(buf);
return 0.0;
}
}

LilvInstance* instance = lilv_plugin_instantiate(p, 48000.0, features);
if (!instance) {
fprintf(stderr, "Failed to instantiate <%s>\n",
lilv_node_as_uri(lilv_plugin_get_uri(p)));
free(buf);
return 0.0;
}

float* controls = (float*)calloc(
lilv_plugin_get_num_ports(p), sizeof(float));
lilv_plugin_get_port_ranges_float(p, NULL, NULL, controls);

const uint32_t n_ports = lilv_plugin_get_num_ports(p);
for (uint32_t index = 0; index < n_ports; ++index) {
const LilvPort* port = lilv_plugin_get_port_by_index(p, index);
if (lilv_port_is_a(p, port, lv2_ControlPort)) {
lilv_instance_connect_port(instance, index, &controls[index]);
} else if (lilv_port_is_a(p, port, lv2_AudioPort) ||
lilv_port_is_a(p, port, lv2_CVPort)) {
if (lilv_port_is_a(p, port, lv2_InputPort)) {
lilv_instance_connect_port(instance, index, in);
} else if (lilv_port_is_a(p, port, lv2_OutputPort)) {
lilv_instance_connect_port(instance, index, out);
} else {
fprintf(stderr, "<%s> port %d neither input nor output, skipping\n",
uri, index);
lilv_instance_free(instance);
free(buf);
free(controls);
return 0.0;
}
} else if (lilv_port_is_a(p, port, atom_AtomPort)) {
lilv_instance_connect_port(instance, index, &seq);
} else {
fprintf(stderr, "<%s> port %d has unknown type, skipping\n",
uri, index);
lilv_instance_free(instance);
free(buf);
free(controls);
return 0.0;
}
}

lilv_instance_activate(instance);

struct timespec ts = bench_start();
for (uint32_t i = 0; i < (sample_count / block_size); ++i) {
lilv_instance_run(instance, block_size);
}
const double elapsed = bench_end(&ts);

lilv_instance_deactivate(instance);
lilv_instance_free(instance);

uri_table_destroy(&uri_table);

if (full_output) {
printf("%d %d ", block_size, sample_count);
}
printf("%lf %s\n", elapsed, uri);

free(buf);
free(controls);
return elapsed;
}

int
main(int argc, char** argv)
{
uint32_t block_size = 512;
uint32_t sample_count = (1 << 19);

for (int i = 1; i < argc; ++i) {
if (!strcmp(argv[i], "--version")) {
print_version();
return 0;
} else if (!strcmp(argv[i], "--help")) {
print_usage();
return 0;
} else if (!strcmp(argv[i], "-f")) {
full_output = true;
} else if (!strcmp(argv[i], "-n") && (i + 1 < argc)) {
sample_count = atoi(argv[++i]);
} else if (!strcmp(argv[i], "-b") && (i + 1 < argc)) {
block_size = atoi(argv[++i]);
} else {
print_usage();
return 1;
}
}

LilvWorld* world = lilv_world_new();
lilv_world_load_all(world);

atom_AtomPort = lilv_new_uri(world, LV2_ATOM__AtomPort);
atom_Sequence = lilv_new_uri(world, LV2_ATOM__Sequence);
lv2_AudioPort = lilv_new_uri(world, LV2_CORE__AudioPort);
lv2_CVPort = lilv_new_uri(world, LV2_CORE__CVPort);
lv2_ControlPort = lilv_new_uri(world, LV2_CORE__ControlPort);
lv2_InputPort = lilv_new_uri(world, LV2_CORE__InputPort);
lv2_OutputPort = lilv_new_uri(world, LV2_CORE__OutputPort);
urid_map = lilv_new_uri(world, LV2_URID__map);

if (full_output) {
printf("# Block Samples Time Plugin\n");
}

const LilvPlugins* plugins = lilv_world_get_all_plugins(world);
LILV_FOREACH(plugins, i, plugins) {
bench(lilv_plugins_get(plugins, i), sample_count, block_size);
}

lilv_node_free(urid_map);
lilv_node_free(lv2_OutputPort);
lilv_node_free(lv2_InputPort);
lilv_node_free(lv2_ControlPort);
lilv_node_free(lv2_CVPort);
lilv_node_free(lv2_AudioPort);
lilv_node_free(atom_Sequence);
lilv_node_free(atom_AtomPort);

lilv_world_free(world);

return 0;
}

c++/carla-lilv/lilv-0.14.2/utils/lv2info.c → c++/carla-lilv/lilv-0.14.4/utils/lv2info.c View File

@@ -41,7 +41,7 @@ LilvNode* preset_class = NULL;
LilvNode* designation_pred = NULL; LilvNode* designation_pred = NULL;
LilvNode* supports_event_pred = NULL; LilvNode* supports_event_pred = NULL;


void
static void
print_port(const LilvPlugin* p, print_port(const LilvPlugin* p,
uint32_t index, uint32_t index,
float* mins, float* mins,
@@ -87,10 +87,10 @@ print_port(const LilvPlugin* p,
if (points) if (points)
printf("\n\t\tScale Points:\n"); printf("\n\t\tScale Points:\n");
LILV_FOREACH(scale_points, i, points) { LILV_FOREACH(scale_points, i, points) {
const LilvScalePoint* p = lilv_scale_points_get(points, i);
const LilvScalePoint* point = lilv_scale_points_get(points, i);
printf("\t\t\t%s = \"%s\"\n", printf("\t\t\t%s = \"%s\"\n",
lilv_node_as_string(lilv_scale_point_get_value(p)),
lilv_node_as_string(lilv_scale_point_get_label(p)));
lilv_node_as_string(lilv_scale_point_get_value(point)),
lilv_node_as_string(lilv_scale_point_get_label(point)));
} }
lilv_scale_points_free(points); lilv_scale_points_free(points);


@@ -140,7 +140,7 @@ print_port(const LilvPlugin* p,
lilv_nodes_free(properties); lilv_nodes_free(properties);
} }


void
static void
print_plugin(LilvWorld* world, print_plugin(LilvWorld* world,
const LilvPlugin* p) const LilvPlugin* p)
{ {
@@ -204,9 +204,9 @@ print_plugin(LilvWorld* world,
const char* binary = lilv_node_as_uri(lilv_ui_get_binary_uri(ui)); const char* binary = lilv_node_as_uri(lilv_ui_get_binary_uri(ui));


const LilvNodes* types = lilv_ui_get_classes(ui); const LilvNodes* types = lilv_ui_get_classes(ui);
LILV_FOREACH(nodes, i, types) {
LILV_FOREACH(nodes, t, types) {
printf("\t\t\tClass: %s\n", printf("\t\t\tClass: %s\n",
lilv_node_as_uri(lilv_nodes_get(types, i)));
lilv_node_as_uri(lilv_nodes_get(types, t)));
} }


if (binary) if (binary)
@@ -318,7 +318,7 @@ print_plugin(LilvWorld* world,
free(defaults); free(defaults);
} }


void
static void
print_version(void) print_version(void)
{ {
printf( printf(
@@ -329,7 +329,7 @@ print_version(void)
"There is NO WARRANTY, to the extent permitted by law.\n"); "There is NO WARRANTY, to the extent permitted by law.\n");
} }


void
static void
print_usage(void) print_usage(void)
{ {
printf( printf(
@@ -379,6 +379,13 @@ main(int argc, char** argv)
LilvWorld* world = lilv_world_new(); LilvWorld* world = lilv_world_new();
lilv_world_load_all(world); lilv_world_load_all(world);


LilvNode* uri = lilv_new_uri(world, plugin_uri);
if (!uri) {
fprintf(stderr, "Invalid plugin URI\n");
lilv_world_free(world);
return 1;
}

applies_to_pred = lilv_new_uri(world, LV2_CORE__appliesTo); applies_to_pred = lilv_new_uri(world, LV2_CORE__appliesTo);
control_class = lilv_new_uri(world, LILV_URI_CONTROL_PORT); control_class = lilv_new_uri(world, LILV_URI_CONTROL_PORT);
event_class = lilv_new_uri(world, LILV_URI_EVENT_PORT); event_class = lilv_new_uri(world, LILV_URI_EVENT_PORT);
@@ -389,7 +396,6 @@ main(int argc, char** argv)
supports_event_pred = lilv_new_uri(world, LV2_EVENT__supportsEvent); supports_event_pred = lilv_new_uri(world, LV2_EVENT__supportsEvent);


const LilvPlugins* plugins = lilv_world_get_all_plugins(world); const LilvPlugins* plugins = lilv_world_get_all_plugins(world);
LilvNode* uri = lilv_new_uri(world, plugin_uri);
const LilvPlugin* p = lilv_plugins_get_by_uri(plugins, uri); const LilvPlugin* p = lilv_plugins_get_by_uri(plugins, uri);


if (p && plugin_file) { if (p && plugin_file) {

c++/carla-lilv/lilv-0.14.2/utils/lv2ls.c → c++/carla-lilv/lilv-0.14.4/utils/lv2ls.c View File

@@ -21,7 +21,7 @@


#include "lilv_config.h" #include "lilv_config.h"


void
static void
list_plugins(const LilvPlugins* list, bool show_names) list_plugins(const LilvPlugins* list, bool show_names)
{ {
LILV_FOREACH(plugins, i, list) { LILV_FOREACH(plugins, i, list) {
@@ -36,7 +36,7 @@ list_plugins(const LilvPlugins* list, bool show_names)
} }
} }


void
static void
print_version(void) print_version(void)
{ {
printf( printf(
@@ -47,7 +47,7 @@ print_version(void)
"There is NO WARRANTY, to the extent permitted by law.\n"); "There is NO WARRANTY, to the extent permitted by law.\n");
} }


void
static void
print_usage(void) print_usage(void)
{ {
printf("Usage: lv2ls [OPTION]...\n"); printf("Usage: lv2ls [OPTION]...\n");

+ 73
- 0
c++/carla-lilv/lilv-0.14.4/utils/uri_table.h View File

@@ -0,0 +1,73 @@
/*
Copyright 2011-2012 David Robillard <http://drobilla.net>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

/**
@file uri_table.h A toy URI map/unmap implementation.

This file contains function definitions and must only be included once.
*/

#ifndef URI_TABLE_H
#define URI_TABLE_H

typedef struct {
char** uris;
size_t n_uris;
} URITable;

static void
uri_table_init(URITable* table)
{
table->uris = NULL;
table->n_uris = 0;
}

static void
uri_table_destroy(URITable* table)
{
free(table->uris);
}

static LV2_URID
uri_table_map(LV2_URID_Map_Handle handle,
const char* uri)
{
URITable* table = (URITable*)handle;
for (size_t i = 0; i < table->n_uris; ++i) {
if (!strcmp(table->uris[i], uri)) {
return i + 1;
}
}

const size_t len = strlen(uri);
table->uris = (char**)realloc(table->uris, ++table->n_uris * sizeof(char*));
table->uris[table->n_uris - 1] = malloc(len + 1);
memcpy(table->uris[table->n_uris - 1], uri, len + 1);
return table->n_uris;
}

static const char*
uri_table_unmap(LV2_URID_Map_Handle handle,
LV2_URID urid)
{
URITable* table = (URITable*)handle;
if (urid > 0 && urid <= table->n_uris) {
return table->uris[urid - 1];
}
return NULL;
}

#endif /* URI_TABLE_H */

BIN
c++/carla-lilv/lilv-0.14.4/waf View File


c++/carla-lilv/lilv-0.14.2/wscript → c++/carla-lilv/lilv-0.14.4/wscript View File

@@ -5,10 +5,9 @@ import subprocess


from waflib.extras import autowaf as autowaf from waflib.extras import autowaf as autowaf
import waflib.Options as Options import waflib.Options as Options
import waflib.Logs as Logs


# Version of this package (even if built as a child) # Version of this package (even if built as a child)
LILV_VERSION = '0.14.2'
LILV_VERSION = '0.14.4'
LILV_MAJOR_VERSION = '0' LILV_MAJOR_VERSION = '0'


# Library version (UNIX style major, minor, micro) # Library version (UNIX style major, minor, micro)
@@ -31,50 +30,54 @@ def options(opt):
opt.load('compiler_cxx') opt.load('compiler_cxx')
opt.load('python') opt.load('python')
autowaf.set_options(opt) autowaf.set_options(opt)
opt.add_option('--no-utils', action='store_true', default=False, dest='no_utils',
help="Do not build command line utilities")
opt.add_option('--bindings', action='store_true', default=False, dest='bindings',
help="Build python bindings")
opt.add_option('--dyn-manifest', action='store_true', default=False,
dest='dyn_manifest',
help="Build support for dynamic manifests")
opt.add_option('--test', action='store_true', default=False, dest='build_tests',
help="Build unit tests")
opt.add_option('--no-bash-completion', action='store_true', default=False,
opt.add_option('--no-utils', action='store_true', dest='no_utils',
help='Do not build command line utilities')
opt.add_option('--bindings', action='store_true', dest='bindings',
help='Build python bindings')
opt.add_option('--dyn-manifest', action='store_true', dest='dyn_manifest',
help='Build support for dynamic manifests')
opt.add_option('--test', action='store_true', dest='build_tests',
help='Build unit tests')
opt.add_option('--no-bash-completion', action='store_true',
dest='no_bash_completion', dest='no_bash_completion',
help="Don't install bash completion script in CONFIGDIR")
help='Do not install bash completion script in CONFIGDIR')
opt.add_option('--static', action='store_true', dest='static',
help='Build static library')
opt.add_option('--no-shared', action='store_true', dest='no_shared',
help='Do not build shared library')
opt.add_option('--static-progs', action='store_true', dest='static_progs',
help='Build programs as static binaries')
opt.add_option('--default-lv2-path', type='string', default='', opt.add_option('--default-lv2-path', type='string', default='',
dest='default_lv2_path', dest='default_lv2_path',
help="Default LV2 path to use if $LV2_PATH is unset (globs and ~ supported)")
opt.add_option('--static', action='store_true', default=False, dest='static',
help="Build static library")
help='Default LV2 path to use if LV2_PATH is unset')


def configure(conf): def configure(conf):
conf.load('compiler_c') conf.load('compiler_c')
conf.load('compiler_cxx')
conf.load('python')


if Options.options.bindings: if Options.options.bindings:
try: try:
conf.load('swig python')
conf.load('swig')
conf.load('python')
conf.load('compiler_cxx')
conf.check_python_headers() conf.check_python_headers()
autowaf.define(conf, 'LILV_PYTHON', 1); autowaf.define(conf, 'LILV_PYTHON', 1);
except: except:
pass pass


conf.line_just = 51
autowaf.configure(conf) autowaf.configure(conf)
autowaf.set_c99_mode(conf)
autowaf.display_header('Lilv Configuration') autowaf.display_header('Lilv Configuration')


if conf.env['MSVC_COMPILER']:
conf.env.append_unique('CFLAGS', ['-TP', '-MD'])
else:
conf.env.append_unique('CFLAGS', '-std=c99')
conf.env.BASH_COMPLETION = not Options.options.no_bash_completion
conf.env.BUILD_TESTS = Options.options.build_tests
conf.env.BUILD_UTILS = not Options.options.no_utils
conf.env.BUILD_SHARED = not Options.options.no_shared
conf.env.STATIC_PROGS = Options.options.static_progs
conf.env.BUILD_STATIC = (Options.options.static or
Options.options.static_progs)


conf.env['BUILD_TESTS'] = Options.options.build_tests
conf.env['BUILD_UTILS'] = not Options.options.no_utils
conf.env['BUILD_STATIC'] = Options.options.static
conf.env['BASH_COMPLETION'] = not Options.options.no_bash_completion
if not conf.env.BUILD_SHARED and not conf.env.BUILD_STATIC:
conf.fatal('Neither a shared nor a static build requested')


autowaf.check_pkg(conf, 'lv2', uselib_store='LV2', autowaf.check_pkg(conf, 'lv2', uselib_store='LV2',
atleast_version='1.0.0', mandatory=True) atleast_version='1.0.0', mandatory=True)
@@ -92,7 +95,7 @@ def configure(conf):
defines += ['_DARWIN_C_SOURCE'] defines += ['_DARWIN_C_SOURCE']


# Check for gcov library (for test coverage) # Check for gcov library (for test coverage)
if conf.env['BUILD_TESTS']:
if conf.env.BUILD_TESTS:
conf.check_cc(lib='gcov', conf.check_cc(lib='gcov',
define_name='HAVE_GCOV', define_name='HAVE_GCOV',
mandatory=False) mandatory=False)
@@ -109,6 +112,14 @@ def configure(conf):
define_name='HAVE_FILENO', define_name='HAVE_FILENO',
mandatory=False) mandatory=False)


conf.check_cc(function_name='clock_gettime',
header_name=['sys/time.h','time.h'],
defines=['_POSIX_C_SOURCE=199309L'],
define_name='HAVE_CLOCK_GETTIME',
uselib_store='CLOCK_GETTIME',
lib=['rt'],
mandatory=False)

autowaf.define(conf, 'LILV_VERSION', LILV_VERSION) autowaf.define(conf, 'LILV_VERSION', LILV_VERSION)
if Options.options.dyn_manifest: if Options.options.dyn_manifest:
autowaf.define(conf, 'LILV_DYN_MANIFEST', 1) autowaf.define(conf, 'LILV_DYN_MANIFEST', 1)
@@ -138,30 +149,47 @@ def configure(conf):
lv2_path = lilv_path_sep.join(['%APPDATA%\\\\LV2', lv2_path = lilv_path_sep.join(['%APPDATA%\\\\LV2',
'%COMMONPROGRAMFILES%\\\\LV2']) '%COMMONPROGRAMFILES%\\\\LV2'])
else: else:
libdirname = os.path.basename(conf.env['LIBDIR'])
libdirname = os.path.basename(conf.env.LIBDIR)
lv2_path = lilv_path_sep.join(['~/.lv2', lv2_path = lilv_path_sep.join(['~/.lv2',
'/usr/%s/lv2' % libdirname, '/usr/%s/lv2' % libdirname,
'/usr/local/%s/lv2' % libdirname]) '/usr/local/%s/lv2' % libdirname])
autowaf.define(conf, 'LILV_DEFAULT_LV2_PATH', lv2_path) autowaf.define(conf, 'LILV_DEFAULT_LV2_PATH', lv2_path)


conf.env['LIB_LILV'] = ['lilv-%s' % LILV_MAJOR_VERSION]
conf.env.LIB_LILV = ['lilv-%s' % LILV_MAJOR_VERSION]


conf.write_config_header('lilv_config.h', remove=False) conf.write_config_header('lilv_config.h', remove=False)


autowaf.display_msg(conf, "Default LV2_PATH",
conf.env['LILV_DEFAULT_LV2_PATH'])
autowaf.display_msg(conf, "Utilities",
bool(conf.env['BUILD_UTILS']))
autowaf.display_msg(conf, "Unit tests",
bool(conf.env['BUILD_TESTS']))
autowaf.display_msg(conf, "Dynamic manifest support",
bool(conf.env['LILV_DYN_MANIFEST']))
autowaf.display_msg(conf, "Python bindings",
autowaf.display_msg(conf, 'Default LV2_PATH',
conf.env.LILV_DEFAULT_LV2_PATH)
autowaf.display_msg(conf, 'Utilities',
bool(conf.env.BUILD_UTILS))
autowaf.display_msg(conf, 'Unit tests',
bool(conf.env.BUILD_TESTS))
autowaf.display_msg(conf, 'Dynamic manifest support',
bool(conf.env.LILV_DYN_MANIFEST))
autowaf.display_msg(conf, 'Python bindings',
conf.is_defined('LILV_PYTHON')) conf.is_defined('LILV_PYTHON'))


conf.undefine('LILV_DEFAULT_LV2_PATH') # Cmd line errors with VC++ conf.undefine('LILV_DEFAULT_LV2_PATH') # Cmd line errors with VC++
print('') print('')


def build_util(bld, name, defines):
obj = bld(features = 'c cprogram',
source = name + '.c',
includes = ['.', './src', './utils'],
use = 'liblilv',
target = name,
defines = defines,
install_path = '${BINDIR}')
if not bld.env.BUILD_SHARED or bld.env.STATIC_PROGS:
obj.use = 'liblilv_static'
if bld.env.STATIC_PROGS:
if not bld.env.MSVC_COMPILER:
obj.lib = ['m']
obj.env.SHLIB_MARKER = obj.env.STLIB_MARKER
obj.linkflags = ['-static', '-Wl,--start-group']
return obj

def build(bld): def build(bld):
# C/C++ Headers # C/C++ Headers
includedir = '${INCLUDEDIR}/lilv-%s/lilv' % LILV_MAJOR_VERSION includedir = '${INCLUDEDIR}/lilv-%s/lilv' % LILV_MAJOR_VERSION
@@ -195,29 +223,29 @@ def build(bld):
defines = [] defines = []
if sys.platform == 'win32': if sys.platform == 'win32':
lib = [] lib = []
if bld.env['MSVC_COMPILER']:
if bld.env.MSVC_COMPILER:
libflags = [] libflags = []
defines = ['snprintf=_snprintf'] defines = ['snprintf=_snprintf']
elif sys.platform.find('bsd') > 0: elif sys.platform.find('bsd') > 0:
lib = [] lib = []


# Shared Library # Shared Library
obj = bld(features = 'c cshlib',
export_includes = ['.'],
source = lib_source,
includes = ['.', './src'],
name = 'liblilv',
target = 'lilv-%s' % LILV_MAJOR_VERSION,
vnum = LILV_LIB_VERSION,
install_path = '${LIBDIR}',
defines = defines,
cflags = libflags + [ '-DLILV_SHARED',
'-DLILV_INTERNAL' ],
lib = lib)
autowaf.use_lib(bld, obj, 'SORD SRATOM LV2')
if bld.env.BUILD_SHARED:
obj = bld(features = 'c cshlib',
export_includes = ['.'],
source = lib_source,
includes = ['.', './src'],
name = 'liblilv',
target = 'lilv-%s' % LILV_MAJOR_VERSION,
vnum = LILV_LIB_VERSION,
install_path = '${LIBDIR}',
defines = ['LILV_SHARED', 'LILV_INTERNAL'],
cflags = libflags,
lib = lib)
autowaf.use_lib(bld, obj, 'SORD SRATOM LV2')


# Static library # Static library
if bld.env['BUILD_STATIC']:
if bld.env.BUILD_STATIC:
obj = bld(features = 'c cstlib', obj = bld(features = 'c cstlib',
export_includes = ['.'], export_includes = ['.'],
source = lib_source, source = lib_source,
@@ -226,11 +254,10 @@ def build(bld):
target = 'lilv-%s' % LILV_MAJOR_VERSION, target = 'lilv-%s' % LILV_MAJOR_VERSION,
vnum = LILV_LIB_VERSION, vnum = LILV_LIB_VERSION,
install_path = '${LIBDIR}', install_path = '${LIBDIR}',
defines = defines,
cflags = [ '-DLILV_INTERNAL' ])
defines = defines + ['LILV_INTERNAL'])
autowaf.use_lib(bld, obj, 'SORD SRATOM LV2') autowaf.use_lib(bld, obj, 'SORD SRATOM LV2')


if bld.env['BUILD_TESTS']:
if bld.env.BUILD_TESTS:
test_libs = lib test_libs = lib
test_cflags = [''] test_cflags = ['']
if bld.is_defined('HAVE_GCOV'): if bld.is_defined('HAVE_GCOV'):
@@ -239,10 +266,10 @@ def build(bld):


# Test plugin library # Test plugin library
penv = bld.env.derive() penv = bld.env.derive()
shlib_pattern = penv['cshlib_PATTERN']
shlib_pattern = penv.cshlib_PATTERN
if shlib_pattern.startswith('lib'): if shlib_pattern.startswith('lib'):
shlib_pattern = shlib_pattern[3:] shlib_pattern = shlib_pattern[3:]
penv['cshlib_PATTERN'] = shlib_pattern
penv.cshlib_PATTERN = shlib_pattern
shlib_ext = shlib_pattern[shlib_pattern.rfind('.'):] shlib_ext = shlib_pattern[shlib_pattern.rfind('.'):]


obj = bld(features = 'c cshlib', obj = bld(features = 'c cshlib',
@@ -271,8 +298,8 @@ def build(bld):
name = 'liblilv_profiled', name = 'liblilv_profiled',
target = 'lilv_profiled', target = 'lilv_profiled',
install_path = None, install_path = None,
defines = defines,
cflags = test_cflags + ['-DLILV_INTERNAL'],
defines = defines + ['LILV_INTERNAL'],
cflags = test_cflags,
lib = test_libs) lib = test_libs)
autowaf.use_lib(bld, obj, 'SORD SRATOM LV2') autowaf.use_lib(bld, obj, 'SORD SRATOM LV2')


@@ -292,20 +319,20 @@ def build(bld):
autowaf.use_lib(bld, obj, 'SORD SRATOM LV2') autowaf.use_lib(bld, obj, 'SORD SRATOM LV2')


# Utilities # Utilities
if bld.env['BUILD_UTILS']:
if bld.env.BUILD_UTILS:
utils = ''' utils = '''
utils/lilv-bench
utils/lv2info utils/lv2info
utils/lv2ls utils/lv2ls
utils/lilv-bench
''' '''
for i in utils.split(): for i in utils.split():
obj = bld(features = 'c cprogram',
source = i + '.c',
includes = ['.', './src', './utils'],
use = 'liblilv',
target = i,
defines = defines,
install_path = '${BINDIR}')
build_util(bld, i, defines)
# lv2bench (less portable than other utilities)
if bld.is_defined('HAVE_CLOCK_GETTIME'):
obj = build_util(bld, 'utils/lv2bench', defines)
if not bld.env.MSVC_COMPILER:
obj.lib = ['rt']


# Documentation # Documentation
autowaf.build_dox(bld, 'LILV', LILV_VERSION, top, out) autowaf.build_dox(bld, 'LILV', LILV_VERSION, top, out)
@@ -314,7 +341,7 @@ def build(bld):
bld.install_files('${MANDIR}/man1', bld.path.ant_glob('doc/*.1')) bld.install_files('${MANDIR}/man1', bld.path.ant_glob('doc/*.1'))


# Bash completion # Bash completion
if bld.env['BASH_COMPLETION']:
if bld.env.BASH_COMPLETION:
bld.install_as( bld.install_as(
'${SYSCONFDIR}/bash_completion.d/lilv', 'utils/lilv.bash_completion') '${SYSCONFDIR}/bash_completion.d/lilv', 'utils/lilv.bash_completion')


@@ -331,33 +358,15 @@ def build(bld):
bld.install_files('${PYTHONDIR}', 'bindings/lilv.py') bld.install_files('${PYTHONDIR}', 'bindings/lilv.py')


bld.add_post_fun(autowaf.run_ldconfig) bld.add_post_fun(autowaf.run_ldconfig)
if bld.env['DOCS']:
if bld.env.DOCS:
bld.add_post_fun(fix_docs) bld.add_post_fun(fix_docs)


def build_dir(ctx, subdir):
if autowaf.is_child():
return os.path.join('build', APPNAME, subdir)
else:
return os.path.join('build', subdir)

def fix_docs(ctx): def fix_docs(ctx):
try:
top = os.getcwd()
os.chdir(build_dir(ctx, 'doc/html'))
os.system("sed -i 's/LILV_API //' group__lilv.html")
os.system("sed -i 's/LILV_DEPRECATED //' group__lilv.html")
os.system("sed -i 's/href=\"doc\/style.css\"/href=\"style.css\"/' group__lilv.html")
os.remove('index.html')
os.symlink('group__lilv.html', 'index.html')
os.chdir(top)
os.chdir(build_dir(ctx, 'doc/man/man3'))
os.system("sed -i 's/LILV_API //' lilv.3")
os.chdir(top)
except:
Logs.error("Failed to fix up %s documentation" % APPNAME)
if ctx.cmd == 'build':
autowaf.make_simple_dox(APPNAME)


def upload_docs(ctx): def upload_docs(ctx):
os.system("rsync -ravz --delete -e ssh build/doc/html/ drobilla@drobilla.net:~/drobilla.net/docs/lilv/")
os.system('rsync -ravz --delete -e ssh build/doc/html/ drobilla@drobilla.net:~/drobilla.net/docs/lilv/')


def test(ctx): def test(ctx):
autowaf.pre_test(ctx, APPNAME) autowaf.pre_test(ctx, APPNAME)

+ 14
- 13
c++/carla-lilv/lilv.c View File

@@ -15,16 +15,17 @@
* For a full copy of the GNU General Public License see the COPYING file * For a full copy of the GNU General Public License see the COPYING file
*/ */


#include "lilv-0.14.2/src/collections.c"
#include "lilv-0.14.2/src/instance.c"
#include "lilv-0.14.2/src/lib.c"
#include "lilv-0.14.2/src/node.c"
#include "lilv-0.14.2/src/plugin.c"
#include "lilv-0.14.2/src/pluginclass.c"
#include "lilv-0.14.2/src/port.c"
#include "lilv-0.14.2/src/query.c"
#include "lilv-0.14.2/src/scalepoint.c"
#include "lilv-0.14.2/src/state.c"
#include "lilv-0.14.2/src/ui.c"
#include "lilv-0.14.2/src/util.c"
#include "lilv-0.14.2/src/world.c"
#include "src/collections.c"
#include "src/instance.c"
#include "src/lib.c"
#include "src/node.c"
#include "src/plugin.c"
#include "src/pluginclass.c"
#include "src/port.c"
#include "src/query.c"
#include "src/scalepoint.c"
#include "src/state.c"
#include "src/ui.c"
#include "src/util.c"
#include "src/world.c"
#include "src/zix/tree.c"

+ 0
- 35
c++/carla-lilv/serd-0.14.0/INSTALL View File

@@ -1,35 +0,0 @@
This software requires only Python to build.

Like an auto* project, building has three phases:


* Configure: ./waf configure [OPTIONS]

Example:
./waf configure --prefix=/some/where --debug --strict

If --debug is not given, the flags from the environment variables
CFLAGS and CXXFLAGS will be used.

The default prefix is /usr/local


* Build: ./waf [OPTIONS]

Example:
./waf -j4


* Install: ./waf install [OPTIONS]

The environment variable DESTDIR can be used to add any prefix to
the install paths (useful for packaging). Example:

DESTDIR=/home/drobilla/packages ./waf install


*** IMPORTANT: You must use absolute paths everywhere


Run './waf --help' for detailed option information.


+ 0
- 184
c++/carla-lilv/serd-0.14.0/doc/layout.xml View File

@@ -1,184 +0,0 @@
<doxygenlayout version="1.0">
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title=""/>
<tab type="modules" visible="yes" title=""/>
<tab type="namespaces" visible="yes" title="">
<tab type="namespaces" visible="yes" title=""/>
<tab type="namespacemembers" visible="yes" title=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classes" visible="yes" title=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title=""/>
<tab type="classmembers" visible="yes" title=""/>
</tab>
<tab type="files" visible="no" title="">
<tab type="files" visible="yes" title=""/>
<tab type="globals" visible="yes" title=""/>
</tab>
<tab type="dirs" visible="yes" title=""/>
<tab type="examples" visible="yes" title=""/>
</navindex>

<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<allmemberslink visible="yes"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<typedefs title=""/>
<enums title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>

<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>

<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<classes visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>

<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<classes visible="yes" title="Structures"/>
<typedefs title="Opaque Types"/>
<namespaces visible="yes" title=""/>
<dirs visible="yes" title=""/>
<nestedgroups visible="yes" title=""/>
<files visible="yes" title=""/>
<defines title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>

<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>

BIN
c++/carla-lilv/serd-0.14.0/waf View File


c++/carla-lilv/serd-0.14.0/AUTHORS → c++/carla-lilv/serd-0.18.0/AUTHORS View File


c++/carla-lilv/serd-0.14.0/COPYING → c++/carla-lilv/serd-0.18.0/COPYING View File


+ 59
- 0
c++/carla-lilv/serd-0.18.0/INSTALL View File

@@ -0,0 +1,59 @@
Installation Instructions
=========================

Basic Installation
------------------

Building this software requires only Python. To install with default options:

./waf configure
./waf
./waf install

You may need to become root for the install stage, for example:

sudo ./waf install

Configuration Options
---------------------

All supported options can be viewed using the command:

./waf --help

Most options only need to be passed during the configure stage, for example:

./waf configure --prefix=/usr
./waf
./waf install

Compiler Configuration
----------------------

Several standard environment variables can be used to control how compilers are
invoked:

* CC: Path to C compiler
* CFLAGS: C compiler options
* CXX: Path to C++ compiler
* CXXFLAGS: C++ compiler options
* CPPFLAGS: C preprocessor options
* LINKFLAGS: Linker options

Installation Directories
------------------------

The --prefix option (or the PREFIX environment variable) can be used to change
the prefix which all files are installed under. There are also several options
allowing for more fine-tuned control, see the --help output for details.

Packaging
---------

Everything can be installed to a specific root directory by passing a --destdir
option to the install stage (or setting the DESTDIR environment variable),
which adds a prefix to all install paths. For example:

./waf configure --prefix=/usr
./waf
./waf install --destdir=/tmp/package

c++/carla-lilv/serd-0.14.0/NEWS → c++/carla-lilv/serd-0.18.0/NEWS View File

@@ -1,3 +1,21 @@
serd (0.18.0) stable;

* Support digits at start of local names as per new Turtle grammar
* Add incremental read interface suitable for reading from infinite streams
* Add -e option to serdi to use incremental reading
* Add error callback to reader and writer for custom error reporting
* Add -q option to serdi to suppress all non-data output, e.g. errors
* Reset indent when finishing a write
* Report write size correctly when invalid UTF-8 is encountered and a
replacement character is written
* Strip down API documentation to a single clean page
* Fix various hyper-strict warnings
* Do not require a C++ compiler to build
* Add option to build utilities as static binaries
* Upgrade to waf 1.7.2

-- David Robillard <d@drobilla.net> Thu, 23 Aug 2012 00:18:34 -0400

serd (0.14.0) stable; serd (0.14.0) stable;


* Use path variables in pkgconfig files * Use path variables in pkgconfig files

c++/carla-lilv/serd-0.14.0/PACKAGING → c++/carla-lilv/serd-0.18.0/PACKAGING View File


c++/carla-lilv/serd-0.14.0/README → c++/carla-lilv/serd-0.18.0/README View File


c++/carla-lilv/serd-0.14.0/doc/reference.doxygen.in → c++/carla-lilv/serd-0.18.0/doc/reference.doxygen.in View File

@@ -1,14 +1,14 @@
# Doxyfile 1.6.1
# Doxyfile 1.8.1.1


# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
# doxygen (www.doxygen.org) for a project.
# #
# All text after a hash (#) is considered a comment and will be ignored
# All text after a hash (#) is considered a comment and will be ignored.
# The format is: # The format is:
# TAG = value [value, ...] # TAG = value [value, ...]
# For lists items can also be appended using: # For lists items can also be appended using:
# TAG += value [value, ...] # TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (" ")
# Values that contain spaces should be placed between quotes (" ").


#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
@@ -22,8 +22,9 @@


DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8


# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
# The PROJECT_NAME tag is a single word (or sequence of words) that should
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.


PROJECT_NAME = Serd PROJECT_NAME = Serd


@@ -33,6 +34,19 @@ PROJECT_NAME = Serd


PROJECT_NUMBER = @SERD_VERSION@ PROJECT_NUMBER = @SERD_VERSION@


# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer
# a quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF =

# With the PROJECT_LOGO tag one can specify an logo or icon that is
# included in the documentation. The maximum height of the logo should not
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
# Doxygen will copy the logo to the output directory.

PROJECT_LOGO =

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location # If a relative path is entered, it will be relative to the location
@@ -57,7 +71,7 @@ CREATE_SUBDIRS = NO
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.


OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
@@ -126,7 +140,7 @@ STRIP_FROM_PATH =
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH =


# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful is your file systems
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM. # doesn't support long names like on DOS, Mac, or CD-ROM.


SHORT_NAMES = NO SHORT_NAMES = NO
@@ -181,6 +195,13 @@ TAB_SIZE = 4


ALIASES = ALIASES =


# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
# "class=itcl::class" will allow you to use the command class in the
# itcl::class meaning.

TCL_SUBST =

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C. # sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list # For instance, some of the names that are used will be different. The list
@@ -207,22 +228,32 @@ OPTIMIZE_FOR_FORTRAN = NO


OPTIMIZE_OUTPUT_VHDL = NO OPTIMIZE_OUTPUT_VHDL = NO


# Doxygen selects the parser to use depending on the extension of the files it parses.
# With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this tag.
# The format is ext=language, where ext is a file extension, and language is one of
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.


EXTENSION_MAPPING = EXTENSION_MAPPING =


# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
# comments according to the Markdown format, which allows for more readable
# documentation. See http://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.

MARKDOWN_SUPPORT = YES

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should # to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and # set this tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
# func(std::string) {}). This also make the inheritance and collaboration
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate. # diagrams that involve STL classes more complete and accurate.


BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = NO
@@ -240,7 +271,7 @@ SIP_SUPPORT = NO


# For Microsoft's IDL there are propget and propput attributes to indicate getter # For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default) # and setter methods for a property. Setting this option to YES (the default)
# will make doxygen to replace the get and set methods by a property in the
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or # documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the # setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO. # methods anyway, you should set this option to NO.
@@ -262,6 +293,22 @@ DISTRIBUTE_GROUP_DOC = NO


SUBGROUPING = YES SUBGROUPING = YES


# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
# unions are shown inside the group in which they are included (e.g. using
# @ingroup) instead of on a separate page (for HTML and Man pages) or
# section (for LaTeX and RTF).

INLINE_GROUPED_CLASSES = YES

# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data fields will be shown inline in the documentation
# of the scope in which they are defined (i.e. file, namespace, or group
# documentation), provided this scope is documented. If set to NO (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).

INLINE_SIMPLE_STRUCTS = YES

# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
# is documented as struct, union, or enum with the name of the typedef. So # is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
@@ -278,16 +325,27 @@ TYPEDEF_HIDES_STRUCT = YES
# For small to medium size projects (<1000 input files) the default value is # For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause # probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time # doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penality.
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the # If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on # performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will rougly double the
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula: # memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols
# corresponding to a cache size of 2^16 = 65536 symbols.


SYMBOL_CACHE_SIZE = 0 SYMBOL_CACHE_SIZE = 0


# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
# their name and scope. Since this can be an expensive process and often the
# same symbol appear multiple times in the code, doxygen keeps a cache of
# pre-resolved symbols. If the cache is too small doxygen will become slower.
# If the cache is too large, memory is wasted. The cache size is given by this
# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.

LOOKUP_CACHE_SIZE = 0

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -304,6 +362,10 @@ EXTRACT_ALL = YES


EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO


# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.

EXTRACT_PACKAGE = NO

# If the EXTRACT_STATIC tag is set to YES all static members of a file # If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation. # will be included in the documentation.


@@ -326,7 +388,7 @@ EXTRACT_LOCAL_METHODS = NO
# extracted and appear in the documentation as a namespace called # extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base # 'anonymous_namespace{file}', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default # name of the file that contains the anonymous namespace. By default
# anonymous namespace are hidden.
# anonymous namespaces are hidden.


EXTRACT_ANON_NSPACES = NO EXTRACT_ANON_NSPACES = NO


@@ -386,6 +448,12 @@ HIDE_SCOPE_NAMES = NO


SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES


# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
# will list include files with double quotes in the documentation
# rather than with sharp brackets.

FORCE_LOCAL_INCLUDES = NO

# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
# is inserted in the documentation for inline members. # is inserted in the documentation for inline members.


@@ -405,7 +473,13 @@ SORT_MEMBER_DOCS = NO


SORT_BRIEF_DOCS = NO SORT_BRIEF_DOCS = NO


# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
# will sort the (brief and detailed) documentation of class members so that
# constructors and destructors are listed first. If set to NO (the default)
# the constructors will appear in the respective orders defined by
# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.


SORT_MEMBERS_CTORS_1ST = NO SORT_MEMBERS_CTORS_1ST = NO


@@ -425,6 +499,15 @@ SORT_GROUP_NAMES = NO


SORT_BY_SCOPE_NAME = YES SORT_BY_SCOPE_NAME = YES


# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
# do proper type resolution of all parameters of a function it will reject a
# match between the prototype and the implementation of a member function even
# if there is only one candidate or it is obvious which candidate to choose
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
# will still accept a match between prototype and implementation in such cases.

STRICT_PROTO_MATCHING = NO

# The GENERATE_TODOLIST tag can be used to enable (YES) or # The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo # disable (NO) the todo list. This list is created by putting \todo
# commands in the documentation. # commands in the documentation.
@@ -455,10 +538,10 @@ GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS = ENABLED_SECTIONS =


# The MAX_INITIALIZER_LINES tag determines the maximum number of lines # The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to appear in
# the initial value of a variable or macro consists of for it to appear in
# the documentation. If the initializer consists of more lines than specified # the documentation. If the initializer consists of more lines than specified
# here it will be hidden. Use a value of 0 to hide initializers completely. # here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and defines in the
# The appearance of the initializer of individual variables and macros in the
# documentation can be controlled using \showinitializer or \hideinitializer # documentation can be controlled using \showinitializer or \hideinitializer
# command in the documentation regardless of this setting. # command in the documentation regardless of this setting.


@@ -470,12 +553,6 @@ MAX_INITIALIZER_LINES = 30


SHOW_USED_FILES = YES SHOW_USED_FILES = YES


# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
# in the documentation. The default is NO.

SHOW_DIRECTORIES = NO

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. # Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the # This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES. # Folder Tree View (if specified). The default is YES.
@@ -499,15 +576,25 @@ SHOW_NAMESPACES = NO


FILE_VERSION_FILTER = FILE_VERSION_FILTER =


# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
# doxygen. The layout file controls the global structure of the generated output files
# in an output format independent way. The create the layout file that represents
# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
# file name after the option, if omitted DoxygenLayout.xml will be used as the name
# of the layout file.
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option.
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.


LAYOUT_FILE = @SERD_SRCDIR@/doc/layout.xml LAYOUT_FILE = @SERD_SRCDIR@/doc/layout.xml


# The CITE_BIB_FILES tag can be used to specify one or more bib files
# containing the references data. This must be a list of .bib files. The
# .bib extension is automatically appended if omitted. Using this command
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path.

CITE_BIB_FILES =

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -536,13 +623,13 @@ WARN_IF_UNDOCUMENTED = YES


WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES


# This WARN_NO_PARAMDOC option can be abled to get warnings for
# The WARN_NO_PARAMDOC option can be enabled to get warnings for
# functions that are documented, but have no documentation for their parameters # functions that are documented, but have no documentation for their parameters
# or return value. If set to NO (the default) doxygen will only warn about # or return value. If set to NO (the default) doxygen will only warn about
# wrong or incomplete parameter documentation, but not about the absence of # wrong or incomplete parameter documentation, but not about the absence of
# documentation. # documentation.


WARN_NO_PARAMDOC = NO
WARN_NO_PARAMDOC = YES


# The WARN_FORMAT tag determines the format of the warning messages that # The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text # doxygen can produce. The string should contain the $file, $line, and $text
@@ -582,8 +669,9 @@ INPUT_ENCODING = UTF-8
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left # and *.h) to filter out the source-files in the directories. If left
# blank the following patterns are tested: # blank the following patterns are tested:
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
# *.f90 *.f *.for *.vhd *.vhdl


FILE_PATTERNS = FILE_PATTERNS =


@@ -593,14 +681,16 @@ FILE_PATTERNS =


RECURSIVE = NO RECURSIVE = NO


# The EXCLUDE tag can be used to specify files and/or directories that should
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a # excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag. # subdirectory from a directory tree whose root is specified with the INPUT tag.
# Note that relative paths are relative to the directory from which doxygen is
# run.


EXCLUDE = EXCLUDE =


# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input. # from the input.


EXCLUDE_SYMLINKS = NO EXCLUDE_SYMLINKS = NO
@@ -664,8 +754,8 @@ INPUT_FILTER =
# filter if there is a match. # filter if there is a match.
# The filters are a list of the form: # The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
# info on how filters are used. If FILTER_PATTERNS is empty or if
# non of the patterns match the file name, INPUT_FILTER is applied.


FILTER_PATTERNS = FILTER_PATTERNS =


@@ -675,6 +765,14 @@ FILTER_PATTERNS =


FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO


# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
# and it is also possible to disable source filtering for a specific pattern
# using *.ext= (so without naming a filter). This option only has effect when
# FILTER_SOURCE_FILES is enabled.

FILTER_SOURCE_PATTERNS =

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -693,7 +791,7 @@ INLINE_SOURCES = NO


# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code # doxygen to hide any special comment blocks from generated source code
# fragments. Normal C and C++ comments will always remain visible.
# fragments. Normal C, C++ and Fortran comments will always remain visible.


STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES


@@ -729,7 +827,7 @@ USE_HTAGS = NO
# will generate a verbatim copy of the header file for each class for # will generate a verbatim copy of the header file for each class for
# which an include is specified. Set to NO to disable this. # which an include is specified. Set to NO to disable this.


VERBATIM_HEADERS = YES
VERBATIM_HEADERS = NO


#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
@@ -777,7 +875,14 @@ HTML_FILE_EXTENSION = .html


# The HTML_HEADER tag can be used to specify a personal HTML header for # The HTML_HEADER tag can be used to specify a personal HTML header for
# each generated HTML page. If it is left blank doxygen will generate a # each generated HTML page. If it is left blank doxygen will generate a
# standard header.
# standard header. Note that when using a custom header you are responsible
# for the proper inclusion of any scripts and style sheets that doxygen
# needs, which is dependent on the configuration options used.
# It is advised to generate a default header using "doxygen -w html
# header.html footer.html stylesheet.css YourConfigFile" and then modify
# that header. Note that the header is subject to change so you typically
# have to redo this when upgrading to a newer version of doxygen or when
# changing the value of configuration settings such as GENERATE_TREEVIEW!


HTML_HEADER = HTML_HEADER =


@@ -792,24 +897,67 @@ HTML_FOOTER =
# fine-tune the look of the HTML output. If the tag is left blank doxygen # fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy # will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own # the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
# style sheet in the HTML output directory as well, or it will be erased!

HTML_STYLESHEET = @SERD_SRCDIR@/doc/style.css

# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.

HTML_EXTRA_FILES =

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the style sheet and background images
# according to this color. Hue is specified as an angle on a colorwheel,
# see http://en.wikipedia.org/wiki/Hue for more information.
# For instance the value 0 represents red, 60 is yellow, 120 is green,
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
# The allowed range is 0 to 359.

HTML_COLORSTYLE_HUE = 160

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
# the colors in the HTML output. For a value of 0 the output will use
# grayscales only. A value of 255 will produce the most vivid colors.

HTML_COLORSTYLE_SAT = 100

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
# the luminance component of the colors in the HTML output. Values below
# 100 gradually make the output lighter, whereas values above 100 make
# the output darker. The value divided by 100 is the actual gamma applied,
# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
# and 100 does not change the gamma.


HTML_STYLESHEET = doc/style.css
HTML_COLORSTYLE_GAMMA = 80


# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs.


HTML_ALIGN_MEMBERS = YES
HTML_TIMESTAMP = YES


# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the # documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
# page has loaded.


HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO


# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
# entries shown in the various tree structured indices initially; the user
# can expand and collapse entries dynamically later on. Doxygen will expand
# the tree to such a level that at most the specified number of entries are
# visible (unless a fully collapsed tree already exceeds this amount).
# So setting the number of entries 1 will produce a full collapsed tree by
# default. 0 is a special value representing an infinite number of entries
# and will result in a full expanded tree by default.

HTML_INDEX_NUM_ENTRIES = 100

# If the GENERATE_DOCSET tag is set to YES, additional index files # If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3 # will be generated that can be used as input for Apple's Xcode 3
# integrated development environment, introduced with OSX 10.5 (Leopard). # integrated development environment, introduced with OSX 10.5 (Leopard).
@@ -818,7 +966,8 @@ HTML_DYNAMIC_SECTIONS = NO
# directory and running "make install" will install the docset in # directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
# it at startup. # it at startup.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
# for more information.


GENERATE_DOCSET = NO GENERATE_DOCSET = NO


@@ -836,6 +985,16 @@ DOCSET_FEEDNAME = "Doxygen generated docs"


DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_BUNDLE_ID = org.doxygen.Project


# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.

DOCSET_PUBLISHER_ID = org.doxygen.Publisher

# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.

DOCSET_PUBLISHER_NAME = Publisher

# If the GENERATE_HTMLHELP tag is set to YES, additional index files # If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the # will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
@@ -880,10 +1039,10 @@ BINARY_TOC = NO


TOC_EXPAND = NO TOC_EXPAND = NO


# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
# are set, an additional index file will be generated that can be used as input for
# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
# HTML documentation.
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
# that can be used as input for Qt's qhelpgenerator to generate a
# Qt Compressed Help (.qch) of the generated HTML documentation.


GENERATE_QHP = NO GENERATE_QHP = NO


@@ -905,20 +1064,24 @@ QHP_NAMESPACE =


QHP_VIRTUAL_FOLDER = doc QHP_VIRTUAL_FOLDER = doc


# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
# For more information please see
# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters # http://doc.trolltech.com/qthelpproject.html#custom-filters


QHP_CUST_FILTER_NAME = QHP_CUST_FILTER_NAME =


# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
# Qt Help Project / Custom Filters</a>.


QHP_CUST_FILTER_ATTRS = QHP_CUST_FILTER_ATTRS =


# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
# filter section matches. # filter section matches.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
# Qt Help Project / Filter Attributes</a>.


QHP_SECT_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS =


@@ -929,16 +1092,30 @@ QHP_SECT_FILTER_ATTRS =


QHG_LOCATION = QHG_LOCATION =


# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it.
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
# plugin. To install this plugin and make it available under the help contents
# menu in Eclipse, the contents of the directory containing the HTML and XML
# files needs to be copied into the plugins directory of eclipse. The name of
# the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
# the help appears.


DISABLE_INDEX = NO
GENERATE_ECLIPSEHELP = NO


# This tag can be used to set the number of enum values (range [1..20])
# that doxygen will group on one line in the generated HTML documentation.
# A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have
# this name.


ENUM_VALUES_PER_LINE = 4
ECLIPSE_DOC_ID = org.doxygen.Project

# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
# at top of each HTML page. The value NO (the default) enables the index and
# the value YES disables it. Since the tabs have the same information as the
# navigation tree you can set this option to NO if you already set
# GENERATE_TREEVIEW to YES.

DISABLE_INDEX = YES


# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. # structure should be generated to display hierarchical information.
@@ -947,13 +1124,17 @@ ENUM_VALUES_PER_LINE = 4
# is generated for HTML Help). For this to work a browser that supports # is generated for HTML Help). For this to work a browser that supports
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
# Windows users are probably better off using the HTML help feature. # Windows users are probably better off using the HTML help feature.
# Since the tree basically has the same information as the tab index you
# could consider to set DISABLE_INDEX to NO when enabling this option.


GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO


# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
# documentation. Note that a value of 0 will completely suppress the enum
# values from appearing in the overview section.


USE_INLINE_TREES = NO
ENUM_VALUES_PER_LINE = 4


# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree # used to set the initial width (in pixels) of the frame in which the tree
@@ -961,6 +1142,11 @@ USE_INLINE_TREES = NO


TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250


# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
# links to external symbols imported via tag files in a separate window.

EXT_LINKS_IN_WINDOW = NO

# Use this tag to change the font size of Latex formulas included # Use this tag to change the font size of Latex formulas included
# as images in the HTML documentation. The default is 10. Note that # as images in the HTML documentation. The default is 10. Note that
# when you change the font size after a successful doxygen run you need # when you change the font size after a successful doxygen run you need
@@ -969,13 +1155,60 @@ TREEVIEW_WIDTH = 250


FORMULA_FONTSIZE = 10 FORMULA_FONTSIZE = 10


# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
# there is already a search function so this one should typically
# be disabled.
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are
# not supported properly for IE 6.0, but are supported on all modern browsers.
# Note that when changing this option you need to delete any form_*.png files
# in the HTML output before the changes have effect.

FORMULA_TRANSPARENT = YES

# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
# (see http://www.mathjax.org) which uses client side Javascript for the
# rendering instead of using prerendered bitmaps. Use this if you do not
# have LaTeX installed or if you want to formulas look prettier in the HTML
# output. When enabled you may also need to install MathJax separately and
# configure the path to it using the MATHJAX_RELPATH option.

USE_MATHJAX = NO

# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
# directory is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to
# the MathJax Content Delivery Network so you can quickly see the result without
# installing MathJax.
# However, it is strongly recommended to install a local
# copy of MathJax from http://www.mathjax.org before deployment.

MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest

# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.

MATHJAX_EXTENSIONS =

# When the SEARCHENGINE tag is enabled doxygen will generate a search box
# for the HTML output. The underlying search engine uses javascript
# and DHTML and should work on any modern browser. Note that when using
# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
# (GENERATE_DOCSET) there is already a search function so this one should
# typically be disabled. For large projects the javascript based search engine
# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.


SEARCHENGINE = NO SEARCHENGINE = NO


# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.

SERVER_BASED_SEARCH = NO

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -993,6 +1226,9 @@ LATEX_OUTPUT = latex


# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked. If left blank `latex' will be used as the default command name. # invoked. If left blank `latex' will be used as the default command name.
# Note that when enabling USE_PDFLATEX this option is only used for
# generating bitmaps for formulas in the HTML output, but not in the
# Makefile that is written to the output directory.


LATEX_CMD_NAME = latex LATEX_CMD_NAME = latex


@@ -1009,7 +1245,7 @@ MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO COMPACT_LATEX = NO


# The PAPER_TYPE tag can be used to set the paper type that is used # The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, a4wide, letter, legal and
# by the printer. Possible values are: a4, letter, legal and
# executive. If left blank a4wide will be used. # executive. If left blank a4wide will be used.


PAPER_TYPE = a4wide PAPER_TYPE = a4wide
@@ -1026,6 +1262,13 @@ EXTRA_PACKAGES =


LATEX_HEADER = LATEX_HEADER =


# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
# the generated latex document. The footer should contain everything after
# the last chapter. If it is left blank doxygen will generate a
# standard footer. Notice: only use this tag if you know what you are doing!

LATEX_FOOTER =

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will # is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references # contain links (just like the HTML output) instead of page references
@@ -1052,10 +1295,19 @@ LATEX_BATCHMODE = NO


LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO


# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
# If LATEX_SOURCE_CODE is set to YES then doxygen will include
# source code with syntax highlighting in the LaTeX output.
# Note that which sources are shown also depends on other settings
# such as SOURCE_BROWSER.


LATEX_SOURCE_CODE = NO LATEX_SOURCE_CODE = NO


# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
# http://en.wikipedia.org/wiki/BibTeX for more info.

LATEX_BIB_STYLE = plain

#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -1087,7 +1339,7 @@ COMPACT_RTF = NO


RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO


# Load stylesheet definitions from file. Syntax is similar to doxygen's
# Load style sheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assignments. You only have to provide # config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value. # replacements, missing definitions are set to their default value.


@@ -1232,7 +1484,7 @@ MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO


# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
# in the INCLUDE_PATH (see below) will be search if a #include is found.
# pointed to by INCLUDE_PATH will be searched when a #include is found.


SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES


@@ -1262,15 +1514,15 @@ PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded. # this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used. # The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition.
# Use the PREDEFINED tag if you want to use a different macro definition that
# overrules the definition found in the source code.


EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =


# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
# on a line, have an all uppercase name, and do not end with a semicolon. Such
# function macros are typically used for boiler-plate code, and will confuse
# the parser if not removed.
# doxygen's preprocessor will remove all references to function-like macros
# that are alone on a line, have an all uppercase name, and do not end with a
# semicolon, because these will confuse the parser if not removed.


SKIP_FUNCTION_MACROS = YES SKIP_FUNCTION_MACROS = YES


@@ -1278,22 +1530,18 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------


# The TAGFILES option can be used to specify one or more tagfiles.
# Optionally an initial location of the external documentation
# can be added for each tagfile. The format of a tag file without
# this location is as follows:
# The TAGFILES option can be used to specify one or more tagfiles. For each
# tag file the location of the external documentation should be added. The
# format of a tag file without this location is as follows:
# #
# TAGFILES = file1 file2 ... # TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows: # Adding location for the tag files is done as follows:
# #
# TAGFILES = file1=loc1 "file2 = loc2" ... # TAGFILES = file1=loc1 "file2 = loc2" ...
# where "loc1" and "loc2" can be relative or absolute paths or
# URLs. If a location is present for each tag, the installdox tool
# does not have to be run to correct the links.
# Note that each tag file must have a unique name
# (where the name does NOT include the path)
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
# where "loc1" and "loc2" can be relative or absolute paths
# or URLs. Note that each tag file must have a unique name (where the name does
# NOT include the path). If a tag file is not located in the directory in which
# doxygen is run, you must also specify the path to the tagfile here.


TAGFILES = TAGFILES =


@@ -1326,9 +1574,8 @@ PERL_PATH = /usr/bin/perl
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
# or super classes. Setting the tag to NO turns the diagrams off. Note that # or super classes. Setting the tag to NO turns the diagrams off. Note that
# this option is superseded by the HAVE_DOT option below. This is only a
# fallback. It is recommended to install and use dot, since it yields more
# powerful graphs.
# this option also works with HAVE_DOT disabled, but it is recommended to
# install and use dot, since it yields more powerful graphs.


CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO


@@ -1354,14 +1601,20 @@ HIDE_UNDOC_RELATIONS = YES


HAVE_DOT = NO HAVE_DOT = NO


# By default doxygen will write a font called FreeSans.ttf to the output
# directory and reference it in all dot files that doxygen generates. This
# font does not include all possible unicode characters however, so when you need
# these (or just want a differently looking font) you can specify the font name
# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
# which can be done by putting it in a standard location or by setting the
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
# containing the font.
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
# allowed to run in parallel. When set to 0 (the default) doxygen will
# base this on the number of processors available in the system. You can set it
# explicitly to a value larger than 0 to get control over the balance
# between CPU load and processing speed.

DOT_NUM_THREADS = 0

# By default doxygen will use the Helvetica font for all dot files that
# doxygen generates. When you want a differently looking font you can specify
# the font name using DOT_FONTNAME. You need to make sure dot is able to find
# the font, which can be done by putting it in a standard location or by setting
# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font.


DOT_FONTNAME = FreeSans DOT_FONTNAME = FreeSans


@@ -1370,17 +1623,16 @@ DOT_FONTNAME = FreeSans


DOT_FONTSIZE = 10 DOT_FONTSIZE = 10


# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
# can find it using this tag.
# By default doxygen will tell dot to use the Helvetica font.
# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
# set the path where dot can find it.


DOT_FONTPATH = DOT_FONTPATH =


# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and # will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the # indirect inheritance relations. Setting this tag to YES will force the
# the CLASS_DIAGRAMS tag to NO.
# CLASS_DIAGRAMS tag to NO.


CLASS_GRAPH = NO CLASS_GRAPH = NO


@@ -1402,6 +1654,15 @@ GROUP_GRAPHS = YES


UML_LOOK = NO UML_LOOK = NO


# If the UML_LOOK tag is enabled, the fields and methods are shown inside
# the class node. If there are many fields or methods and many nodes the
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
# threshold limits the number of items for each type to make the size more
# managable. Set this to 0 for no limit. Note that the threshold may be
# exceeded by 50% before the limit is enforced.

UML_LIMIT_NUM_FIELDS = 10

# If set to YES, the inheritance and collaboration graphs will show the # If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances. # relations between templates and their instances.


@@ -1438,23 +1699,34 @@ CALL_GRAPH = NO
CALLER_GRAPH = NO CALLER_GRAPH = NO


# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
# will generate a graphical hierarchy of all classes instead of a textual one.


GRAPHICAL_HIERARCHY = NO GRAPHICAL_HIERARCHY = NO


# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories # then doxygen will show the dependencies a directory has on other directories
# in a graphical way. The dependency relations are determined by the #include # in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories. # relations between the files in the directories.


DIRECTORY_GRAPH = YES
DIRECTORY_GRAPH = NO


# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. Possible values are png, jpg, or gif
# If left blank png will be used.
# generated by dot. Possible values are svg, png, jpg, or gif.
# If left blank png will be used. If you choose svg you need to set
# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible in IE 9+ (other browsers do not have this requirement).


DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png


# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
# Note that this requires a modern browser other than Internet Explorer.
# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
# visible. Older versions of IE do not have SVG support.

INTERACTIVE_SVG = NO

# The tag DOT_PATH can be used to specify the path where the dot tool can be # The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path. # found. If left blank, it is assumed the dot tool can be found in the path.


@@ -1466,6 +1738,12 @@ DOT_PATH =


DOTFILE_DIRS = DOTFILE_DIRS =


# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).

MSCFILE_DIRS =

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph # nodes that will be shown in the graph. If the number of nodes in a graph
# becomes larger than this value, doxygen will truncate the graph, which is # becomes larger than this value, doxygen will truncate the graph, which is

c++/carla-lilv/serd-0.14.0/doc/serdi.1 → c++/carla-lilv/serd-0.18.0/doc/serdi.1 View File

@@ -1,4 +1,4 @@
.TH SERDI 1 "17 Jan 2012"
.TH SERDI 1 "08 May 2012"


.SH NAME .SH NAME
.B serdi \- Read and write RDF syntax .B serdi \- Read and write RDF syntax
@@ -16,6 +16,14 @@ Fast bulk output for large serialisations.
\fB\-c PREFIX\fR \fB\-c PREFIX\fR
Chop PREFIX from matching blank node IDs. Chop PREFIX from matching blank node IDs.


.TP
\fB\-e\fR
Eat input one character at a time, rather than a page at a time which is the
default. This is useful when reading from a pipe since output will be
generated immediately as input arrives, rather than waiting until an entire
page of input has arrived. With this option serdi uses one page less memory,
but will likely be significantly slower.

.TP .TP
\fB\-f\fR \fB\-f\fR
Keep full URIs in input (don't qualify). Keep full URIs in input (don't qualify).

c++/carla-lilv/lilv-0.14.2/doc/style.css → c++/carla-lilv/serd-0.18.0/doc/style.css View File

@@ -1,24 +1,24 @@
body { body {
font-size: 100%;
font-size: medium;
font-family: sans-serif; font-family: sans-serif;
} }


#top { #top {
background-color: #F3F3F3; background-color: #F3F3F3;
margin: 0; margin: 0;
padding: 0;
padding: 0;
border-bottom: 1px solid #DDD; border-bottom: 1px solid #DDD;
margin-bottom: 1ex;
font-size: 180%;
font-weight: bold;
margin-bottom: 1ex;
font-size: xx-large;
font-weight: bold;
} }


div.header { div.header {
display: none;
display: none;
} }


.tabs { .tabs {
display: none;
display: none;
} }


h1 h2 h3 h4 h5 h6 { h1 h2 h3 h4 h5 h6 {
@@ -113,33 +113,24 @@ div.navtab {


/* @group Link Styling */ /* @group Link Styling */
a { a {
color: #3D578C;
color: #3D8C57;
text-decoration: none; text-decoration: none;
} }


.contents a:visited { .contents a:visited {
color: #4665A2;
color: #50755E;
} }


a:hover { a:hover {
text-decoration: underline; text-decoration: underline;
} }


a.qindex {
}

a.qindexHL { a.qindexHL {
background-color: #9CAFD4; background-color: #9CAFD4;
color: #FFF; color: #FFF;
border: 1px double #869DCA; border: 1px double #869DCA;
} }


a.el {
}

a.elRef {
}

a.code { a.code {
color: #4665A2; color: #4665A2;
} }
@@ -245,7 +236,7 @@ div.center img {


address.footer { address.footer {
text-align: right; text-align: right;
padding-right: 12px;
padding: 0 0.25em 0.25em 0;
} }


img.footer { img.footer {
@@ -324,7 +315,7 @@ hr.footer {
/* @group Member Descriptions */ /* @group Member Descriptions */
table.memberdecls { table.memberdecls {
border-spacing: 0; border-spacing: 0;
font-size: 94%;
font-size: small;
} }


.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams { .mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams {
@@ -338,7 +329,7 @@ table.memberdecls {
} }


.memItemLeft,.memItemRight,.memTemplParams { .memItemLeft,.memItemRight,.memTemplParams {
border-top: 1px solid #EEE;
border-top: 1px solid #DDD;
} }


.memItemLeft,.memTemplItemLeft { .memItemLeft,.memTemplItemLeft {
@@ -372,6 +363,7 @@ table.memberdecls {
.memitem { .memitem {
padding: 0; padding: 0;
margin: 1ex 0 2ex 0; margin: 1ex 0 2ex 0;
border: 1px solid #CCC;
} }


.memname { .memname {
@@ -380,9 +372,8 @@ table.memberdecls {
} }


.memproto { .memproto {
border-top: 1px solid #DDD;
border-bottom: 1px solid #DDD;
padding: 0.5ex; padding: 0.5ex;
color: #253555;
font-weight: bold; font-weight: bold;
background-color: #F3F3F3; background-color: #F3F3F3;
} }
@@ -567,6 +558,6 @@ div.header {


div.headertitle { div.headertitle {
padding: 5px 5px 5px 10px; padding: 5px 5px 5px 10px;
font-size: 180%;
font-weight: bold;
font-size: 180%;
font-weight: bold;
} }

c++/carla-lilv/serd-0.14.0/serd.pc.in → c++/carla-lilv/serd-0.18.0/serd.pc.in View File


c++/carla-lilv/serd-0.14.0/serd/serd.h → c++/carla-lilv/serd-0.18.0/serd/serd.h View File

@@ -21,6 +21,7 @@
#ifndef SERD_SERD_H #ifndef SERD_SERD_H
#define SERD_SERD_H #define SERD_SERD_H


#include <stdarg.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
@@ -89,7 +90,10 @@ typedef enum {
SERD_ERR_UNKNOWN, /**< Unknown error */ SERD_ERR_UNKNOWN, /**< Unknown error */
SERD_ERR_BAD_SYNTAX, /**< Invalid syntax */ SERD_ERR_BAD_SYNTAX, /**< Invalid syntax */
SERD_ERR_BAD_ARG, /**< Invalid argument */ SERD_ERR_BAD_ARG, /**< Invalid argument */
SERD_ERR_NOT_FOUND /**< Not found */
SERD_ERR_NOT_FOUND, /**< Not found */
SERD_ERR_ID_CLASH, /**< Encountered clashing blank node IDs */
SERD_ERR_BAD_CURIE, /**< Invalid CURIE (e.g. prefix does not exist) */
SERD_ERR_INTERNAL /**< Unexpected internal error (should not happen) */
} SerdStatus; } SerdStatus;


/** /**
@@ -215,6 +219,18 @@ typedef struct {
size_t len; /**< Length of chunk in bytes */ size_t len; /**< Length of chunk in bytes */
} SerdChunk; } SerdChunk;


/**
An error description.
*/
typedef struct {
SerdStatus status; /**< Error code */
const uint8_t* filename; /**< File where error was encountered, or NULL */
unsigned line; /**< Line where error was encountered, or 0 */
unsigned col; /**< Column where error was encountered */
const char* fmt; /**< Message format string (printf style) */
va_list* args; /**< Arguments for fmt */
} SerdError;

/** /**
A parsed URI. A parsed URI.


@@ -512,6 +528,15 @@ serd_node_free(SerdNode* node);
@{ @{
*/ */


/**
Sink (callback) for errors.

@param handle Handle for user data.
@param error Error description.
*/
typedef SerdStatus (*SerdErrorSink)(void* handle,
const SerdError* error);

/** /**
Sink (callback) for base URI changes. Sink (callback) for base URI changes.


@@ -663,6 +688,18 @@ serd_reader_new(SerdSyntax syntax,
SerdStatementSink statement_sink, SerdStatementSink statement_sink,
SerdEndSink end_sink); SerdEndSink end_sink);


/**
Set a function to be called when errors occur during reading.

The @p error_sink will be called with @p handle as its first argument. If
no error function is set, errors are printed to stderr in GCC style.
*/
SERD_API
void
serd_reader_set_error_sink(SerdReader* reader,
SerdErrorSink error_sink,
void* handle);

/** /**
Return the @c handle passed to @ref serd_reader_new. Return the @c handle passed to @ref serd_reader_new.
*/ */
@@ -704,6 +741,40 @@ SerdStatus
serd_reader_read_file(SerdReader* reader, serd_reader_read_file(SerdReader* reader,
const uint8_t* uri); const uint8_t* uri);


/**
Start an incremental read from a file handle.

Iff @p bulk is true, @p file will be read a page at a time. This is more
efficient, but uses a page of memory and means that an entire page of input
must be ready before any callbacks will fire. To react as soon as input
arrives, set @p bulk to false.
*/
SERD_API
SerdStatus
serd_reader_start_stream(SerdReader* me,
FILE* file,
const uint8_t* name,
bool bulk);

/**
Read a single "chunk" of data during an incremental read.

This function will read a single top level description, and return. This
may be a directive, statement, or several statements; essentially it reads
until a '.' is encountered. This is particularly useful for reading
directly from a pipe or socket.
*/
SERD_API
SerdStatus
serd_reader_read_chunk(SerdReader* me);

/**
Finish an incremental read from a file handle.
*/
SERD_API
SerdStatus
serd_reader_end_stream(SerdReader* me);

/** /**
Read @c file. Read @c file.
*/ */
@@ -791,6 +862,18 @@ SERD_API
uint8_t* uint8_t*
serd_chunk_sink_finish(SerdChunk* stream); serd_chunk_sink_finish(SerdChunk* stream);


/**
Set a function to be called when errors occur during writing.

The @p error_sink will be called with @p handle as its first argument. If
no error function is set, errors are printed to stderr.
*/
SERD_API
void
serd_writer_set_error_sink(SerdWriter* writer,
SerdErrorSink error_sink,
void* handle);

/** /**
Set a prefix to be removed from matching blank node identifiers. Set a prefix to be removed from matching blank node identifiers.
*/ */

c++/carla-lilv/serd-0.14.0/src/env.c → c++/carla-lilv/serd-0.18.0/src/env.c View File

@@ -217,7 +217,7 @@ serd_env_expand(const SerdEnv* env,
const uint8_t* const colon = (const uint8_t*)memchr( const uint8_t* const colon = (const uint8_t*)memchr(
qname->buf, ':', qname->n_bytes + 1); qname->buf, ':', qname->n_bytes + 1);
if (!colon) { if (!colon) {
return SERD_ERR_BAD_ARG; // Illegal qname
return SERD_ERR_BAD_ARG; // Invalid qname
} }


const size_t name_len = colon - qname->buf; const size_t name_len = colon - qname->buf;
@@ -245,10 +245,9 @@ serd_env_expand_node(const SerdEnv* env,
return SERD_NODE_NULL; return SERD_NODE_NULL;
} }
const size_t len = prefix.len + suffix.len; // FIXME: UTF-8? const size_t len = prefix.len + suffix.len; // FIXME: UTF-8?
SerdNode ret = { NULL, len, len, 0, SERD_URI };
ret.buf = (uint8_t*)malloc(ret.n_bytes + 1);
snprintf((char*)ret.buf, ret.n_bytes + 1,
"%s%s", prefix.buf, suffix.buf);
uint8_t* buf = (uint8_t*)malloc(len + 1);
SerdNode ret = { buf, len, len, 0, SERD_URI };
snprintf((char*)buf, ret.n_bytes + 1, "%s%s", prefix.buf, suffix.buf);
return ret; return ret;
} }
case SERD_URI: { case SERD_URI: {

c++/carla-lilv/serd-0.14.0/src/node.c → c++/carla-lilv/serd-0.18.0/src/node.c View File

@@ -165,9 +165,9 @@ serd_node_new_file_uri(const uint8_t* path,
} else if (!escape || is_uri_path_char(path[i])) { } else if (!escape || is_uri_path_char(path[i])) {
serd_chunk_sink(path + i, 1, &chunk); serd_chunk_sink(path + i, 1, &chunk);
} else { } else {
char escape[4] = { '%', 0, 0, 0 };
snprintf(escape + 1, sizeof(escape) - 1, "%X", path[i]);
serd_chunk_sink(escape, 3, &chunk);
char escape_str[4] = { '%', 0, 0, 0 };
snprintf(escape_str + 1, sizeof(escape_str) - 1, "%X", path[i]);
serd_chunk_sink(escape_str, 3, &chunk);
} }
} }
serd_chunk_sink_finish(&chunk); serd_chunk_sink_finish(&chunk);
@@ -310,19 +310,19 @@ SerdNode
serd_node_new_blob(const void* buf, size_t size, bool wrap_lines) serd_node_new_blob(const void* buf, size_t size, bool wrap_lines)
{ {
const size_t len = ((size + 2) / 3) * 4 + (wrap_lines ? (size / 57) : 0); const size_t len = ((size + 2) / 3) * 4 + (wrap_lines ? (size / 57) : 0);
SerdNode node = { (uint8_t*)calloc(1, len + 2),
len, len, 0, SERD_LITERAL };
uint8_t* str = (uint8_t*)calloc(1, len + 2);
SerdNode node = { str, len, len, 0, SERD_LITERAL };
for (size_t i = 0, j = 0; i < size; i += 3, j += 4) { for (size_t i = 0, j = 0; i < size; i += 3, j += 4) {
uint8_t in[4] = { 0, 0, 0, 0 }; uint8_t in[4] = { 0, 0, 0, 0 };
size_t n_in = MIN(3, size - i); size_t n_in = MIN(3, size - i);
memcpy(in, (const uint8_t*)buf + i, n_in); memcpy(in, (const uint8_t*)buf + i, n_in);


if (wrap_lines && i > 0 && (i % 57) == 0) { if (wrap_lines && i > 0 && (i % 57) == 0) {
((uint8_t*)node.buf)[j++] = '\n';
str[j++] = '\n';
node.flags |= SERD_HAS_NEWLINE; node.flags |= SERD_HAS_NEWLINE;
} }


encode_chunk((uint8_t*)node.buf + j, in, n_in);
encode_chunk(str + j, in, n_in);
} }
return node; return node;
} }

c++/carla-lilv/serd-0.14.0/src/reader.c → c++/carla-lilv/serd-0.18.0/src/reader.c View File

@@ -64,6 +64,8 @@ struct SerdReaderImpl {
SerdPrefixSink prefix_sink; SerdPrefixSink prefix_sink;
SerdStatementSink statement_sink; SerdStatementSink statement_sink;
SerdEndSink end_sink; SerdEndSink end_sink;
SerdErrorSink error_sink;
void* error_handle;
Ref rdf_first; Ref rdf_first;
Ref rdf_rest; Ref rdf_rest;
Ref rdf_nil; Ref rdf_nil;
@@ -78,7 +80,9 @@ struct SerdReaderImpl {
unsigned next_id; unsigned next_id;
uint8_t* read_buf; uint8_t* read_buf;
int32_t read_head; ///< Offset into read_buf int32_t read_head; ///< Offset into read_buf
uint8_t read_byte; ///< 1-byte 'buffer' used when not paging
bool from_file; ///< True iff reading from @ref fd bool from_file; ///< True iff reading from @ref fd
bool paging; ///< True iff reading a page at a time
bool eof; bool eof;
bool seen_genid; bool seen_genid;
#ifdef SERD_STACK_CHECK #ifdef SERD_STACK_CHECK
@@ -88,13 +92,14 @@ struct SerdReaderImpl {
}; };


static int static int
error(SerdReader* reader, const char* fmt, ...)
error(SerdReader* reader, SerdStatus st, const char* fmt, ...)
{ {
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
fprintf(stderr, "error: %s:%u:%u: ",
reader->cur.filename, reader->cur.line, reader->cur.col);
vfprintf(stderr, fmt, args);
const SerdError e = {
st, reader->cur.filename, reader->cur.line, reader->cur.col, fmt, &args
};
serd_error(reader->error_sink, reader->error_handle, &e);
va_end(args); va_end(args);
return 0; return 0;
} }
@@ -124,14 +129,19 @@ static inline uint8_t
eat_byte_safe(SerdReader* reader, const uint8_t byte) eat_byte_safe(SerdReader* reader, const uint8_t byte)
{ {
assert(peek_byte(reader) == byte); assert(peek_byte(reader) == byte);
++reader->read_head;
switch (byte) { switch (byte) {
case '\0': reader->eof = true; break; case '\0': reader->eof = true; break;
case '\n': ++reader->cur.line; reader->cur.col = 0; break; case '\n': ++reader->cur.line; reader->cur.col = 0; break;
default: ++reader->cur.col; default: ++reader->cur.col;
} }


if (reader->from_file && (reader->read_head == SERD_PAGE_SIZE)) {
if (reader->from_file && !reader->paging) {
const int c = fgetc(reader->fd);
reader->read_byte = (c == EOF) ? 0 : (uint8_t)c;
if (c == EOF) {
reader->eof = true;
}
} else if (++reader->read_head == SERD_PAGE_SIZE && reader->paging) {
page(reader); page(reader);
} }
return byte; return byte;
@@ -142,7 +152,8 @@ eat_byte_check(SerdReader* reader, const uint8_t byte)
{ {
const uint8_t c = peek_byte(reader); const uint8_t c = peek_byte(reader);
if (c != byte) { if (c != byte) {
return error(reader, "expected `%c', not `%c'\n", byte, c);
return error(reader, SERD_ERR_BAD_SYNTAX,
"expected `%c', not `%c'\n", byte, c);
} }
return eat_byte_safe(reader, byte); return eat_byte_safe(reader, byte);
} }
@@ -264,7 +275,8 @@ read_hex(SerdReader* reader)
if (in_range(c, 0x30, 0x39) || in_range(c, 0x41, 0x46)) { if (in_range(c, 0x30, 0x39) || in_range(c, 0x41, 0x46)) {
return eat_byte_safe(reader, c); return eat_byte_safe(reader, c);
} else { } else {
return error(reader, "illegal hexadecimal digit `%c'\n", c);
return error(reader, SERD_ERR_BAD_SYNTAX,
"invalid hexadecimal digit `%c'\n", c);
} }
} }


@@ -291,7 +303,8 @@ read_hex_escape(SerdReader* reader, unsigned length, Ref dest)
} else if (c < 0x00110000) { } else if (c < 0x00110000) {
size = 4; size = 4;
} else { } else {
error(reader, "unicode character 0x%X out of range\n", c);
error(reader, SERD_ERR_BAD_SYNTAX,
"unicode character 0x%X out of range\n", c);
push_replacement(reader, dest); push_replacement(reader, dest);
return true; return true;
} }
@@ -391,20 +404,20 @@ read_ucharacter_escape(SerdReader* reader, Ref dest)
static inline SerdStatus static inline SerdStatus
bad_char(SerdReader* reader, Ref dest, const char* fmt, uint8_t c) bad_char(SerdReader* reader, Ref dest, const char* fmt, uint8_t c)
{ {
error(reader, fmt, c);
error(reader, SERD_ERR_BAD_SYNTAX, fmt, c);
push_replacement(reader, dest); push_replacement(reader, dest);


// Skip bytes until the next start byte // Skip bytes until the next start byte
for (uint8_t c = peek_byte(reader); (c & 0x80);) {
eat_byte_safe(reader, c);
c = peek_byte(reader);
for (uint8_t b = peek_byte(reader); (b & 0x80);) {
eat_byte_safe(reader, b);
b = peek_byte(reader);
} }


return SERD_SUCCESS; return SERD_SUCCESS;
} }


static SerdStatus static SerdStatus
read_utf8_character(SerdReader* reader, Ref dest, const uint8_t c)
read_utf8_character(SerdReader* reader, Ref dest, uint8_t c)
{ {
unsigned size = 1; unsigned size = 1;
if ((c & 0xE0) == 0xC0) { // Starts with `110' if ((c & 0xE0) == 0xC0) { // Starts with `110'
@@ -447,7 +460,7 @@ read_character(SerdReader* reader, Ref dest)
const uint8_t c = peek_byte(reader); const uint8_t c = peek_byte(reader);
assert(c != '\\'); // Only called from methods that handle escapes first assert(c != '\\'); // Only called from methods that handle escapes first
if (c == '\0') { if (c == '\0') {
error(reader, "unexpected end of file\n", c);
error(reader, SERD_ERR_BAD_SYNTAX, "unexpected end of input\n", c);
return SERD_ERR_BAD_SYNTAX; return SERD_ERR_BAD_SYNTAX;
} else if (c < 0x20) { } else if (c < 0x20) {
return bad_char(reader, dest, return bad_char(reader, dest,
@@ -486,7 +499,8 @@ read_lcharacter(SerdReader* reader, Ref dest, SerdNodeFlags* flags)
if (read_scharacter_escape(reader, dest, flags)) { if (read_scharacter_escape(reader, dest, flags)) {
return SERD_SUCCESS; return SERD_SUCCESS;
} else { } else {
error(reader, "illegal escape `\\%c'\n", peek_byte(reader));
error(reader, SERD_ERR_BAD_SYNTAX,
"invalid escape `\\%c'\n", peek_byte(reader));
return SERD_ERR_BAD_SYNTAX; return SERD_ERR_BAD_SYNTAX;
} }
case 0xA: case 0xD: case 0xA: case 0xD:
@@ -510,7 +524,8 @@ read_scharacter(SerdReader* reader, Ref dest, SerdNodeFlags* flags)
if (read_scharacter_escape(reader, dest, flags)) { if (read_scharacter_escape(reader, dest, flags)) {
return SERD_SUCCESS; return SERD_SUCCESS;
} else { } else {
error(reader, "illegal escape `\\%c'\n", peek_byte(reader));
error(reader, SERD_ERR_BAD_SYNTAX,
"invalid escape `\\%c'\n", peek_byte(reader));
return SERD_ERR_BAD_SYNTAX; return SERD_ERR_BAD_SYNTAX;
} }
case '\"': case '\"':
@@ -532,7 +547,8 @@ read_ucharacter(SerdReader* reader, Ref dest)
if (read_ucharacter_escape(reader, dest)) { if (read_ucharacter_escape(reader, dest)) {
return SERD_SUCCESS; return SERD_SUCCESS;
} else { } else {
error(reader, "illegal escape `\\%c'\n", peek_byte(reader));
error(reader, SERD_ERR_BAD_SYNTAX,
"invalid escape `\\%c'\n", peek_byte(reader));
return SERD_FAILURE; return SERD_FAILURE;
} }
case '>': case '>':
@@ -548,7 +564,7 @@ read_comment(SerdReader* reader)
{ {
eat_byte_safe(reader, '#'); eat_byte_safe(reader, '#');
uint8_t c; uint8_t c;
while (((c = peek_byte(reader)) != 0xA) && (c != 0xD)) {
while (((c = peek_byte(reader)) != 0xA) && (c != 0xD) && c) {
eat_byte_safe(reader, c); eat_byte_safe(reader, c);
} }
} }
@@ -669,7 +685,7 @@ static inline uchar
read_nameStartChar(SerdReader* reader) read_nameStartChar(SerdReader* reader)
{ {
const uint8_t c = peek_byte(reader); const uint8_t c = peek_byte(reader);
if (c == '_' || is_alpha(c)) { // TODO: not strictly correct
if (c == '_' || is_alpha(c) || is_digit(c)) { // TODO: Not correct
return eat_byte_safe(reader, c); return eat_byte_safe(reader, c);
} }
return 0; return 0;
@@ -700,7 +716,7 @@ read_prefixName(SerdReader* reader, Ref dest)
{ {
uint8_t c = peek_byte(reader); uint8_t c = peek_byte(reader);
if (c == '_') { if (c == '_') {
error(reader, "unexpected `_'\n");
error(reader, SERD_ERR_BAD_SYNTAX, "unexpected `_'\n");
return pop_node(reader, dest); return pop_node(reader, dest);
} }
TRY_RET(c = read_nameStartChar(reader)); TRY_RET(c = read_nameStartChar(reader));
@@ -734,7 +750,7 @@ read_language(SerdReader* reader)
{ {
uint8_t c = peek_byte(reader); uint8_t c = peek_byte(reader);
if (!in_range(c, 'a', 'z')) { if (!in_range(c, 'a', 'z')) {
return error(reader, "unexpected `%c'\n", c);
return error(reader, SERD_ERR_BAD_SYNTAX, "unexpected `%c'\n", c);
} }
Ref ref = push_node(reader, SERD_LITERAL, "", 0); Ref ref = push_node(reader, SERD_LITERAL, "", 0);
push_byte(reader, ref, eat_byte_safe(reader, c)); push_byte(reader, ref, eat_byte_safe(reader, c));
@@ -788,7 +804,7 @@ read_0_9(SerdReader* reader, Ref str, bool at_least_one)
uint8_t c; uint8_t c;
if (at_least_one) { if (at_least_one) {
if (!is_digit((c = peek_byte(reader)))) { if (!is_digit((c = peek_byte(reader)))) {
return error(reader, "expected digit\n");
return error(reader, SERD_ERR_BAD_SYNTAX, "expected digit\n");
} }
push_byte(reader, str, eat_byte_safe(reader, c)); push_byte(reader, str, eat_byte_safe(reader, c));
} }
@@ -901,7 +917,7 @@ except:
} }


inline static bool inline static bool
is_token_end(const uint8_t c)
is_token_end(uint8_t c)
{ {
switch (c) { switch (c) {
case 0x9: case 0xA: case 0xD: case 0x20: case '\0': case 0x9: case 0xA: case 0xD: case 0x20: case '\0':
@@ -950,7 +966,8 @@ read_nodeID(SerdReader* reader)
reader->bprefix ? (char*)reader->bprefix : "", reader->bprefix ? (char*)reader->bprefix : "",
reader->bprefix_len); reader->bprefix_len);
if (!read_name(reader, ref)) { if (!read_name(reader, ref)) {
return error(reader, "illegal character at start of name\n");
return error(reader, SERD_ERR_BAD_SYNTAX,
"invalid character at start of name\n");
} }
if (reader->syntax == SERD_TURTLE) { if (reader->syntax == SERD_TURTLE) {
const char* const buf = (const char*)deref(reader, ref)->buf; const char* const buf = (const char*)deref(reader, ref)->buf;
@@ -958,8 +975,8 @@ read_nodeID(SerdReader* reader)
memcpy((char*)buf, "docid", 5); // Prevent clash memcpy((char*)buf, "docid", 5); // Prevent clash
reader->seen_genid = true; reader->seen_genid = true;
} else if (reader->seen_genid && !strncmp(buf, "docid", 5)) { } else if (reader->seen_genid && !strncmp(buf, "docid", 5)) {
error(reader, "found both `genid' and `docid' blank IDs\n");
error(reader, "resolve this with a blank ID prefix\n");
error(reader, SERD_ERR_ID_CLASH,
"found both `genid' and `docid' IDs, prefix required\n");
return pop_node(reader, ref); return pop_node(reader, ref);
} }
} }
@@ -1032,7 +1049,7 @@ read_blank(SerdReader* reader, ReadContext ctx, bool subject, Ref* dest)
case '(': case '(':
return read_collection(reader, ctx, dest); return read_collection(reader, ctx, dest);
default: default:
return error(reader, "illegal blank node\n");
return error(reader, SERD_ERR_BAD_SYNTAX, "invalid blank node\n");
} }
} }


@@ -1304,7 +1321,7 @@ read_directive(SerdReader* reader)
switch (peek_byte(reader)) { switch (peek_byte(reader)) {
case 'b': return read_base(reader); case 'b': return read_base(reader);
case 'p': return read_prefixID(reader); case 'p': return read_prefixID(reader);
default: return error(reader, "illegal directive\n");
default: return error(reader, SERD_ERR_BAD_SYNTAX, "invalid directive\n");
} }
} }


@@ -1359,6 +1376,8 @@ serd_reader_new(SerdSyntax syntax,
me->prefix_sink = prefix_sink; me->prefix_sink = prefix_sink;
me->statement_sink = statement_sink; me->statement_sink = statement_sink;
me->end_sink = end_sink; me->end_sink = end_sink;
me->error_sink = NULL;
me->error_handle = NULL;
me->default_graph = SERD_NODE_NULL; me->default_graph = SERD_NODE_NULL;
me->fd = 0; me->fd = 0;
me->stack = serd_stack_new(SERD_PAGE_SIZE); me->stack = serd_stack_new(SERD_PAGE_SIZE);
@@ -1383,6 +1402,16 @@ serd_reader_new(SerdSyntax syntax,
return me; return me;
} }


SERD_API
void
serd_reader_set_error_sink(SerdReader* reader,
SerdErrorSink error_sink,
void* error_handle)
{
reader->error_sink = error_sink;
reader->error_handle = error_handle;
}

SERD_API SERD_API
void void
serd_reader_free(SerdReader* reader) serd_reader_free(SerdReader* reader)
@@ -1458,14 +1487,17 @@ static void
skip_bom(SerdReader* me) skip_bom(SerdReader* me)
{ {
const uint8_t* const b = me->read_buf; const uint8_t* const b = me->read_buf;
if (b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF) {
if (me->paging && b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF) {
me->read_head += 3; me->read_head += 3;
} }
} }


SERD_API SERD_API
SerdStatus SerdStatus
serd_reader_read_file_handle(SerdReader* me, FILE* file, const uint8_t* name)
serd_reader_start_stream(SerdReader* me,
FILE* file,
const uint8_t* name,
bool bulk)
{ {
const Cursor cur = { name, 1, 1 }; const Cursor cur = { name, 1, 1 };
me->fd = file; me->fd = file;
@@ -1473,19 +1505,62 @@ serd_reader_read_file_handle(SerdReader* me, FILE* file, const uint8_t* name)
me->cur = cur; me->cur = cur;
me->from_file = true; me->from_file = true;
me->eof = false; me->eof = false;
me->read_buf = (uint8_t*)serd_bufalloc(SERD_PAGE_SIZE);
me->paging = bulk;

if (bulk) {
me->read_buf = (uint8_t*)serd_bufalloc(SERD_PAGE_SIZE);
memset(me->read_buf, '\0', SERD_PAGE_SIZE);
SerdStatus st = page(me);
if (st) {
serd_reader_end_stream(me);
return st;
}
skip_bom(me);
} else {
me->read_buf = &me->read_byte;
me->read_byte = 0; // Don't read to avoid potentially blocking
}


memset(me->read_buf, '\0', SERD_PAGE_SIZE);
return SERD_SUCCESS;
}


SerdStatus st = page(me);
if (!st) {
skip_bom(me);
st = read_turtleDoc(me) ? SERD_SUCCESS : SERD_ERR_UNKNOWN;
SERD_API
SerdStatus
serd_reader_read_chunk(SerdReader* me)
{
if (!me->read_byte) {
// Read initial byte
const int c = fgetc(me->fd);
me->read_byte = (c == EOF) ? 0 : (uint8_t)c;
if (c == EOF) {
me->eof = true;
return SERD_FAILURE;
}
} }
return read_statement(me) ? SERD_SUCCESS : SERD_FAILURE;
}


free(me->read_buf);
SERD_API
SerdStatus
serd_reader_end_stream(SerdReader* me)
{
if (me->paging) {
free(me->read_buf);
}
me->fd = 0; me->fd = 0;
me->read_buf = NULL; me->read_buf = NULL;
return SERD_SUCCESS;
}

SERD_API
SerdStatus
serd_reader_read_file_handle(SerdReader* me, FILE* file, const uint8_t* name)
{
SerdStatus st = serd_reader_start_stream(me, file, name, true);
if (!st) {
st = read_turtleDoc(me) ? SERD_SUCCESS : SERD_ERR_UNKNOWN;
serd_reader_end_stream(me);
}
return st; return st;
} }


@@ -1499,6 +1574,7 @@ serd_reader_read_string(SerdReader* me, const uint8_t* utf8)
me->read_head = 0; me->read_head = 0;
me->cur = cur; me->cur = cur;
me->from_file = false; me->from_file = false;
me->paging = false;
me->eof = false; me->eof = false;


skip_bom(me); skip_bom(me);

c++/carla-lilv/serd-0.14.0/src/serd_internal.h → c++/carla-lilv/serd-0.18.0/src/serd_internal.h View File

@@ -181,7 +181,7 @@ serd_bulk_sink_write(const void* buf, size_t len, SerdBulkSink* bsink)
// Write as much as possible into the remaining buffer space // Write as much as possible into the remaining buffer space
memcpy(bsink->buf + bsink->size, buf, n); memcpy(bsink->buf + bsink->size, buf, n);
bsink->size += n; bsink->size += n;
buf = (uint8_t*)buf + n;
buf = (const uint8_t*)buf + n;
len -= n; len -= n;


// Flush page if buffer is full // Flush page if buffer is full
@@ -290,4 +290,17 @@ uri_is_under(const SerdURI* uri, const SerdURI* root)
return true; return true;
} }


/* Error reporting */

static inline void
serd_error(SerdErrorSink error_sink, void* handle, const SerdError* e)
{
if (error_sink) {
error_sink(handle, e);
} else {
fprintf(stderr, "error: %s:%u:%u: ", e->filename, e->line, e->col);
vfprintf(stderr, e->fmt, *e->args);
}
}

#endif // SERD_INTERNAL_H #endif // SERD_INTERNAL_H

c++/carla-lilv/serd-0.14.0/src/serdi.c → c++/carla-lilv/serd-0.18.0/src/serdi.c View File

@@ -27,7 +27,7 @@ typedef struct {
} State; } State;


static int static int
print_version()
print_version(void)
{ {
printf("serdi " SERD_VERSION " <http://drobilla.net/software/serd>\n"); printf("serdi " SERD_VERSION " <http://drobilla.net/software/serd>\n");
printf("Copyright 2011-2012 David Robillard <http://drobilla.net>.\n" printf("Copyright 2011-2012 David Robillard <http://drobilla.net>.\n"
@@ -46,11 +46,13 @@ print_usage(const char* name, bool error)
fprintf(os, "Use - for INPUT to read from standard input.\n\n"); fprintf(os, "Use - for INPUT to read from standard input.\n\n");
fprintf(os, " -b Fast bulk output for large serialisations.\n"); fprintf(os, " -b Fast bulk output for large serialisations.\n");
fprintf(os, " -c PREFIX Chop PREFIX from matching blank node IDs.\n"); fprintf(os, " -c PREFIX Chop PREFIX from matching blank node IDs.\n");
fprintf(os, " -e Eat input one character at a time.\n");
fprintf(os, " -f Keep full URIs in input (don't qualify).\n"); fprintf(os, " -f Keep full URIs in input (don't qualify).\n");
fprintf(os, " -h Display this help and exit.\n"); fprintf(os, " -h Display this help and exit.\n");
fprintf(os, " -i SYNTAX Input syntax (`turtle' or `ntriples').\n"); fprintf(os, " -i SYNTAX Input syntax (`turtle' or `ntriples').\n");
fprintf(os, " -o SYNTAX Output syntax (`turtle' or `ntriples').\n"); fprintf(os, " -o SYNTAX Output syntax (`turtle' or `ntriples').\n");
fprintf(os, " -p PREFIX Add PREFIX to blank node IDs.\n"); fprintf(os, " -p PREFIX Add PREFIX to blank node IDs.\n");
fprintf(os, " -q Suppress all output except data.\n");
fprintf(os, " -r ROOT_URI Keep relative URIs within ROOT_URI.\n"); fprintf(os, " -r ROOT_URI Keep relative URIs within ROOT_URI.\n");
fprintf(os, " -s INPUT Parse INPUT as string (terminates options).\n"); fprintf(os, " -s INPUT Parse INPUT as string (terminates options).\n");
fprintf(os, " -v Display version information and exit.\n"); fprintf(os, " -v Display version information and exit.\n");
@@ -78,6 +80,12 @@ bad_arg(const char* name, char opt)
return 1; return 1;
} }


static SerdStatus
quiet_error_sink(void* handle, const SerdError* e)
{
return SERD_SUCCESS;
}

int int
main(int argc, char** argv) main(int argc, char** argv)
{ {
@@ -89,8 +97,10 @@ main(int argc, char** argv)
SerdSyntax input_syntax = SERD_TURTLE; SerdSyntax input_syntax = SERD_TURTLE;
SerdSyntax output_syntax = SERD_NTRIPLES; SerdSyntax output_syntax = SERD_NTRIPLES;
bool from_file = true; bool from_file = true;
bool bulk_read = true;
bool bulk_write = false; bool bulk_write = false;
bool full_uris = false; bool full_uris = false;
bool quiet = false;
const uint8_t* in_name = NULL; const uint8_t* in_name = NULL;
const uint8_t* add_prefix = NULL; const uint8_t* add_prefix = NULL;
const uint8_t* chop_prefix = NULL; const uint8_t* chop_prefix = NULL;
@@ -103,10 +113,14 @@ main(int argc, char** argv)
break; break;
} else if (argv[a][1] == 'b') { } else if (argv[a][1] == 'b') {
bulk_write = true; bulk_write = true;
} else if (argv[a][1] == 'e') {
bulk_read = false;
} else if (argv[a][1] == 'f') { } else if (argv[a][1] == 'f') {
full_uris = true; full_uris = true;
} else if (argv[a][1] == 'h') { } else if (argv[a][1] == 'h') {
return print_usage(argv[0], false); return print_usage(argv[0], false);
} else if (argv[a][1] == 'q') {
quiet = true;
} else if (argv[a][1] == 'v') { } else if (argv[a][1] == 'v') {
return print_version(); return print_version();
} else if (argv[a][1] == 's') { } else if (argv[a][1] == 's') {
@@ -201,14 +215,28 @@ main(int argc, char** argv)
(SerdStatementSink)serd_writer_write_statement, (SerdStatementSink)serd_writer_write_statement,
(SerdEndSink)serd_writer_end_anon); (SerdEndSink)serd_writer_end_anon);


if (quiet) {
serd_reader_set_error_sink(reader, quiet_error_sink, NULL);
serd_writer_set_error_sink(writer, quiet_error_sink, NULL);
}

SerdNode root = serd_node_from_string(SERD_URI, root_uri); SerdNode root = serd_node_from_string(SERD_URI, root_uri);
serd_writer_set_root_uri(writer, &root); serd_writer_set_root_uri(writer, &root);
serd_writer_chop_blank_prefix(writer, chop_prefix); serd_writer_chop_blank_prefix(writer, chop_prefix);
serd_reader_add_blank_prefix(reader, add_prefix); serd_reader_add_blank_prefix(reader, add_prefix);


const SerdStatus status = (from_file)
? serd_reader_read_file_handle(reader, in_fd, in_name)
: serd_reader_read_string(reader, input);
SerdStatus status = SERD_SUCCESS;
if (!from_file) {
status = serd_reader_read_string(reader, input);
} else if (bulk_read) {
status = serd_reader_read_file_handle(reader, in_fd, in_name);
} else {
status = serd_reader_start_stream(reader, in_fd, in_name, false);
while (!status) {
status = serd_reader_read_chunk(reader);
}
serd_reader_end_stream(reader);
}


serd_reader_free(reader); serd_reader_free(reader);



c++/carla-lilv/serd-0.14.0/src/string.c → c++/carla-lilv/serd-0.18.0/src/string.c View File

@@ -29,8 +29,11 @@ serd_strerror(SerdStatus st)
case SERD_ERR_BAD_SYNTAX: return (const uint8_t*)"Invalid syntax"; case SERD_ERR_BAD_SYNTAX: return (const uint8_t*)"Invalid syntax";
case SERD_ERR_BAD_ARG: return (const uint8_t*)"Invalid argument"; case SERD_ERR_BAD_ARG: return (const uint8_t*)"Invalid argument";
case SERD_ERR_NOT_FOUND: return (const uint8_t*)"Not found"; case SERD_ERR_NOT_FOUND: return (const uint8_t*)"Not found";
case SERD_ERR_ID_CLASH: return (const uint8_t*)"Blank node ID clash";
case SERD_ERR_BAD_CURIE: return (const uint8_t*)"Invalid CURIE";
case SERD_ERR_INTERNAL: return (const uint8_t*)"Internal error";
} }
return (const uint8_t*)"Unknown error code"; // never reached
return (const uint8_t*)"Unknown error"; // never reached
} }


SERD_API SERD_API

c++/carla-lilv/serd-0.14.0/src/uri.c → c++/carla-lilv/serd-0.18.0/src/uri.c View File

@@ -446,15 +446,15 @@ write_rel_path(SerdSink sink,


// Find the number of up references ("..") required // Find the number of up references ("..") required
size_t up = 0; size_t up = 0;
for (size_t i = last_shared_sep + 1; i < base_len; ++i) {
if (uri_path_at(base, i) == '/') {
for (size_t s = last_shared_sep + 1; s < base_len; ++s) {
if (uri_path_at(base, s) == '/') {
++up; ++up;
} }
} }


// Write up references // Write up references
size_t len = 0; size_t len = 0;
for (size_t i = 0; i < up; ++i) {
for (size_t u = 0; u < up; ++u) {
len += sink("../", 3, stream); len += sink("../", 3, stream);
} }



c++/carla-lilv/serd-0.14.0/src/writer.c → c++/carla-lilv/serd-0.18.0/src/writer.c View File

@@ -74,24 +74,26 @@ static const SepRule rules[] = {
}; };


struct SerdWriterImpl { struct SerdWriterImpl {
SerdSyntax syntax;
SerdStyle style;
SerdEnv* env;
SerdNode root_node;
SerdURI root_uri;
SerdURI base_uri;
SerdStack anon_stack;
SerdBulkSink bulk_sink;
SerdSink sink;
void* stream;
WriteContext context;
SerdNode list_subj;
unsigned list_depth;
uint8_t* bprefix;
size_t bprefix_len;
unsigned indent;
Sep last_sep;
bool empty;
SerdSyntax syntax;
SerdStyle style;
SerdEnv* env;
SerdNode root_node;
SerdURI root_uri;
SerdURI base_uri;
SerdStack anon_stack;
SerdBulkSink bulk_sink;
SerdSink sink;
void* stream;
SerdErrorSink error_sink;
void* error_handle;
WriteContext context;
SerdNode list_subj;
unsigned list_depth;
uint8_t* bprefix;
size_t bprefix_len;
unsigned indent;
Sep last_sep;
bool empty;
}; };


typedef enum { typedef enum {
@@ -100,6 +102,16 @@ typedef enum {
WRITE_LONG_STRING WRITE_LONG_STRING
} TextContext; } TextContext;


static void
error2(SerdWriter* writer, SerdStatus st, const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
const SerdError e = { st, NULL, 0, 0, fmt, &args };
serd_error(writer->error_sink, writer->error_handle, &e);
va_end(args);
}

static inline WriteContext* static inline WriteContext*
anon_stack_top(SerdWriter* writer) anon_stack_top(SerdWriter* writer)
{ {
@@ -207,10 +219,10 @@ write_text(SerdWriter* writer, TextContext ctx,
size = 4; size = 4;
c = in & 0x07; c = in & 0x07;
} else { } else {
fprintf(stderr, "Invalid UTF-8: %X\n", in);
error2(writer, SERD_ERR_BAD_ARG, "invalid UTF-8: %X\n", in);
const uint8_t replacement_char[] = { 0xEF, 0xBF, 0xBD }; const uint8_t replacement_char[] = { 0xEF, 0xBF, 0xBD };
len += sink(replacement_char, sizeof(replacement_char), writer); len += sink(replacement_char, sizeof(replacement_char), writer);
return 0;
return len;
} }


if (ctx != WRITE_URI && !(writer->style & SERD_STYLE_ASCII)) { if (ctx != WRITE_URI && !(writer->style & SERD_STYLE_ASCII)) {
@@ -352,7 +364,8 @@ write_node(SerdWriter* writer,
switch (writer->syntax) { switch (writer->syntax) {
case SERD_NTRIPLES: case SERD_NTRIPLES:
if (serd_env_expand(writer->env, node, &uri_prefix, &uri_suffix)) { if (serd_env_expand(writer->env, node, &uri_prefix, &uri_suffix)) {
fprintf(stderr, "Undefined namespace prefix `%s'\n", node->buf);
error2(writer, SERD_ERR_BAD_CURIE,
"undefined namespace prefix `%s'\n", node->buf);
return false; return false;
} }
sink("<", 1, writer); sink("<", 1, writer);
@@ -590,7 +603,8 @@ serd_writer_end_anon(SerdWriter* writer,
return SERD_SUCCESS; return SERD_SUCCESS;
} }
if (serd_stack_is_empty(&writer->anon_stack)) { if (serd_stack_is_empty(&writer->anon_stack)) {
fprintf(stderr, "Unexpected end of anonymous node\n");
error2(writer, SERD_ERR_UNKNOWN,
"unexpected end of anonymous node\n");
return SERD_ERR_UNKNOWN; return SERD_ERR_UNKNOWN;
} }
assert(writer->indent > 0); assert(writer->indent > 0);
@@ -617,6 +631,7 @@ serd_writer_finish(SerdWriter* writer)
if (writer->style & SERD_STYLE_BULK) { if (writer->style & SERD_STYLE_BULK) {
serd_bulk_sink_flush(&writer->bulk_sink); serd_bulk_sink_flush(&writer->bulk_sink);
} }
writer->indent = 0;
return reset_context(writer, true); return reset_context(writer, true);
} }


@@ -626,34 +641,46 @@ serd_writer_new(SerdSyntax syntax,
SerdStyle style, SerdStyle style,
SerdEnv* env, SerdEnv* env,
const SerdURI* base_uri, const SerdURI* base_uri,
SerdSink sink,
SerdSink ssink,
void* stream) void* stream)
{ {
const WriteContext context = WRITE_CONTEXT_NULL; const WriteContext context = WRITE_CONTEXT_NULL;
SerdWriter* writer = (SerdWriter*)malloc(sizeof(SerdWriter)); SerdWriter* writer = (SerdWriter*)malloc(sizeof(SerdWriter));
writer->syntax = syntax;
writer->style = style;
writer->env = env;
writer->root_node = SERD_NODE_NULL;
writer->root_uri = SERD_URI_NULL;
writer->base_uri = base_uri ? *base_uri : SERD_URI_NULL;
writer->anon_stack = serd_stack_new(sizeof(WriteContext));
writer->sink = sink;
writer->stream = stream;
writer->context = context;
writer->list_subj = SERD_NODE_NULL;
writer->list_depth = 0;
writer->bprefix = NULL;
writer->bprefix_len = 0;
writer->indent = 0;
writer->last_sep = SEP_NONE;
writer->empty = true;
writer->syntax = syntax;
writer->style = style;
writer->env = env;
writer->root_node = SERD_NODE_NULL;
writer->root_uri = SERD_URI_NULL;
writer->base_uri = base_uri ? *base_uri : SERD_URI_NULL;
writer->anon_stack = serd_stack_new(sizeof(WriteContext));
writer->sink = ssink;
writer->stream = stream;
writer->error_sink = NULL;
writer->error_handle = NULL;
writer->context = context;
writer->list_subj = SERD_NODE_NULL;
writer->list_depth = 0;
writer->bprefix = NULL;
writer->bprefix_len = 0;
writer->indent = 0;
writer->last_sep = SEP_NONE;
writer->empty = true;
if (style & SERD_STYLE_BULK) { if (style & SERD_STYLE_BULK) {
writer->bulk_sink = serd_bulk_sink_new(sink, stream, SERD_PAGE_SIZE);
writer->bulk_sink = serd_bulk_sink_new(ssink, stream, SERD_PAGE_SIZE);
} }
return writer; return writer;
} }


SERD_API
void
serd_writer_set_error_sink(SerdWriter* writer,
SerdErrorSink error_sink,
void* error_handle)
{
writer->error_sink = error_sink;
writer->error_handle = error_handle;
}

SERD_API SERD_API
void void
serd_writer_chop_blank_prefix(SerdWriter* writer, serd_writer_chop_blank_prefix(SerdWriter* writer,

c++/carla-lilv/serd-0.14.0/tests/README.txt → c++/carla-lilv/serd-0.18.0/tests/README.txt View File


c++/carla-lilv/serd-0.14.0/tests/UTF-8.ttl → c++/carla-lilv/serd-0.18.0/tests/UTF-8.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-00.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-00.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-01.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-01.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-02.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-02.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-03.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-03.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-04.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-04.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-05.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-05.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-06.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-06.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-07.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-07.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-08.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-08.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-09.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-09.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-10.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-10.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-11.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-11.ttl View File


c++/carla-lilv/serd-0.14.0/tests/bad-12.ttl → c++/carla-lilv/serd-0.18.0/tests/bad-12.ttl View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save