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.
This commit is contained in:
parent
6904bdcd08
commit
51cf3e317c
3 changed files with 31 additions and 30 deletions
29
src/data.c
29
src/data.c
|
@ -1425,6 +1425,35 @@ DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, "T if NUMBER is zero.")
|
|||
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\
|
||||
|
|
|
@ -985,6 +985,8 @@ extern Lisp_Object Flsh (), Fash ();
|
|||
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 ();
|
||||
|
|
|
@ -234,36 +234,6 @@ x_atom_to_symbol (display, atom)
|
|||
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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue