Commit 46441b1184dfa8553409d493ae6336aabb900d79

Daniel Stone 2012-05-09T20:49:04

Move KcCGST API to internal-only And don't export it. We don't need it for X11 support, let alone anything else. Signed-off-by: Daniel Stone <daniel@fooishbar.org>

diff --git a/include/xkbcommon/xkbcommon.h b/include/xkbcommon/xkbcommon.h
index 70ecb42..d98daf8 100644
--- a/include/xkbcommon/xkbcommon.h
+++ b/include/xkbcommon/xkbcommon.h
@@ -117,19 +117,6 @@ struct xkb_rule_names {
 };
 
 /**
- * Legacy names for the components of an XKB keymap, also known as KcCGST.
- * This is only used in deprecated entrypoints which might be removed or
- * shuffled off to a support library.
- */
-struct xkb_component_names {
-    char *keymap;
-    char *keycodes;
-    char *types;
-    char *compat;
-    char *symbols;
-};
-
-/**
  * Opaque context object; may only be created, accessed, manipulated and
  * destroyed through the xkb_ctx_*() API.
  */
@@ -152,24 +139,6 @@ extern "C" {
 #endif
 
 /*
- * Canonicalises component names by prepending the relevant component from
- * 'old' to the one in 'names' when the latter has a leading '+' or '|', and
- * by replacing a '%' with the relevant component, e.g.:
- *
- * names        old           output
- * ------------------------------------------
- * +bar         foo           foo+bar
- * |quux        baz           baz|quux
- * foo+%|baz    bar           foo+bar|baz
- *
- * If a component in names needs to be modified, the existing value will be
- * free()d, and a new one allocated with malloc().
- */
-void
-xkb_canonicalise_components(struct xkb_component_names *names,
-                            const struct xkb_component_names *old);
-
-/*
  * Returns the name for a keysym as a string; will return unknown Unicode
  * codepoints as "Ua1b2", and other unknown keysyms as "0xabcd1234".
  */
@@ -284,21 +253,6 @@ xkb_map_new_from_names(struct xkb_ctx *ctx,
                        const struct xkb_rule_names *names,
                        enum xkb_map_compile_flags flags);
 
-/**
- * Deprecated entrypoint for legacy users who need to be able to compile
- * XKB keymaps by KcCGST (Keycodes + Compat + Geometry + Symbols + Types)
- * names.
- *
- * You should not use this unless you are the X server.  This entrypoint
- * may well disappear in future releases.  Please, please, don't use it.
- *
- * Geometry will be ignored since xkbcommon does not support it in any way.
- */
-struct xkb_keymap *
-xkb_map_new_from_kccgst(struct xkb_ctx *ctx,
-                        const struct xkb_component_names *kccgst,
-                        enum xkb_map_compile_flags flags);
-
 enum xkb_keymap_format {
     /** The current/classic XKB text format, as generated by xkbcomp -xkb. */
     XKB_KEYMAP_FORMAT_TEXT_V1 = 1,
diff --git a/src/xkb-priv.h b/src/xkb-priv.h
index efeb14c..b76b8c0 100644
--- a/src/xkb-priv.h
+++ b/src/xkb-priv.h
@@ -108,6 +108,17 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #define	XkmKeymapOptional	((XkmTypesMask|XkmGeometryMask)&(~XkmKeymapRequired))
 #define	XkmKeymapLegal		(XkmKeymapRequired|XkmKeymapOptional)
 
+/**
+ * Legacy names for the components of an XKB keymap, also known as KcCGST.
+ */
+struct xkb_component_names {
+    char *keymap;
+    char *keycodes;
+    char *types;
+    char *compat;
+    char *symbols;
+};
+
 struct xkb_any_action {
     uint8_t   type;
     uint8_t   data[7];
@@ -443,6 +454,39 @@ xkb_key_get_syms_by_level(struct xkb_keymap *keymap, xkb_keycode_t key,
                           unsigned int group, unsigned int level,
                           const xkb_keysym_t **syms_out);
 
+/*
+ * Canonicalises component names by prepending the relevant component from
+ * 'old' to the one in 'names' when the latter has a leading '+' or '|', and
+ * by replacing a '%' with the relevant component, e.g.:
+ *
+ * names        old           output
+ * ------------------------------------------
+ * +bar         foo           foo+bar
+ * |quux        baz           baz|quux
+ * foo+%|baz    bar           foo+bar|baz
+ *
+ * If a component in names needs to be modified, the existing value will be
+ * free()d, and a new one allocated with malloc().
+ */
+void
+xkb_canonicalise_components(struct xkb_component_names *names,
+                            const struct xkb_component_names *old);
+
+/**
+ * Deprecated entrypoint for legacy users who need to be able to compile
+ * XKB keymaps by KcCGST (Keycodes + Compat + Geometry + Symbols + Types)
+ * names.
+ *
+ * You should not use this unless you are the X server.  This entrypoint
+ * may well disappear in future releases.  Please, please, don't use it.
+ *
+ * Geometry will be ignored since xkbcommon does not support it in any way.
+ */
+struct xkb_keymap *
+xkb_map_new_from_kccgst(struct xkb_ctx *ctx,
+                        const struct xkb_component_names *kccgst,
+                        enum xkb_map_compile_flags flags);
+
 extern int
 xkb_ctx_take_file_id(struct xkb_ctx *ctx);
 
diff --git a/test/canonicalise.c b/test/canonicalise.c
index f223363..c437345 100644
--- a/test/canonicalise.c
+++ b/test/canonicalise.c
@@ -29,6 +29,7 @@
 #include <stdlib.h>
 
 #include "xkbcommon/xkbcommon.h"
+#include "xkb-priv.h"
 
 struct test_data {
     struct xkb_component_names new;
diff --git a/test/namescomp.c b/test/namescomp.c
index d73018c..58a17fc 100644
--- a/test/namescomp.c
+++ b/test/namescomp.c
@@ -29,6 +29,7 @@ authorization from the authors.
 #include <stdio.h>
 #include <string.h>
 
+#include "xkb-priv.h"
 #include "xkbcommon/xkbcommon.h"
 
 static int