Mercurial > emacs
changeset 2515:c0cdd6a80391
long_to_cons and cons_to_long are generally useful things; they're
needed whether or not X is defined.
* xselect.c (long_to_cons, cons_to_long): Moved from here...
* data.c (long_to_cons, cons_to_long): ... to here.
* lisp.h (long_to_cons, cons_to_long): Add extern declaration.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sat, 10 Apr 1993 08:05:07 +0000 |
parents | 6700e25af205 |
children | a5cb0d9f5916 |
files | src/data.c src/lisp.h src/xselect.c |
diffstat | 3 files changed, 31 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/src/data.c Sat Apr 10 08:04:27 1993 +0000 +++ b/src/data.c Sat Apr 10 08:05:07 1993 +0000 @@ -1425,6 +1425,35 @@ return Qnil; } +/* Convert between 32-bit values and pairs of lispy 24-bit values. */ + +Lisp_Object +long_to_cons (i) + unsigned long i; +{ + unsigned int top = i >> 16; + unsigned int bot = i & 0xFFFF; + if (top == 0) + return make_number (bot); + if (top == 0xFFFF) + return Fcons (make_number (-1), make_number (bot)); + return Fcons (make_number (top), make_number (bot)); +} + +unsigned long +cons_to_long (c) + Lisp_Object c; +{ + int top, bot; + if (INTEGERP (c)) + return XINT (c); + top = XCONS (c)->car; + bot = XCONS (c)->cdr; + if (CONSP (bot)) + bot = XCONS (bot)->car; + return ((XINT (top) << 16) | XINT (bot)); +} + DEFUN ("number-to-string", Fnumber_to_string, Snumber_to_string, 1, 1, 0, "Convert NUM to a string by printing it in decimal.\n\ Uses a minus sign if negative.\n\
--- a/src/lisp.h Sat Apr 10 08:04:27 1993 +0000 +++ b/src/lisp.h Sat Apr 10 08:05:07 1993 +0000 @@ -985,6 +985,8 @@ extern Lisp_Object Fadd1 (), Fsub1 (); extern Lisp_Object make_number (); +extern Lisp_Object long_to_cons (); +extern unsigned long cons_to_long (); extern void args_out_of_range (); extern void args_out_of_range_3 (); extern Lisp_Object wrong_type_argument ();
--- a/src/xselect.c Sat Apr 10 08:04:27 1993 +0000 +++ b/src/xselect.c Sat Apr 10 08:05:07 1993 +0000 @@ -234,36 +234,6 @@ return val; } -/* Convert between full word time values (last modification times, etc) - and their Lisp representation as a cons cell (HIGH . LOW). */ - -Lisp_Object -long_to_cons (i) - unsigned long i; -{ - unsigned int top = i >> 16; - unsigned int bot = i & 0xFFFF; - if (top == 0) - return make_number (bot); - if (top == 0xFFFF) - return Fcons (make_number (-1), make_number (bot)); - return Fcons (make_number (top), make_number (bot)); -} - -unsigned long -cons_to_long (c) - Lisp_Object c; -{ - int top, bot; - if (INTEGERP (c)) - return XINT (c); - top = XCONS (c)->car; - bot = XCONS (c)->cdr; - if (CONSP (bot)) - bot = XCONS (bot)->car; - return ((XINT (top) << 16) | XINT (bot)); -} - /* Do protocol to assert ourself as a selection owner. Update the Vselection_alist so that we can reply to later requests for our selection. */