X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fgestalt.c;h=4b3b19c0a3e5af913fdd06b75dea46c78062c0d9;hb=3c7e09ffabd2962b5345c906b4d46757b796a4da;hp=4a586ce1d192cce9b2a470e0b20c2b7b753dfaa1;hpb=2baac1a1aa285bc52da8feb92433144a1e50bcce;p=rodin%2Fchimara.git
diff --git a/src/gestalt.c b/src/gestalt.c
index 4a586ce..4b3b19c 100644
--- a/src/gestalt.c
+++ b/src/gestalt.c
@@ -33,32 +33,31 @@ glk_gestalt(glui32 sel, glui32 val)
* Calls the gestalt system to request information about the capabilities of the
* API. The selector @sel tells which capability you are requesting information
* about; the other three arguments are additional information, which may or may
- * not be meaningful. The @arr and @arrlen arguments are always optional; you
- * may always pass %NULL and 0, if you do not want whatever information they
- * represent. glk_gestalt() is simply a shortcut for this; glk_gestalt(x, y) is
- * exactly the same as glk_gestalt_ext(x, y, NULL, 0).
+ * not be meaningful. The @arr and @arrlen arguments of glk_gestalt_ext() are
+ * always optional; you may always pass %NULL and 0, if you do not want whatever
+ * information they represent. glk_gestalt() is simply a shortcut for this;
+ * #glk_gestalt(x, y)
is exactly the same as
+ * #glk_gestalt_ext(x, y, %NULL, 0)
.
*
* The critical point is that if the Glk library has never heard of the selector
- * sel, it will return 0. It is always safe to call glk_gestalt(x, y) (or
- * glk_gestalt_ext(x, y, NULL, 0)). Even if you are using an old library, which
- * was compiled before the given capability was imagined, you can test for the
- * capability by calling glk_gestalt(); the library will correctly indicate that
- * it does not support it, by returning 0.
+ * @sel, it will return 0. It is always safe to call
+ * #glk_gestalt(x, y)
(or #glk_gestalt_ext(x, y, %NULL,
+ * 0)
). Even if you are using an old library, which was compiled before
+ * the given capability was imagined, you can test for the capability by calling
+ * glk_gestalt(); the library will correctly indicate that it does not support
+ * it, by returning 0.
*
- *
- * It is also safe to call glk_gestalt_ext(x, y, z, zlen) for an unknown
- * selector x, where z is not %NULL, as long as z points at an array of at
- * least zlen elements. The selector will be careful not to write beyond that
- * point in the array, if it writes to the array at all.
- *
+ * (It is also safe to call #glk_gestalt_ext(x, y, z, zlen)
for an
+ * unknown selector x
, where z
is not %NULL, as long
+ * as z
points at an array of at least zlen
elements.
+ * The selector will be careful not to write beyond that point in the array, if
+ * it writes to the array at all.)
*
- *
- * If a selector does not use the second argument, you should always pass 0; do
- * not assume that the second argument is simply ignored. This is because the
- * selector may be extended in the future. You will continue to get the current
- * behavior if you pass 0 as the second argument, but other values may produce
- * other behavior.
- *
+ * (If a selector does not use the second argument, you should always pass 0; do
+ * not assume that the second argument is simply ignored. This is because the
+ * selector may be extended in the future. You will continue to get the current
+ * behavior if you pass 0 as the second argument, but other values may produce
+ * other behavior.)
*
* Returns: an integer, depending on what selector was called.
*/
@@ -71,17 +70,6 @@ glk_gestalt_ext(glui32 sel, glui32 val, glui32 *arr, glui32 arrlen)
case gestalt_Version:
return (MAJOR_VERSION << 16) + (MINOR_VERSION << 8) + SUB_VERSION;
- /* Which characters can we print? */
- case gestalt_CharOutput:
- /* All characters are printed as one character, in any case */
- if(arr && arrlen > 0)
- *arr = 1;
- /* Cannot print control chars except \n, or chars > 255 */
- if( (val < 32 && val != 10) || (val >= 127 && val <= 159) || (val > 255) )
- return gestalt_CharOutput_CannotPrint;
- /* Can print all other Latin-1 characters */
- return gestalt_CharOutput_ExactPrint;
-
/* Which characters can the player type in line input? */
case gestalt_LineInput:
/* Does not accept control chars */
@@ -95,7 +83,34 @@ glk_gestalt_ext(glui32 sel, glui32 val, glui32 *arr, glui32 arrlen)
if( val < 32 || (val >= 127 && val <= 159) || val == keycode_Unknown )
return 0;
return 1;
+
+ /* Which characters can we print? */
+ case gestalt_CharOutput:
+ /* All characters are printed as one character, in any case */
+ if(arr && arrlen > 0)
+ *arr = 1;
+ /* Cannot print control chars except \n, or chars > 255 */
+ if( (val < 32 && val != 10) || (val >= 127 && val <= 159) || (val > 255) )
+ return gestalt_CharOutput_CannotPrint;
+ /* Can print all other Latin-1 characters */
+ return gestalt_CharOutput_ExactPrint;
+
+ /* Unicode capabilities present */
+ case gestalt_Unicode:
+ return 1;
+ /* Unsupported capabilities */
+ case gestalt_MouseInput:
+ case gestalt_Timer:
+ case gestalt_Graphics:
+ case gestalt_DrawImage:
+ case gestalt_Sound:
+ case gestalt_SoundVolume:
+ case gestalt_SoundNotify:
+ case gestalt_Hyperlinks:
+ case gestalt_HyperlinkInput:
+ case gestalt_SoundMusic:
+ case gestalt_GraphicsTransparency:
/* Selector not supported */
default:
return 0;