Mercurial > emacs
view lib/intprops.h @ 112387:ac3e3168aca2
allout.el: Summary - migrate to defining allout mode using
define-minor-mode instead of defun. Significantly clean-up internal keymap
provisions, refactoring a bit and removing a lot of accumulated cruft.
allout-mode-map is now a keymap by virtue of being an defalias to
allout-mode-map-value, which contains the actual keymap structure.
(allout-mode): Use define-minor-mode rather than defun. Remove
now-unnecessary minor-mode setup activities from the body. Specify :keymap
as allout-mode-map so the minor-mode-map-alist entry will be
'(allout-mode . allout-mode-map) - see allout-mode-map-value, below.
Adjust docstring to track changes.
(allout-minor-mode): Remove this defalias, now that we're using
define-minor-mode.
(allout-mode-map): Set value to be 'allout-mode-map. The actual keymap
is allout-mode-map-value, via defalias.
(allout-mode-map-value): The variable holding the actual mode keymap
structure, by virtue of defalias from allout-mode-map.
(allout-compose-and-institute-keymap): Renamed from allout-bind-keys, and
including the binding-composition functionality of the former
produce-allout-mode-map and allout-setup-mode-map.
(allout-institute-keymap): Take over the "setup" part of the former
allout-setup-mode-map. Reassign allout-mode-map-value value and update the
defalias.
(allout-command-prefix) (allout-prefixed-keybindings)
(allout-unprefixed-keybindings): Use allout-compose-and-institute-keymap to
process the bindings.
(allout-unprefixed-keybindings): Remove extraneous '?' question marks.
(allout-prefixed-keybindings): Elide binding to (prefixed) \C-h - user can
customize if they want to use that binding. Bind allout-copy-topic-as-kill
to (prefixed) \M-k. Bind allout-up-current-level to (prefixed) \C-u. (I
think i mistakenly elided that, previously, instead of the one for \C-h.)
(allout-hotspot-key-handler): Remove attempt to resolve the key through the
literal key-string lookup on allout-keybindings-list. That probably hasn't
worked for a Long Time, and removal of allout-keybindings-list further
simplifies the keybindings situation.
(allout-pre-command-business): Use allout-mode-map-value instead of
allout-mode-map.
(allout-preempt-trailing-ctrl-h): Remove. The user can customize the
bindings if they want to use a keybinding having a trailing \C-h. No
deprecation needed since this feature was never in a release.
(allout-keybindings-list): Remove. It's not been useful for a while. (See
allout-hotspot-key-handler changes, above.)
(produce-allout-mode-map): Remove. Consolidate into
allout-compose-and-institute-keymap.
(allout-mode-map-adjustments): Remove. No longer necessary with removal of
allout-preempt-trailing-ctrl-h.
(allout-setup-mode-map): Remove. Consolidate into
allout-compose-and-institute-keymap and allout-institute-keymap.
author | Ken Manheimer <ken.manheimer@gmail.com> |
---|---|
date | Thu, 20 Jan 2011 13:13:30 -0500 |
parents | f31011c088d9 |
children |
line wrap: on
line source
/* intprops.h -- properties of integer types Copyright (C) 2001-2005, 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* Written by Paul Eggert. */ #ifndef GL_INTPROPS_H # define GL_INTPROPS_H # include <limits.h> /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the arithmetic type T is an integer type. bool counts as an integer. */ # define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if negative values of the signed integer type T use two's complement, ones' complement, or signed magnitude representation, respectively. Much GNU code assumes two's complement, but some people like to be portable to all possible C hosts. */ # define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) # define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) # define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) /* True if the arithmetic type T is signed. */ # define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* The maximum and minimum values for the integer type T. These macros have undefined behavior if T is signed and has padding bits. If this is a problem for you, please let us know how to fix it for your host. */ # define TYPE_MINIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) 0 \ : TYPE_SIGNED_MAGNITUDE (t) \ ? ~ (t) 0 \ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) # define TYPE_MAXIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) /* Return zero if T can be determined to be an unsigned type. Otherwise, return 1. When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a tighter bound. Otherwise, it overestimates the true bound by one byte when applied to unsigned types of size 2, 4, 16, ... bytes. The symbol signed_type_or_expr__ is private to this header file. */ # if __GNUC__ >= 2 # define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t)) # else # define signed_type_or_expr__(t) 1 # endif /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ # define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. */ # define INT_STRLEN_BOUND(t) \ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) \ + signed_type_or_expr__ (t)) /* Bound on buffer size needed to represent an integer type or expression T, including the terminating null. */ # define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) #endif /* GL_INTPROPS_H */