/[emacs]/emacs/src/data.c
ViewVC logotype

Diff of /emacs/src/data.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.205 by pj, Fri Nov 2 07:01:47 2001 UTC revision 1.206 by pj, Fri Nov 2 20:21:38 2001 UTC
# Line 616  DEFUN ("boundp", Fboundp, Sboundp, 1, 1, Line 616  DEFUN ("boundp", Fboundp, Sboundp, 1, 1,
616       register Lisp_Object symbol;       register Lisp_Object symbol;
617  {  {
618    Lisp_Object valcontents;    Lisp_Object valcontents;
619    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
620    
621    valcontents = SYMBOL_VALUE (symbol);    valcontents = SYMBOL_VALUE (symbol);
622    
# Line 632  DEFUN ("fboundp", Ffboundp, Sfboundp, 1, Line 632  DEFUN ("fboundp", Ffboundp, Sfboundp, 1,
632       (symbol)       (symbol)
633       register Lisp_Object symbol;       register Lisp_Object symbol;
634  {  {
635    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
636    return (EQ (XSYMBOL (symbol)->function, Qunbound) ? Qnil : Qt);    return (EQ (XSYMBOL (symbol)->function, Qunbound) ? Qnil : Qt);
637  }  }
638    
# Line 641  DEFUN ("makunbound", Fmakunbound, Smakun Line 641  DEFUN ("makunbound", Fmakunbound, Smakun
641       (symbol)       (symbol)
642       register Lisp_Object symbol;       register Lisp_Object symbol;
643  {  {
644    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
645    if (XSYMBOL (symbol)->constant)    if (XSYMBOL (symbol)->constant)
646      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
647    Fset (symbol, Qunbound);    Fset (symbol, Qunbound);
# Line 653  DEFUN ("fmakunbound", Ffmakunbound, Sfma Line 653  DEFUN ("fmakunbound", Ffmakunbound, Sfma
653       (symbol)       (symbol)
654       register Lisp_Object symbol;       register Lisp_Object symbol;
655  {  {
656    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
657    if (NILP (symbol) || EQ (symbol, Qt))    if (NILP (symbol) || EQ (symbol, Qt))
658      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
659    XSYMBOL (symbol)->function = Qunbound;    XSYMBOL (symbol)->function = Qunbound;
# Line 665  DEFUN ("symbol-function", Fsymbol_functi Line 665  DEFUN ("symbol-function", Fsymbol_functi
665       (symbol)       (symbol)
666       register Lisp_Object symbol;       register Lisp_Object symbol;
667  {  {
668    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
669    if (EQ (XSYMBOL (symbol)->function, Qunbound))    if (EQ (XSYMBOL (symbol)->function, Qunbound))
670      return Fsignal (Qvoid_function, Fcons (symbol, Qnil));      return Fsignal (Qvoid_function, Fcons (symbol, Qnil));
671    return XSYMBOL (symbol)->function;    return XSYMBOL (symbol)->function;
# Line 676  DEFUN ("symbol-plist", Fsymbol_plist, Ss Line 676  DEFUN ("symbol-plist", Fsymbol_plist, Ss
676       (symbol)       (symbol)
677       register Lisp_Object symbol;       register Lisp_Object symbol;
678  {  {
679    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
680    return XSYMBOL (symbol)->plist;    return XSYMBOL (symbol)->plist;
681  }  }
682    
# Line 687  DEFUN ("symbol-name", Fsymbol_name, Ssym Line 687  DEFUN ("symbol-name", Fsymbol_name, Ssym
687  {  {
688    register Lisp_Object name;    register Lisp_Object name;
689    
690    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
691    XSETSTRING (name, XSYMBOL (symbol)->name);    XSETSTRING (name, XSYMBOL (symbol)->name);
692    return name;    return name;
693  }  }
# Line 697  DEFUN ("fset", Ffset, Sfset, 2, 2, 0, Line 697  DEFUN ("fset", Ffset, Sfset, 2, 2, 0,
697       (symbol, definition)       (symbol, definition)
698       register Lisp_Object symbol, definition;       register Lisp_Object symbol, definition;
699  {  {
700    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
701    if (NILP (symbol) || EQ (symbol, Qt))    if (NILP (symbol) || EQ (symbol, Qt))
702      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));      return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
703    if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound))    if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound))
# Line 729  DEFUN ("setplist", Fsetplist, Ssetplist, Line 729  DEFUN ("setplist", Fsetplist, Ssetplist,
729       (symbol, newplist)       (symbol, newplist)
730       register Lisp_Object symbol, newplist;       register Lisp_Object symbol, newplist;
731  {  {
732    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
733    XSYMBOL (symbol)->plist = newplist;    XSYMBOL (symbol)->plist = newplist;
734    return newplist;    return newplist;
735  }  }
# Line 874  store_symval_forwarding (symbol, valcont Line 874  store_symval_forwarding (symbol, valcont
874        switch (XMISCTYPE (valcontents))        switch (XMISCTYPE (valcontents))
875          {          {
876          case Lisp_Misc_Intfwd:          case Lisp_Misc_Intfwd:
877            CHECK_NUMBER (newval, 1);            CHECK_NUMBER (newval);
878            *XINTFWD (valcontents)->intvar = XINT (newval);            *XINTFWD (valcontents)->intvar = XINT (newval);
879            if (*XINTFWD (valcontents)->intvar != XINT (newval))            if (*XINTFWD (valcontents)->intvar != XINT (newval))
880              error ("Value out of range for variable `%s'",              error ("Value out of range for variable `%s'",
# Line 1029  find_symbol_value (symbol) Line 1029  find_symbol_value (symbol)
1029    register Lisp_Object valcontents;    register Lisp_Object valcontents;
1030    register Lisp_Object val;    register Lisp_Object val;
1031        
1032    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
1033    valcontents = SYMBOL_VALUE (symbol);    valcontents = SYMBOL_VALUE (symbol);
1034    
1035    if (BUFFER_LOCAL_VALUEP (valcontents)    if (BUFFER_LOCAL_VALUEP (valcontents)
# Line 1134  set_internal (symbol, newval, buf, bindf Line 1134  set_internal (symbol, newval, buf, bindf
1134    if (NILP (buf->name))    if (NILP (buf->name))
1135      return newval;      return newval;
1136    
1137    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
1138    if (SYMBOL_CONSTANT_P (symbol)    if (SYMBOL_CONSTANT_P (symbol)
1139        && (NILP (Fkeywordp (symbol))        && (NILP (Fkeywordp (symbol))
1140            || !EQ (newval, SYMBOL_VALUE (symbol))))            || !EQ (newval, SYMBOL_VALUE (symbol))))
# Line 1275  default_value (symbol) Line 1275  default_value (symbol)
1275  {  {
1276    register Lisp_Object valcontents;    register Lisp_Object valcontents;
1277    
1278    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
1279    valcontents = SYMBOL_VALUE (symbol);    valcontents = SYMBOL_VALUE (symbol);
1280    
1281    /* For a built-in buffer-local variable, get the default value    /* For a built-in buffer-local variable, get the default value
# Line 1346  for this variable.  */) Line 1346  for this variable.  */)
1346  {  {
1347    register Lisp_Object valcontents, current_alist_element, alist_element_buffer;    register Lisp_Object valcontents, current_alist_element, alist_element_buffer;
1348    
1349    CHECK_SYMBOL (symbol, 0);    CHECK_SYMBOL (symbol);
1350    valcontents = SYMBOL_VALUE (symbol);    valcontents = SYMBOL_VALUE (symbol);
1351    
1352    /* Handle variables like case-fold-search that have special slots    /* Handle variables like case-fold-search that have special slots
# Line 1448  The function `default-value' gets the de Line 1448  The function `default-value' gets the de
1448  {  {
1449    register Lisp_Object tem, valcontents, newval;    register Lisp_Object tem, valcontents, newval;
1450    
1451    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1452    
1453    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1454    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))
# Line 1501  Instead, use `add-hook' and specify t fo Line 1501  Instead, use `add-hook' and specify t fo
1501  {  {
1502    register Lisp_Object tem, valcontents;    register Lisp_Object tem, valcontents;
1503    
1504    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1505    
1506    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1507    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents))
# Line 1580  From now on the default value will apply Line 1580  From now on the default value will apply
1580  {  {
1581    register Lisp_Object tem, valcontents;    register Lisp_Object tem, valcontents;
1582    
1583    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1584    
1585    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1586    
# Line 1643  See `modify-frame-parameters'.  */) Line 1643  See `modify-frame-parameters'.  */)
1643  {  {
1644    register Lisp_Object tem, valcontents, newval;    register Lisp_Object tem, valcontents, newval;
1645    
1646    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1647    
1648    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1649    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents)    if (EQ (variable, Qnil) || EQ (variable, Qt) || KBOARD_OBJFWDP (valcontents)
# Line 1688  BUFFER defaults to the current buffer. Line 1688  BUFFER defaults to the current buffer.
1688      buf = current_buffer;      buf = current_buffer;
1689    else    else
1690      {      {
1691        CHECK_BUFFER (buffer, 0);        CHECK_BUFFER (buffer);
1692        buf = XBUFFER (buffer);        buf = XBUFFER (buffer);
1693      }      }
1694    
1695    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1696    
1697    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1698    if (BUFFER_LOCAL_VALUEP (valcontents)    if (BUFFER_LOCAL_VALUEP (valcontents)
# Line 1732  BUFFER defaults to the current buffer. Line 1732  BUFFER defaults to the current buffer.
1732      buf = current_buffer;      buf = current_buffer;
1733    else    else
1734      {      {
1735        CHECK_BUFFER (buffer, 0);        CHECK_BUFFER (buffer);
1736        buf = XBUFFER (buffer);        buf = XBUFFER (buffer);
1737      }      }
1738    
1739    CHECK_SYMBOL (variable, 0);    CHECK_SYMBOL (variable);
1740    
1741    valcontents = SYMBOL_VALUE (variable);    valcontents = SYMBOL_VALUE (variable);
1742    
# Line 1826  or a byte-code object.  IDX starts at 0. Line 1826  or a byte-code object.  IDX starts at 0.
1826  {  {
1827    register int idxval;    register int idxval;
1828    
1829    CHECK_NUMBER (idx, 1);    CHECK_NUMBER (idx);
1830    idxval = XINT (idx);    idxval = XINT (idx);
1831    if (STRINGP (array))    if (STRINGP (array))
1832      {      {
# Line 1957  IDX starts at 0.  */) Line 1957  IDX starts at 0.  */)
1957  {  {
1958    register int idxval;    register int idxval;
1959    
1960    CHECK_NUMBER (idx, 1);    CHECK_NUMBER (idx);
1961    idxval = XINT (idx);    idxval = XINT (idx);
1962    if (!VECTORP (array) && !STRINGP (array) && !BOOL_VECTOR_P (array)    if (!VECTORP (array) && !STRINGP (array) && !BOOL_VECTOR_P (array)
1963        && ! CHAR_TABLE_P (array))        && ! CHAR_TABLE_P (array))
# Line 2033  IDX starts at 0.  */) Line 2033  IDX starts at 0.  */)
2033    
2034        if (idxval < 0 || idxval >= XSTRING (array)->size)        if (idxval < 0 || idxval >= XSTRING (array)->size)
2035          args_out_of_range (array, idx);          args_out_of_range (array, idx);
2036        CHECK_NUMBER (newelt, 2);        CHECK_NUMBER (newelt);
2037    
2038        idxval_byte = string_char_to_byte (array, idxval);        idxval_byte = string_char_to_byte (array, idxval);
2039        p1 = &XSTRING (array)->data[idxval_byte];        p1 = &XSTRING (array)->data[idxval_byte];
# Line 2067  IDX starts at 0.  */) Line 2067  IDX starts at 0.  */)
2067      {      {
2068        if (idxval < 0 || idxval >= XSTRING (array)->size)        if (idxval < 0 || idxval >= XSTRING (array)->size)
2069          args_out_of_range (array, idx);          args_out_of_range (array, idx);
2070        CHECK_NUMBER (newelt, 2);        CHECK_NUMBER (newelt);
2071    
2072        if (XINT (newelt) < 0 || SINGLE_BYTE_CHAR_P (XINT (newelt)))        if (XINT (newelt) < 0 || SINGLE_BYTE_CHAR_P (XINT (newelt)))
2073          XSTRING (array)->data[idxval] = XINT (newelt);          XSTRING (array)->data[idxval] = XINT (newelt);
# Line 2120  arithcompare (num1, num2, comparison) Line 2120  arithcompare (num1, num2, comparison)
2120    double f1 = 0, f2 = 0;    double f1 = 0, f2 = 0;
2121    int floatp = 0;    int floatp = 0;
2122    
2123    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num1, 0);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num1);
2124    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num2, 0);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (num2);
2125    
2126    if (FLOATP (num1) || FLOATP (num2))    if (FLOATP (num1) || FLOATP (num2))
2127      {      {
# Line 2222  DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, Line 2222  DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0,
2222       (number)       (number)
2223       register Lisp_Object number;       register Lisp_Object number;
2224  {  {
2225    CHECK_NUMBER_OR_FLOAT (number, 0);    CHECK_NUMBER_OR_FLOAT (number);
2226    
2227    if (FLOATP (number))    if (FLOATP (number))
2228      {      {
# Line 2274  NUMBER may be an integer or a floating p Line 2274  NUMBER may be an integer or a floating p
2274  {  {
2275    char buffer[VALBITS];    char buffer[VALBITS];
2276    
2277    CHECK_NUMBER_OR_FLOAT (number, 0);    CHECK_NUMBER_OR_FLOAT (number);
2278    
2279    if (FLOATP (number))    if (FLOATP (number))
2280      {      {
# Line 2330  If the base used is not 10, floating poi Line 2330  If the base used is not 10, floating poi
2330    int sign = 1;    int sign = 1;
2331    Lisp_Object val;    Lisp_Object val;
2332    
2333    CHECK_STRING (string, 0);    CHECK_STRING (string);
2334    
2335    if (NILP (base))    if (NILP (base))
2336      b = 10;      b = 10;
2337    else    else
2338      {      {
2339        CHECK_NUMBER (base, 1);        CHECK_NUMBER (base);
2340        b = XINT (base);        b = XINT (base);
2341        if (b < 2 || b > 16)        if (b < 2 || b > 16)
2342          Fsignal (Qargs_out_of_range, Fcons (base, Qnil));          Fsignal (Qargs_out_of_range, Fcons (base, Qnil));
# Line 2427  arith_driver (code, nargs, args) Line 2427  arith_driver (code, nargs, args)
2427      {      {
2428        /* Using args[argnum] as argument to CHECK_NUMBER_... */        /* Using args[argnum] as argument to CHECK_NUMBER_... */
2429        val = args[argnum];        val = args[argnum];
2430        CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val, argnum);        CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val);
2431    
2432        if (FLOATP (val))        if (FLOATP (val))
2433          return float_arith_driver ((double) accum, argnum, code,          return float_arith_driver ((double) accum, argnum, code,
# Line 2496  float_arith_driver (accum, argnum, code, Line 2496  float_arith_driver (accum, argnum, code,
2496    for (; argnum < nargs; argnum++)    for (; argnum < nargs; argnum++)
2497      {      {
2498        val = args[argnum];    /* using args[argnum] as argument to CHECK_NUMBER_... */        val = args[argnum];    /* using args[argnum] as argument to CHECK_NUMBER_... */
2499        CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val, argnum);        CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (val);
2500    
2501        if (FLOATP (val))        if (FLOATP (val))
2502          {          {
# Line 2598  Both must be integers or markers.  */) Line 2598  Both must be integers or markers.  */)
2598  {  {
2599    Lisp_Object val;    Lisp_Object val;
2600    
2601    CHECK_NUMBER_COERCE_MARKER (x, 0);    CHECK_NUMBER_COERCE_MARKER (x);
2602    CHECK_NUMBER_COERCE_MARKER (y, 1);    CHECK_NUMBER_COERCE_MARKER (y);
2603    
2604    if (XFASTINT (y) == 0)    if (XFASTINT (y) == 0)
2605      Fsignal (Qarith_error, Qnil);      Fsignal (Qarith_error, Qnil);
# Line 2641  Both X and Y must be numbers or markers. Line 2641  Both X and Y must be numbers or markers.
2641    Lisp_Object val;    Lisp_Object val;
2642    EMACS_INT i1, i2;    EMACS_INT i1, i2;
2643    
2644    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (x, 0);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (x);
2645    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (y, 1);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (y);
2646    
2647    if (FLOATP (x) || FLOATP (y))    if (FLOATP (x) || FLOATP (y))
2648      return fmod_float (x, y);      return fmod_float (x, y);
# Line 2727  In this case, the sign bit is duplicated Line 2727  In this case, the sign bit is duplicated
2727  {  {
2728    register Lisp_Object val;    register Lisp_Object val;
2729    
2730    CHECK_NUMBER (value, 0);    CHECK_NUMBER (value);
2731    CHECK_NUMBER (count, 1);    CHECK_NUMBER (count);
2732    
2733    if (XINT (count) >= BITS_PER_EMACS_INT)    if (XINT (count) >= BITS_PER_EMACS_INT)
2734      XSETINT (val, 0);      XSETINT (val, 0);
# Line 2750  In this case,  zeros are shifted in on t Line 2750  In this case,  zeros are shifted in on t
2750  {  {
2751    register Lisp_Object val;    register Lisp_Object val;
2752    
2753    CHECK_NUMBER (value, 0);    CHECK_NUMBER (value);
2754    CHECK_NUMBER (count, 1);    CHECK_NUMBER (count);
2755    
2756    if (XINT (count) >= BITS_PER_EMACS_INT)    if (XINT (count) >= BITS_PER_EMACS_INT)
2757      XSETINT (val, 0);      XSETINT (val, 0);
# Line 2770  Markers are converted to integers.  */) Line 2770  Markers are converted to integers.  */)
2770       (number)       (number)
2771       register Lisp_Object number;       register Lisp_Object number;
2772  {  {
2773    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number);
2774    
2775    if (FLOATP (number))    if (FLOATP (number))
2776      return (make_float (1.0 + XFLOAT_DATA (number)));      return (make_float (1.0 + XFLOAT_DATA (number)));
# Line 2785  Markers are converted to integers.  */) Line 2785  Markers are converted to integers.  */)
2785       (number)       (number)
2786       register Lisp_Object number;       register Lisp_Object number;
2787  {  {
2788    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0);    CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number);
2789    
2790    if (FLOATP (number))    if (FLOATP (number))
2791      return (make_float (-1.0 + XFLOAT_DATA (number)));      return (make_float (-1.0 + XFLOAT_DATA (number)));
# Line 2799  DEFUN ("lognot", Flognot, Slognot, 1, 1, Line 2799  DEFUN ("lognot", Flognot, Slognot, 1, 1,
2799       (number)       (number)
2800       register Lisp_Object number;       register Lisp_Object number;
2801  {  {
2802    CHECK_NUMBER (number, 0);    CHECK_NUMBER (number);
2803    XSETINT (number, ~XINT (number));    XSETINT (number, ~XINT (number));
2804    return number;    return number;
2805  }  }

Legend:
Removed from v.1.205  
changed lines
  Added in v.1.206

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26