summaryrefslogtreecommitdiff
path: root/table11.c
diff options
context:
space:
mode:
Diffstat (limited to 'table11.c')
-rw-r--r--table11.c53
1 files changed, 52 insertions, 1 deletions
diff --git a/table11.c b/table11.c
index fa0c92a..e141ae1 100644
--- a/table11.c
+++ b/table11.c
@@ -25,7 +25,7 @@
*
*/
/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -315,6 +315,57 @@ DefineValues(TYPE type, long value, short length, short ctype, const char *name)
/* ************************************************************ */
+/* Atoms are defined as a builtin type for the core protocol defined
+ atoms, with atoms passed via InternAtom & GetAtomName added as
+ additional enumerated type values */
+#define NumberofAtoms 68
+
+static const char *const AtomTable[NumberofAtoms + 1] = {
+ "NONE", "PRIMARY", "SECONDARY", "ARC", "ATOM", "BITMAP", "CARDINAL",
+ "COLORMAP", "CURSOR", "CUT_BUFFER0", "CUT_BUFFER1", "CUT_BUFFER2",
+ "CUT_BUFFER3", "CUT_BUFFER4", "CUT_BUFFER5", "CUT_BUFFER6",
+ "CUT_BUFFER7", "DRAWABLE", "FONT", "INTEGER", "PIXMAP", "POINT",
+ "RECTANGLE", "RESOURCE_MANAGER", "RGB_COLOR_MAP", "RGB_BEST_MAP",
+ "RGB_BLUE_MAP", "RGB_DEFAULT_MAP", "RGB_GRAY_MAP", "RGB_GREEN_MAP",
+ "RGB_RED_MAP", "STRING", "VISUALID", "WINDOW", "WM_COMMAND",
+ "WM_HINTS", "WM_CLIENT_MACHINE", "WM_ICON_NAME", "WM_ICON_SIZE",
+ "WM_NAME", "WM_NORMAL_HINTS", "WM_SIZE_HINTS", "WM_ZOOM_HINTS",
+ "MIN_SPACE", "NORM_SPACE", "MAX_SPACE", "END_SPACE", "SUPERSCRIPT_X",
+ "SUPERSCRIPT_Y", "SUBSCRIPT_X", "SUBSCRIPT_Y", "UNDERLINE_POSITION",
+ "UNDERLINE_THICKNESS", "STRIKEOUT_ASCENT", "STRIKEOUT_DESCENT",
+ "ITALIC_ANGLE", "X_HEIGHT", "QUAD_WIDTH", "WEIGHT", "POINT_SIZE",
+ "RESOLUTION", "COPYRIGHT", "NOTICE", "FONT_NAME", "FAMILY_NAME",
+ "FULL_NAME", "CAP_HEIGHT", "WM_CLASS", "WM_TRANSIENT_FOR"
+};
+
+const char *
+FindAtomName(uint32_t atom)
+{
+ struct ValueListEntry *p;
+
+ if (atom <= NumberofAtoms)
+ return AtomTable[atom];
+
+ for (p = TD[ATOM].ValueList; p != NULL; p = p->Next) {
+ if (p->Value == atom)
+ return p->Name;
+ }
+
+ return NULL;
+}
+
+void
+DefineAtom(uint32_t atom, const char *name)
+{
+ if ((atom == 0) || (name == NULL))
+ return;
+
+ if (FindAtomName(atom) == NULL)
+ DefineEValue(&TD[ATOM], atom, strdup(name));
+}
+
+
+/* ************************************************************ */
static void
InitBuiltInTypes(void)