Mercurial > emacs
comparison src/data.c @ 40123:e528f2adeed4
Change doc-string comments to `new style' [w/`doc:' keyword].
| author | Pavel Jan?k <Pavel@Janik.cz> |
|---|---|
| date | Sun, 21 Oct 2001 12:13:46 +0000 |
| parents | 528dd5f565ba |
| children | ae231ad6710d |
comparison
equal
deleted
inserted
replaced
| 40122:4a487543a226 | 40123:e528f2adeed4 |
|---|---|
| 175 } | 175 } |
| 176 | 176 |
| 177 /* Data type predicates */ | 177 /* Data type predicates */ |
| 178 | 178 |
| 179 DEFUN ("eq", Feq, Seq, 2, 2, 0, | 179 DEFUN ("eq", Feq, Seq, 2, 2, 0, |
| 180 "Return t if the two args are the same Lisp object.") | 180 doc: /* Return t if the two args are the same Lisp object. */) |
| 181 (obj1, obj2) | 181 (obj1, obj2) |
| 182 Lisp_Object obj1, obj2; | 182 Lisp_Object obj1, obj2; |
| 183 { | 183 { |
| 184 if (EQ (obj1, obj2)) | 184 if (EQ (obj1, obj2)) |
| 185 return Qt; | 185 return Qt; |
| 186 return Qnil; | 186 return Qnil; |
| 187 } | 187 } |
| 188 | 188 |
| 189 DEFUN ("null", Fnull, Snull, 1, 1, 0, "Return t if OBJECT is nil.") | 189 DEFUN ("null", Fnull, Snull, 1, 1, 0, |
| 190 (object) | 190 doc: /* Return t if OBJECT is nil. */) |
| 191 (object) | |
| 191 Lisp_Object object; | 192 Lisp_Object object; |
| 192 { | 193 { |
| 193 if (NILP (object)) | 194 if (NILP (object)) |
| 194 return Qt; | 195 return Qt; |
| 195 return Qnil; | 196 return Qnil; |
| 196 } | 197 } |
| 197 | 198 |
| 198 DEFUN ("type-of", Ftype_of, Stype_of, 1, 1, 0, | 199 DEFUN ("type-of", Ftype_of, Stype_of, 1, 1, 0, |
| 199 "Return a symbol representing the type of OBJECT.\n\ | 200 doc: /* Return a symbol representing the type of OBJECT. |
| 200 The symbol returned names the object's basic type;\n\ | 201 The symbol returned names the object's basic type; |
| 201 for example, (type-of 1) returns `integer'.") | 202 for example, (type-of 1) returns `integer'. */) |
| 202 (object) | 203 (object) |
| 203 Lisp_Object object; | 204 Lisp_Object object; |
| 204 { | 205 { |
| 205 switch (XGCTYPE (object)) | 206 switch (XGCTYPE (object)) |
| 206 { | 207 { |
| 207 case Lisp_Int: | 208 case Lisp_Int: |
| 257 default: | 258 default: |
| 258 abort (); | 259 abort (); |
| 259 } | 260 } |
| 260 } | 261 } |
| 261 | 262 |
| 262 DEFUN ("consp", Fconsp, Sconsp, 1, 1, 0, "Return t if OBJECT is a cons cell.") | 263 DEFUN ("consp", Fconsp, Sconsp, 1, 1, 0, |
| 263 (object) | 264 doc: /* Return t if OBJECT is a cons cell. */) |
| 265 (object) | |
| 264 Lisp_Object object; | 266 Lisp_Object object; |
| 265 { | 267 { |
| 266 if (CONSP (object)) | 268 if (CONSP (object)) |
| 267 return Qt; | 269 return Qt; |
| 268 return Qnil; | 270 return Qnil; |
| 269 } | 271 } |
| 270 | 272 |
| 271 DEFUN ("atom", Fatom, Satom, 1, 1, 0, | 273 DEFUN ("atom", Fatom, Satom, 1, 1, 0, |
| 272 "Return t if OBJECT is not a cons cell. This includes nil.") | 274 doc: /* Return t if OBJECT is not a cons cell. This includes nil. */) |
| 273 (object) | 275 (object) |
| 274 Lisp_Object object; | 276 Lisp_Object object; |
| 275 { | 277 { |
| 276 if (CONSP (object)) | 278 if (CONSP (object)) |
| 277 return Qnil; | 279 return Qnil; |
| 278 return Qt; | 280 return Qt; |
| 279 } | 281 } |
| 280 | 282 |
| 281 DEFUN ("listp", Flistp, Slistp, 1, 1, 0, | 283 DEFUN ("listp", Flistp, Slistp, 1, 1, 0, |
| 282 "Return t if OBJECT is a list. This includes nil.") | 284 doc: /* Return t if OBJECT is a list. This includes nil. */) |
| 283 (object) | 285 (object) |
| 284 Lisp_Object object; | 286 Lisp_Object object; |
| 285 { | 287 { |
| 286 if (CONSP (object) || NILP (object)) | 288 if (CONSP (object) || NILP (object)) |
| 287 return Qt; | 289 return Qt; |
| 288 return Qnil; | 290 return Qnil; |
| 289 } | 291 } |
| 290 | 292 |
| 291 DEFUN ("nlistp", Fnlistp, Snlistp, 1, 1, 0, | 293 DEFUN ("nlistp", Fnlistp, Snlistp, 1, 1, 0, |
| 292 "Return t if OBJECT is not a list. Lists include nil.") | 294 doc: /* Return t if OBJECT is not a list. Lists include nil. */) |
| 293 (object) | 295 (object) |
| 294 Lisp_Object object; | 296 Lisp_Object object; |
| 295 { | 297 { |
| 296 if (CONSP (object) || NILP (object)) | 298 if (CONSP (object) || NILP (object)) |
| 297 return Qnil; | 299 return Qnil; |
| 298 return Qt; | 300 return Qt; |
| 299 } | 301 } |
| 300 | 302 |
| 301 DEFUN ("symbolp", Fsymbolp, Ssymbolp, 1, 1, 0, | 303 DEFUN ("symbolp", Fsymbolp, Ssymbolp, 1, 1, 0, |
| 302 "Return t if OBJECT is a symbol.") | 304 doc: /* Return t if OBJECT is a symbol. */) |
| 303 (object) | 305 (object) |
| 304 Lisp_Object object; | 306 Lisp_Object object; |
| 305 { | 307 { |
| 306 if (SYMBOLP (object)) | 308 if (SYMBOLP (object)) |
| 307 return Qt; | 309 return Qt; |
| 308 return Qnil; | 310 return Qnil; |
| 309 } | 311 } |
| 310 | 312 |
| 311 /* Define this in C to avoid unnecessarily consing up the symbol | 313 /* Define this in C to avoid unnecessarily consing up the symbol |
| 312 name. */ | 314 name. */ |
| 313 DEFUN ("keywordp", Fkeywordp, Skeywordp, 1, 1, 0, | 315 DEFUN ("keywordp", Fkeywordp, Skeywordp, 1, 1, 0, |
| 314 "Return t if OBJECT is a keyword.\n\ | 316 doc: /* Return t if OBJECT is a keyword. |
| 315 This means that it is a symbol with a print name beginning with `:'\n\ | 317 This means that it is a symbol with a print name beginning with `:' |
| 316 interned in the initial obarray.") | 318 interned in the initial obarray. */) |
| 317 (object) | 319 (object) |
| 318 Lisp_Object object; | 320 Lisp_Object object; |
| 319 { | 321 { |
| 320 if (SYMBOLP (object) | 322 if (SYMBOLP (object) |
| 321 && XSYMBOL (object)->name->data[0] == ':' | 323 && XSYMBOL (object)->name->data[0] == ':' |
| 322 && SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (object)) | 324 && SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (object)) |
| 323 return Qt; | 325 return Qt; |
| 324 return Qnil; | 326 return Qnil; |
| 325 } | 327 } |
| 326 | 328 |
| 327 DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0, | 329 DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0, |
| 328 "Return t if OBJECT is a vector.") | 330 doc: /* Return t if OBJECT is a vector. */) |
| 329 (object) | 331 (object) |
| 330 Lisp_Object object; | 332 Lisp_Object object; |
| 331 { | 333 { |
| 332 if (VECTORP (object)) | 334 if (VECTORP (object)) |
| 333 return Qt; | 335 return Qt; |
| 334 return Qnil; | 336 return Qnil; |
| 335 } | 337 } |
| 336 | 338 |
| 337 DEFUN ("stringp", Fstringp, Sstringp, 1, 1, 0, | 339 DEFUN ("stringp", Fstringp, Sstringp, 1, 1, 0, |
| 338 "Return t if OBJECT is a string.") | 340 doc: /* Return t if OBJECT is a string. */) |
| 339 (object) | 341 (object) |
| 340 Lisp_Object object; | 342 Lisp_Object object; |
| 341 { | 343 { |
| 342 if (STRINGP (object)) | 344 if (STRINGP (object)) |
| 343 return Qt; | 345 return Qt; |
| 344 return Qnil; | 346 return Qnil; |
| 345 } | 347 } |
| 346 | 348 |
| 347 DEFUN ("multibyte-string-p", Fmultibyte_string_p, Smultibyte_string_p, | 349 DEFUN ("multibyte-string-p", Fmultibyte_string_p, Smultibyte_string_p, |
| 348 1, 1, 0, "Return t if OBJECT is a multibyte string.") | 350 1, 1, 0, |
| 349 (object) | 351 doc: /* Return t if OBJECT is a multibyte string. */) |
| 352 (object) | |
| 350 Lisp_Object object; | 353 Lisp_Object object; |
| 351 { | 354 { |
| 352 if (STRINGP (object) && STRING_MULTIBYTE (object)) | 355 if (STRINGP (object) && STRING_MULTIBYTE (object)) |
| 353 return Qt; | 356 return Qt; |
| 354 return Qnil; | 357 return Qnil; |
| 355 } | 358 } |
| 356 | 359 |
| 357 DEFUN ("char-table-p", Fchar_table_p, Schar_table_p, 1, 1, 0, | 360 DEFUN ("char-table-p", Fchar_table_p, Schar_table_p, 1, 1, 0, |
| 358 "Return t if OBJECT is a char-table.") | 361 doc: /* Return t if OBJECT is a char-table. */) |
| 359 (object) | 362 (object) |
| 360 Lisp_Object object; | 363 Lisp_Object object; |
| 361 { | 364 { |
| 362 if (CHAR_TABLE_P (object)) | 365 if (CHAR_TABLE_P (object)) |
| 363 return Qt; | 366 return Qt; |
| 364 return Qnil; | 367 return Qnil; |
| 365 } | 368 } |
| 366 | 369 |
| 367 DEFUN ("vector-or-char-table-p", Fvector_or_char_table_p, | 370 DEFUN ("vector-or-char-table-p", Fvector_or_char_table_p, |
| 368 Svector_or_char_table_p, 1, 1, 0, | 371 Svector_or_char_table_p, 1, 1, 0, |
| 369 "Return t if OBJECT is a char-table or vector.") | 372 doc: /* Return t if OBJECT is a char-table or vector. */) |
| 370 (object) | 373 (object) |
| 371 Lisp_Object object; | 374 Lisp_Object object; |
| 372 { | 375 { |
| 373 if (VECTORP (object) || CHAR_TABLE_P (object)) | 376 if (VECTORP (object) || CHAR_TABLE_P (object)) |
| 374 return Qt; | 377 return Qt; |
| 375 return Qnil; | 378 return Qnil; |
| 376 } | 379 } |
| 377 | 380 |
| 378 DEFUN ("bool-vector-p", Fbool_vector_p, Sbool_vector_p, 1, 1, 0, "Return t if OBJECT is a bool-vector.") | 381 DEFUN ("bool-vector-p", Fbool_vector_p, Sbool_vector_p, 1, 1, 0, |
| 379 (object) | 382 doc: /* Return t if OBJECT is a bool-vector. */) |
| 383 (object) | |
| 380 Lisp_Object object; | 384 Lisp_Object object; |
| 381 { | 385 { |
| 382 if (BOOL_VECTOR_P (object)) | 386 if (BOOL_VECTOR_P (object)) |
| 383 return Qt; | 387 return Qt; |
| 384 return Qnil; | 388 return Qnil; |
| 385 } | 389 } |
| 386 | 390 |
| 387 DEFUN ("arrayp", Farrayp, Sarrayp, 1, 1, 0, "Return t if OBJECT is an array (string or vector).") | 391 DEFUN ("arrayp", Farrayp, Sarrayp, 1, 1, 0, |
| 388 (object) | 392 doc: /* Return t if OBJECT is an array (string or vector). */) |
| 393 (object) | |
| 389 Lisp_Object object; | 394 Lisp_Object object; |
| 390 { | 395 { |
| 391 if (VECTORP (object) || STRINGP (object) | 396 if (VECTORP (object) || STRINGP (object) |
| 392 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) | 397 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) |
| 393 return Qt; | 398 return Qt; |
| 394 return Qnil; | 399 return Qnil; |
| 395 } | 400 } |
| 396 | 401 |
| 397 DEFUN ("sequencep", Fsequencep, Ssequencep, 1, 1, 0, | 402 DEFUN ("sequencep", Fsequencep, Ssequencep, 1, 1, 0, |
| 398 "Return t if OBJECT is a sequence (list or array).") | 403 doc: /* Return t if OBJECT is a sequence (list or array). */) |
| 399 (object) | 404 (object) |
| 400 register Lisp_Object object; | 405 register Lisp_Object object; |
| 401 { | 406 { |
| 402 if (CONSP (object) || NILP (object) || VECTORP (object) || STRINGP (object) | 407 if (CONSP (object) || NILP (object) || VECTORP (object) || STRINGP (object) |
| 403 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) | 408 || CHAR_TABLE_P (object) || BOOL_VECTOR_P (object)) |
| 404 return Qt; | 409 return Qt; |
| 405 return Qnil; | 410 return Qnil; |
| 406 } | 411 } |
| 407 | 412 |
| 408 DEFUN ("bufferp", Fbufferp, Sbufferp, 1, 1, 0, "Return t if OBJECT is an editor buffer.") | 413 DEFUN ("bufferp", Fbufferp, Sbufferp, 1, 1, 0, |
| 409 (object) | 414 doc: /* Return t if OBJECT is an editor buffer. */) |
| 415 (object) | |
| 410 Lisp_Object object; | 416 Lisp_Object object; |
| 411 { | 417 { |
| 412 if (BUFFERP (object)) | 418 if (BUFFERP (object)) |
| 413 return Qt; | 419 return Qt; |
| 414 return Qnil; | 420 return Qnil; |
| 415 } | 421 } |
| 416 | 422 |
| 417 DEFUN ("markerp", Fmarkerp, Smarkerp, 1, 1, 0, "Return t if OBJECT is a marker (editor pointer).") | 423 DEFUN ("markerp", Fmarkerp, Smarkerp, 1, 1, 0, |
| 418 (object) | 424 doc: /* Return t if OBJECT is a marker (editor pointer). */) |
| 425 (object) | |
| 419 Lisp_Object object; | 426 Lisp_Object object; |
| 420 { | 427 { |
| 421 if (MARKERP (object)) | 428 if (MARKERP (object)) |
| 422 return Qt; | 429 return Qt; |
| 423 return Qnil; | 430 return Qnil; |
| 424 } | 431 } |
| 425 | 432 |
| 426 DEFUN ("subrp", Fsubrp, Ssubrp, 1, 1, 0, "Return t if OBJECT is a built-in function.") | 433 DEFUN ("subrp", Fsubrp, Ssubrp, 1, 1, 0, |
| 427 (object) | 434 doc: /* Return t if OBJECT is a built-in function. */) |
| 435 (object) | |
| 428 Lisp_Object object; | 436 Lisp_Object object; |
| 429 { | 437 { |
| 430 if (SUBRP (object)) | 438 if (SUBRP (object)) |
| 431 return Qt; | 439 return Qt; |
| 432 return Qnil; | 440 return Qnil; |
| 433 } | 441 } |
| 434 | 442 |
| 435 DEFUN ("byte-code-function-p", Fbyte_code_function_p, Sbyte_code_function_p, | 443 DEFUN ("byte-code-function-p", Fbyte_code_function_p, Sbyte_code_function_p, |
| 436 1, 1, 0, "Return t if OBJECT is a byte-compiled function object.") | 444 1, 1, 0, |
| 437 (object) | 445 doc: /* Return t if OBJECT is a byte-compiled function object. */) |
| 446 (object) | |
| 438 Lisp_Object object; | 447 Lisp_Object object; |
| 439 { | 448 { |
| 440 if (COMPILEDP (object)) | 449 if (COMPILEDP (object)) |
| 441 return Qt; | 450 return Qt; |
| 442 return Qnil; | 451 return Qnil; |
| 443 } | 452 } |
| 444 | 453 |
| 445 DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, | 454 DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, |
| 446 "Return t if OBJECT is a character (an integer) or a string.") | 455 doc: /* Return t if OBJECT is a character (an integer) or a string. */) |
| 447 (object) | 456 (object) |
| 448 register Lisp_Object object; | 457 register Lisp_Object object; |
| 449 { | 458 { |
| 450 if (INTEGERP (object) || STRINGP (object)) | 459 if (INTEGERP (object) || STRINGP (object)) |
| 451 return Qt; | 460 return Qt; |
| 452 return Qnil; | 461 return Qnil; |
| 453 } | 462 } |
| 454 | 463 |
| 455 DEFUN ("integerp", Fintegerp, Sintegerp, 1, 1, 0, "Return t if OBJECT is an integer.") | 464 DEFUN ("integerp", Fintegerp, Sintegerp, 1, 1, 0, |
| 456 (object) | 465 doc: /* Return t if OBJECT is an integer. */) |
| 466 (object) | |
| 457 Lisp_Object object; | 467 Lisp_Object object; |
| 458 { | 468 { |
| 459 if (INTEGERP (object)) | 469 if (INTEGERP (object)) |
| 460 return Qt; | 470 return Qt; |
| 461 return Qnil; | 471 return Qnil; |
| 462 } | 472 } |
| 463 | 473 |
| 464 DEFUN ("integer-or-marker-p", Finteger_or_marker_p, Sinteger_or_marker_p, 1, 1, 0, | 474 DEFUN ("integer-or-marker-p", Finteger_or_marker_p, Sinteger_or_marker_p, 1, 1, 0, |
| 465 "Return t if OBJECT is an integer or a marker (editor pointer).") | 475 doc: /* Return t if OBJECT is an integer or a marker (editor pointer). */) |
| 466 (object) | 476 (object) |
| 467 register Lisp_Object object; | 477 register Lisp_Object object; |
| 468 { | 478 { |
| 469 if (MARKERP (object) || INTEGERP (object)) | 479 if (MARKERP (object) || INTEGERP (object)) |
| 470 return Qt; | 480 return Qt; |
| 471 return Qnil; | 481 return Qnil; |
| 472 } | 482 } |
| 473 | 483 |
| 474 DEFUN ("natnump", Fnatnump, Snatnump, 1, 1, 0, | 484 DEFUN ("natnump", Fnatnump, Snatnump, 1, 1, 0, |
| 475 "Return t if OBJECT is a nonnegative integer.") | 485 doc: /* Return t if OBJECT is a nonnegative integer. */) |
| 476 (object) | 486 (object) |
| 477 Lisp_Object object; | 487 Lisp_Object object; |
| 478 { | 488 { |
| 479 if (NATNUMP (object)) | 489 if (NATNUMP (object)) |
| 480 return Qt; | 490 return Qt; |
| 481 return Qnil; | 491 return Qnil; |
| 482 } | 492 } |
| 483 | 493 |
| 484 DEFUN ("numberp", Fnumberp, Snumberp, 1, 1, 0, | 494 DEFUN ("numberp", Fnumberp, Snumberp, 1, 1, 0, |
| 485 "Return t if OBJECT is a number (floating point or integer).") | 495 doc: /* Return t if OBJECT is a number (floating point or integer). */) |
| 486 (object) | 496 (object) |
| 487 Lisp_Object object; | 497 Lisp_Object object; |
| 488 { | 498 { |
| 489 if (NUMBERP (object)) | 499 if (NUMBERP (object)) |
| 490 return Qt; | 500 return Qt; |
| 491 else | 501 else |
| 492 return Qnil; | 502 return Qnil; |
| 493 } | 503 } |
| 494 | 504 |
| 495 DEFUN ("number-or-marker-p", Fnumber_or_marker_p, | 505 DEFUN ("number-or-marker-p", Fnumber_or_marker_p, |
| 496 Snumber_or_marker_p, 1, 1, 0, | 506 Snumber_or_marker_p, 1, 1, 0, |
| 497 "Return t if OBJECT is a number or a marker.") | 507 doc: /* Return t if OBJECT is a number or a marker. */) |
| 498 (object) | 508 (object) |
| 499 Lisp_Object object; | 509 Lisp_Object object; |
| 500 { | 510 { |
| 501 if (NUMBERP (object) || MARKERP (object)) | 511 if (NUMBERP (object) || MARKERP (object)) |
| 502 return Qt; | 512 return Qt; |
| 503 return Qnil; | 513 return Qnil; |
| 504 } | 514 } |
| 505 | 515 |
| 506 DEFUN ("floatp", Ffloatp, Sfloatp, 1, 1, 0, | 516 DEFUN ("floatp", Ffloatp, Sfloatp, 1, 1, 0, |
| 507 "Return t if OBJECT is a floating point number.") | 517 doc: /* Return t if OBJECT is a floating point number. */) |
| 508 (object) | 518 (object) |
| 509 Lisp_Object object; | 519 Lisp_Object object; |
| 510 { | 520 { |
| 511 if (FLOATP (object)) | 521 if (FLOATP (object)) |
| 512 return Qt; | 522 return Qt; |
| 513 return Qnil; | 523 return Qnil; |
| 515 | 525 |
| 516 | 526 |
| 517 /* Extract and set components of lists */ | 527 /* Extract and set components of lists */ |
| 518 | 528 |
| 519 DEFUN ("car", Fcar, Scar, 1, 1, 0, | 529 DEFUN ("car", Fcar, Scar, 1, 1, 0, |
| 520 "Return the car of LIST. If arg is nil, return nil.\n\ | 530 doc: /* Return the car of LIST. If arg is nil, return nil. |
| 521 Error if arg is not nil and not a cons cell. See also `car-safe'.") | 531 Error if arg is not nil and not a cons cell. See also `car-safe'. */) |
| 522 (list) | 532 (list) |
| 523 register Lisp_Object list; | 533 register Lisp_Object list; |
| 524 { | 534 { |
| 525 while (1) | 535 while (1) |
| 526 { | 536 { |
| 527 if (CONSP (list)) | 537 if (CONSP (list)) |
| 532 list = wrong_type_argument (Qlistp, list); | 542 list = wrong_type_argument (Qlistp, list); |
| 533 } | 543 } |
| 534 } | 544 } |
| 535 | 545 |
| 536 DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0, | 546 DEFUN ("car-safe", Fcar_safe, Scar_safe, 1, 1, 0, |
| 537 "Return the car of OBJECT if it is a cons cell, or else nil.") | 547 doc: /* Return the car of OBJECT if it is a cons cell, or else nil. */) |
| 538 (object) | 548 (object) |
| 539 Lisp_Object object; | 549 Lisp_Object object; |
| 540 { | 550 { |
| 541 if (CONSP (object)) | 551 if (CONSP (object)) |
| 542 return XCAR (object); | 552 return XCAR (object); |
| 543 else | 553 else |
| 544 return Qnil; | 554 return Qnil; |
| 545 } | 555 } |
| 546 | 556 |
| 547 DEFUN ("cdr", Fcdr, Scdr, 1, 1, 0, | 557 DEFUN ("cdr", Fcdr, Scdr, 1, 1, 0, |
| 548 "Return the cdr of LIST. If arg is nil, return nil.\n\ | 558 doc: /* Return the cdr of LIST. If arg is nil, return nil. |
| 549 Error if arg is not nil and not a cons cell. See also `cdr-safe'.") | 559 Error if arg is not nil and not a cons cell. See also `cdr-safe'. */) |
| 550 | 560 (list) |
| 551 (list) | |
| 552 register Lisp_Object list; | 561 register Lisp_Object list; |
| 553 { | 562 { |
| 554 while (1) | 563 while (1) |
| 555 { | 564 { |
| 556 if (CONSP (list)) | 565 if (CONSP (list)) |
| 561 list = wrong_type_argument (Qlistp, list); | 570 list = wrong_type_argument (Qlistp, list); |
| 562 } | 571 } |
| 563 } | 572 } |
| 564 | 573 |
| 565 DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0, | 574 DEFUN ("cdr-safe", Fcdr_safe, Scdr_safe, 1, 1, 0, |
| 566 "Return the cdr of OBJECT if it is a cons cell, or else nil.") | 575 doc: /* Return the cdr of OBJECT if it is a cons cell, or else nil. */) |
| 567 (object) | 576 (object) |
| 568 Lisp_Object object; | 577 Lisp_Object object; |
| 569 { | 578 { |
| 570 if (CONSP (object)) | 579 if (CONSP (object)) |
| 571 return XCDR (object); | 580 return XCDR (object); |
| 572 else | 581 else |
| 573 return Qnil; | 582 return Qnil; |
| 574 } | 583 } |
| 575 | 584 |
| 576 DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0, | 585 DEFUN ("setcar", Fsetcar, Ssetcar, 2, 2, 0, |
| 577 "Set the car of CELL to be NEWCAR. Returns NEWCAR.") | 586 doc: /* Set the car of CELL to be NEWCAR. Returns NEWCAR. */) |
| 578 (cell, newcar) | 587 (cell, newcar) |
| 579 register Lisp_Object cell, newcar; | 588 register Lisp_Object cell, newcar; |
| 580 { | 589 { |
| 581 if (!CONSP (cell)) | 590 if (!CONSP (cell)) |
| 582 cell = wrong_type_argument (Qconsp, cell); | 591 cell = wrong_type_argument (Qconsp, cell); |
| 583 | 592 |
| 585 XSETCAR (cell, newcar); | 594 XSETCAR (cell, newcar); |
| 586 return newcar; | 595 return newcar; |
| 587 } | 596 } |
| 588 | 597 |
| 589 DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0, | 598 DEFUN ("setcdr", Fsetcdr, Ssetcdr, 2, 2, 0, |
| 590 "Set the cdr of CELL to be NEWCDR. Returns NEWCDR.") | 599 doc: /* Set the cdr of CELL to be NEWCDR. Returns NEWCDR. */) |
| 591 (cell, newcdr) | 600 (cell, newcdr) |
| 592 register Lisp_Object cell, newcdr; | 601 register Lisp_Object cell, newcdr; |
| 593 { | 602 { |
| 594 if (!CONSP (cell)) | 603 if (!CONSP (cell)) |
| 595 cell = wrong_type_argument (Qconsp, cell); | 604 cell = wrong_type_argument (Qconsp, cell); |
| 596 | 605 |
| 599 return newcdr; | 608 return newcdr; |
| 600 } | 609 } |
| 601 | 610 |
| 602 /* Extract and set components of symbols */ | 611 /* Extract and set components of symbols */ |
| 603 | 612 |
| 604 DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, "Return t if SYMBOL's value is not void.") | 613 DEFUN ("boundp", Fboundp, Sboundp, 1, 1, 0, |
| 605 (symbol) | 614 doc: /* Return t if SYMBOL's value is not void. */) |
| 615 (symbol) | |
| 606 register Lisp_Object symbol; | 616 register Lisp_Object symbol; |
| 607 { | 617 { |
| 608 Lisp_Object valcontents; | 618 Lisp_Object valcontents; |
| 609 CHECK_SYMBOL (symbol, 0); | 619 CHECK_SYMBOL (symbol, 0); |
| 610 | 620 |
| 615 valcontents = swap_in_symval_forwarding (symbol, valcontents); | 625 valcontents = swap_in_symval_forwarding (symbol, valcontents); |
| 616 | 626 |
| 617 return (EQ (valcontents, Qunbound) ? Qnil : Qt); | 627 return (EQ (valcontents, Qunbound) ? Qnil : Qt); |
| 618 } | 628 } |
| 619 | 629 |
| 620 DEFUN ("fboundp", Ffboundp, Sfboundp, 1, 1, 0, "Return t if SYMBOL's function definition is not void.") | 630 DEFUN ("fboundp", Ffboundp, Sfboundp, 1, 1, 0, |
| 621 (symbol) | 631 doc: /* Return t if SYMBOL's function definition is not void. */) |
| 632 (symbol) | |
| 622 register Lisp_Object symbol; | 633 register Lisp_Object symbol; |
| 623 { | 634 { |
| 624 CHECK_SYMBOL (symbol, 0); | 635 CHECK_SYMBOL (symbol, 0); |
| 625 return (EQ (XSYMBOL (symbol)->function, Qunbound) ? Qnil : Qt); | 636 return (EQ (XSYMBOL (symbol)->function, Qunbound) ? Qnil : Qt); |
| 626 } | 637 } |
| 627 | 638 |
| 628 DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0, "Make SYMBOL's value be void.") | 639 DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0, |
| 629 (symbol) | 640 doc: /* Make SYMBOL's value be void. */) |
| 641 (symbol) | |
| 630 register Lisp_Object symbol; | 642 register Lisp_Object symbol; |
| 631 { | 643 { |
| 632 CHECK_SYMBOL (symbol, 0); | 644 CHECK_SYMBOL (symbol, 0); |
| 633 if (XSYMBOL (symbol)->constant) | 645 if (XSYMBOL (symbol)->constant) |
| 634 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); | 646 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
| 635 Fset (symbol, Qunbound); | 647 Fset (symbol, Qunbound); |
| 636 return symbol; | 648 return symbol; |
| 637 } | 649 } |
| 638 | 650 |
| 639 DEFUN ("fmakunbound", Ffmakunbound, Sfmakunbound, 1, 1, 0, "Make SYMBOL's function definition be void.") | 651 DEFUN ("fmakunbound", Ffmakunbound, Sfmakunbound, 1, 1, 0, |
| 640 (symbol) | 652 doc: /* Make SYMBOL's function definition be void. */) |
| 653 (symbol) | |
| 641 register Lisp_Object symbol; | 654 register Lisp_Object symbol; |
| 642 { | 655 { |
| 643 CHECK_SYMBOL (symbol, 0); | 656 CHECK_SYMBOL (symbol, 0); |
| 644 if (NILP (symbol) || EQ (symbol, Qt)) | 657 if (NILP (symbol) || EQ (symbol, Qt)) |
| 645 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); | 658 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
| 646 XSYMBOL (symbol)->function = Qunbound; | 659 XSYMBOL (symbol)->function = Qunbound; |
| 647 return symbol; | 660 return symbol; |
| 648 } | 661 } |
| 649 | 662 |
| 650 DEFUN ("symbol-function", Fsymbol_function, Ssymbol_function, 1, 1, 0, | 663 DEFUN ("symbol-function", Fsymbol_function, Ssymbol_function, 1, 1, 0, |
| 651 "Return SYMBOL's function definition. Error if that is void.") | 664 doc: /* Return SYMBOL's function definition. Error if that is void. */) |
| 652 (symbol) | 665 (symbol) |
| 653 register Lisp_Object symbol; | 666 register Lisp_Object symbol; |
| 654 { | 667 { |
| 655 CHECK_SYMBOL (symbol, 0); | 668 CHECK_SYMBOL (symbol, 0); |
| 656 if (EQ (XSYMBOL (symbol)->function, Qunbound)) | 669 if (EQ (XSYMBOL (symbol)->function, Qunbound)) |
| 657 return Fsignal (Qvoid_function, Fcons (symbol, Qnil)); | 670 return Fsignal (Qvoid_function, Fcons (symbol, Qnil)); |
| 658 return XSYMBOL (symbol)->function; | 671 return XSYMBOL (symbol)->function; |
| 659 } | 672 } |
| 660 | 673 |
| 661 DEFUN ("symbol-plist", Fsymbol_plist, Ssymbol_plist, 1, 1, 0, "Return SYMBOL's property list.") | 674 DEFUN ("symbol-plist", Fsymbol_plist, Ssymbol_plist, 1, 1, 0, |
| 662 (symbol) | 675 doc: /* Return SYMBOL's property list. */) |
| 676 (symbol) | |
| 663 register Lisp_Object symbol; | 677 register Lisp_Object symbol; |
| 664 { | 678 { |
| 665 CHECK_SYMBOL (symbol, 0); | 679 CHECK_SYMBOL (symbol, 0); |
| 666 return XSYMBOL (symbol)->plist; | 680 return XSYMBOL (symbol)->plist; |
| 667 } | 681 } |
| 668 | 682 |
| 669 DEFUN ("symbol-name", Fsymbol_name, Ssymbol_name, 1, 1, 0, "Return SYMBOL's name, a string.") | 683 DEFUN ("symbol-name", Fsymbol_name, Ssymbol_name, 1, 1, 0, |
| 670 (symbol) | 684 doc: /* Return SYMBOL's name, a string. */) |
| 685 (symbol) | |
| 671 register Lisp_Object symbol; | 686 register Lisp_Object symbol; |
| 672 { | 687 { |
| 673 register Lisp_Object name; | 688 register Lisp_Object name; |
| 674 | 689 |
| 675 CHECK_SYMBOL (symbol, 0); | 690 CHECK_SYMBOL (symbol, 0); |
| 676 XSETSTRING (name, XSYMBOL (symbol)->name); | 691 XSETSTRING (name, XSYMBOL (symbol)->name); |
| 677 return name; | 692 return name; |
| 678 } | 693 } |
| 679 | 694 |
| 680 DEFUN ("fset", Ffset, Sfset, 2, 2, 0, | 695 DEFUN ("fset", Ffset, Sfset, 2, 2, 0, |
| 681 "Set SYMBOL's function definition to DEFINITION, and return DEFINITION.") | 696 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. */) |
| 682 (symbol, definition) | 697 (symbol, definition) |
| 683 register Lisp_Object symbol, definition; | 698 register Lisp_Object symbol, definition; |
| 684 { | 699 { |
| 685 CHECK_SYMBOL (symbol, 0); | 700 CHECK_SYMBOL (symbol, 0); |
| 686 if (NILP (symbol) || EQ (symbol, Qt)) | 701 if (NILP (symbol) || EQ (symbol, Qt)) |
| 687 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); | 702 return Fsignal (Qsetting_constant, Fcons (symbol, Qnil)); |
| 697 } | 712 } |
| 698 return definition; | 713 return definition; |
| 699 } | 714 } |
| 700 | 715 |
| 701 DEFUN ("defalias", Fdefalias, Sdefalias, 2, 2, 0, | 716 DEFUN ("defalias", Fdefalias, Sdefalias, 2, 2, 0, |
| 702 "Set SYMBOL's function definition to DEFINITION, and return DEFINITION.\n\ | 717 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. |
| 703 Associates the function with the current load file, if any.") | 718 Associates the function with the current load file, if any. */) |
| 704 (symbol, definition) | 719 (symbol, definition) |
| 705 register Lisp_Object symbol, definition; | 720 register Lisp_Object symbol, definition; |
| 706 { | 721 { |
| 707 definition = Ffset (symbol, definition); | 722 definition = Ffset (symbol, definition); |
| 708 LOADHIST_ATTACH (symbol); | 723 LOADHIST_ATTACH (symbol); |
| 709 return definition; | 724 return definition; |
| 710 } | 725 } |
| 711 | 726 |
| 712 DEFUN ("setplist", Fsetplist, Ssetplist, 2, 2, 0, | 727 DEFUN ("setplist", Fsetplist, Ssetplist, 2, 2, 0, |
| 713 "Set SYMBOL's property list to NEWVAL, and return NEWVAL.") | 728 doc: /* Set SYMBOL's property list to NEWVAL, and return NEWVAL. */) |
| 714 (symbol, newplist) | 729 (symbol, newplist) |
| 715 register Lisp_Object symbol, newplist; | 730 register Lisp_Object symbol, newplist; |
| 716 { | 731 { |
| 717 CHECK_SYMBOL (symbol, 0); | 732 CHECK_SYMBOL (symbol, 0); |
| 718 XSYMBOL (symbol)->plist = newplist; | 733 XSYMBOL (symbol)->plist = newplist; |
| 719 return newplist; | 734 return newplist; |
| 720 } | 735 } |
| 721 | 736 |
| 722 DEFUN ("subr-arity", Fsubr_arity, Ssubr_arity, 1, 1, 0, | 737 DEFUN ("subr-arity", Fsubr_arity, Ssubr_arity, 1, 1, 0, |
| 723 "Return minimum and maximum number of args allowed for SUBR.\n\ | 738 doc: /* Return minimum and maximum number of args allowed for SUBR. |
| 724 SUBR must be a built-in function.\n\ | 739 SUBR must be a built-in function. |
| 725 The returned value is a pair (MIN . MAX). MIN is the minimum number\n\ | 740 The returned value is a pair (MIN . MAX). MIN is the minimum number |
| 726 of args. MAX is the maximum number or the symbol `many', for a\n\ | 741 of args. MAX is the maximum number or the symbol `many', for a |
| 727 function with `&rest' args, or `unevalled' for a special form.") | 742 function with `&rest' args, or `unevalled' for a special form. */) |
| 728 (subr) | 743 (subr) |
| 729 Lisp_Object subr; | 744 Lisp_Object subr; |
| 730 { | 745 { |
| 731 short minargs, maxargs; | 746 short minargs, maxargs; |
| 732 if (!SUBRP (subr)) | 747 if (!SUBRP (subr)) |
| 733 wrong_type_argument (Qsubrp, subr); | 748 wrong_type_argument (Qsubrp, subr); |
| 740 else | 755 else |
| 741 return Fcons (make_number (minargs), make_number (maxargs)); | 756 return Fcons (make_number (minargs), make_number (maxargs)); |
| 742 } | 757 } |
| 743 | 758 |
| 744 DEFUN ("subr-interactive-form", Fsubr_interactive_form, Ssubr_interactive_form, 1, 1, 0, | 759 DEFUN ("subr-interactive-form", Fsubr_interactive_form, Ssubr_interactive_form, 1, 1, 0, |
| 745 "Return the interactive form of SUBR or nil if none.\n\ | 760 doc: /* Return the interactive form of SUBR or nil if none. |
| 746 SUBR must be a built-in function. Value, if non-nil, is a list\n\ | 761 SUBR must be a built-in function. Value, if non-nil, is a list |
| 747 \(interactive SPEC).") | 762 \(interactive SPEC). */) |
| 748 (subr) | 763 (subr) |
| 749 Lisp_Object subr; | 764 Lisp_Object subr; |
| 750 { | 765 { |
| 751 if (!SUBRP (subr)) | 766 if (!SUBRP (subr)) |
| 752 wrong_type_argument (Qsubrp, subr); | 767 wrong_type_argument (Qsubrp, subr); |
| 753 if (XSUBR (subr)->prompt) | 768 if (XSUBR (subr)->prompt) |
| 788 return hare; | 803 return hare; |
| 789 } | 804 } |
| 790 | 805 |
| 791 | 806 |
| 792 DEFUN ("indirect-variable", Findirect_variable, Sindirect_variable, 1, 1, 0, | 807 DEFUN ("indirect-variable", Findirect_variable, Sindirect_variable, 1, 1, 0, |
| 793 "Return the variable at the end of OBJECT's variable chain.\n\ | 808 doc: /* Return the variable at the end of OBJECT's variable chain. |
| 794 If OBJECT is a symbol, follow all variable indirections and return the final\n\ | 809 If OBJECT is a symbol, follow all variable indirections and return the final |
| 795 variable. If OBJECT is not a symbol, just return it.\n\ | 810 variable. If OBJECT is not a symbol, just return it. |
| 796 Signal a cyclic-variable-indirection error if there is a loop in the\n\ | 811 Signal a cyclic-variable-indirection error if there is a loop in the |
| 797 variable chain of symbols.") | 812 variable chain of symbols. */) |
| 798 (object) | 813 (object) |
| 799 Lisp_Object object; | 814 Lisp_Object object; |
| 800 { | 815 { |
| 801 if (SYMBOLP (object)) | 816 if (SYMBOLP (object)) |
| 802 object = indirect_variable (object); | 817 object = indirect_variable (object); |
| 803 return object; | 818 return object; |
| 1047 | 1062 |
| 1048 return valcontents; | 1063 return valcontents; |
| 1049 } | 1064 } |
| 1050 | 1065 |
| 1051 DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, | 1066 DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, |
| 1052 "Return SYMBOL's value. Error if that is void.") | 1067 doc: /* Return SYMBOL's value. Error if that is void. */) |
| 1053 (symbol) | 1068 (symbol) |
| 1054 Lisp_Object symbol; | 1069 Lisp_Object symbol; |
| 1055 { | 1070 { |
| 1056 Lisp_Object val; | 1071 Lisp_Object val; |
| 1057 | 1072 |
| 1058 val = find_symbol_value (symbol); | 1073 val = find_symbol_value (symbol); |
| 1061 else | 1076 else |
| 1062 return val; | 1077 return val; |
| 1063 } | 1078 } |
| 1064 | 1079 |
| 1065 DEFUN ("set", Fset, Sset, 2, 2, 0, | 1080 DEFUN ("set", Fset, Sset, 2, 2, 0, |
| 1066 "Set SYMBOL's value to NEWVAL, and return NEWVAL.") | 1081 doc: /* Set SYMBOL's value to NEWVAL, and return NEWVAL. */) |
| 1067 (symbol, newval) | 1082 (symbol, newval) |
| 1068 register Lisp_Object symbol, newval; | 1083 register Lisp_Object symbol, newval; |
| 1069 { | 1084 { |
| 1070 return set_internal (symbol, newval, current_buffer, 0); | 1085 return set_internal (symbol, newval, current_buffer, 0); |
| 1071 } | 1086 } |
| 1072 | 1087 |
| 1292 /* For other variables, get the current value. */ | 1307 /* For other variables, get the current value. */ |
| 1293 return do_symval_forwarding (valcontents); | 1308 return do_symval_forwarding (valcontents); |
| 1294 } | 1309 } |
| 1295 | 1310 |
| 1296 DEFUN ("default-boundp", Fdefault_boundp, Sdefault_boundp, 1, 1, 0, | 1311 DEFUN ("default-boundp", Fdefault_boundp, Sdefault_boundp, 1, 1, 0, |
| 1297 "Return t if SYMBOL has a non-void default value.\n\ | 1312 doc: /* Return t if SYMBOL has a non-void default value. |
| 1298 This is the value that is seen in buffers that do not have their own values\n\ | 1313 This is the value that is seen in buffers that do not have their own values |
| 1299 for this variable.") | 1314 for this variable. */) |
| 1300 (symbol) | 1315 (symbol) |
| 1301 Lisp_Object symbol; | 1316 Lisp_Object symbol; |
| 1302 { | 1317 { |
| 1303 register Lisp_Object value; | 1318 register Lisp_Object value; |
| 1304 | 1319 |
| 1305 value = default_value (symbol); | 1320 value = default_value (symbol); |
| 1306 return (EQ (value, Qunbound) ? Qnil : Qt); | 1321 return (EQ (value, Qunbound) ? Qnil : Qt); |
| 1307 } | 1322 } |
| 1308 | 1323 |
| 1309 DEFUN ("default-value", Fdefault_value, Sdefault_value, 1, 1, 0, | 1324 DEFUN ("default-value", Fdefault_value, Sdefault_value, 1, 1, 0, |
| 1310 "Return SYMBOL's default value.\n\ | 1325 doc: /* Return SYMBOL's default value. |
| 1311 This is the value that is seen in buffers that do not have their own values\n\ | 1326 This is the value that is seen in buffers that do not have their own values |
| 1312 for this variable. The default value is meaningful for variables with\n\ | 1327 for this variable. The default value is meaningful for variables with |
| 1313 local bindings in certain buffers.") | 1328 local bindings in certain buffers. */) |
| 1314 (symbol) | 1329 (symbol) |
| 1315 Lisp_Object symbol; | 1330 Lisp_Object symbol; |
| 1316 { | 1331 { |
| 1317 register Lisp_Object value; | 1332 register Lisp_Object value; |
| 1318 | 1333 |
| 1319 value = default_value (symbol); | 1334 value = default_value (symbol); |
| 1321 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); | 1336 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
| 1322 return value; | 1337 return value; |
| 1323 } | 1338 } |
| 1324 | 1339 |
| 1325 DEFUN ("set-default", Fset_default, Sset_default, 2, 2, 0, | 1340 DEFUN ("set-default", Fset_default, Sset_default, 2, 2, 0, |
| 1326 "Set SYMBOL's default value to VAL. SYMBOL and VAL are evaluated.\n\ | 1341 doc: /* Set SYMBOL's default value to VAL. SYMBOL and VAL are evaluated. |
| 1327 The default value is seen in buffers that do not have their own values\n\ | 1342 The default value is seen in buffers that do not have their own values |
| 1328 for this variable.") | 1343 for this variable. */) |
| 1329 (symbol, value) | 1344 (symbol, value) |
| 1330 Lisp_Object symbol, value; | 1345 Lisp_Object symbol, value; |
| 1331 { | 1346 { |
| 1332 register Lisp_Object valcontents, current_alist_element, alist_element_buffer; | 1347 register Lisp_Object valcontents, current_alist_element, alist_element_buffer; |
| 1333 | 1348 |
| 1334 CHECK_SYMBOL (symbol, 0); | 1349 CHECK_SYMBOL (symbol, 0); |
| 1375 | 1390 |
| 1376 return value; | 1391 return value; |
| 1377 } | 1392 } |
| 1378 | 1393 |
| 1379 DEFUN ("setq-default", Fsetq_default, Ssetq_default, 2, UNEVALLED, 0, | 1394 DEFUN ("setq-default", Fsetq_default, Ssetq_default, 2, UNEVALLED, 0, |
| 1380 "Set the default value of variable VAR to VALUE.\n\ | 1395 doc: /* Set the default value of variable VAR to VALUE. |
| 1381 VAR, the variable name, is literal (not evaluated);\n\ | 1396 VAR, the variable name, is literal (not evaluated); |
| 1382 VALUE is an expression and it is evaluated.\n\ | 1397 VALUE is an expression and it is evaluated. |
| 1383 The default value of a variable is seen in buffers\n\ | 1398 The default value of a variable is seen in buffers |
| 1384 that do not have their own values for the variable.\n\ | 1399 that do not have their own values for the variable. |
| 1385 \n\ | 1400 |
| 1386 More generally, you can use multiple variables and values, as in\n\ | 1401 More generally, you can use multiple variables and values, as in |
| 1387 (setq-default SYMBOL VALUE SYMBOL VALUE...)\n\ | 1402 (setq-default SYMBOL VALUE SYMBOL VALUE...) |
| 1388 This sets each SYMBOL's default value to the corresponding VALUE.\n\ | 1403 This sets each SYMBOL's default value to the corresponding VALUE. |
| 1389 The VALUE for the Nth SYMBOL can refer to the new default values\n\ | 1404 The VALUE for the Nth SYMBOL can refer to the new default values |
| 1390 of previous SYMs.") | 1405 of previous SYMs. */) |
| 1391 (args) | 1406 (args) |
| 1392 Lisp_Object args; | 1407 Lisp_Object args; |
| 1393 { | 1408 { |
| 1394 register Lisp_Object args_left; | 1409 register Lisp_Object args_left; |
| 1395 register Lisp_Object val, symbol; | 1410 register Lisp_Object val, symbol; |
| 1396 struct gcpro gcpro1; | 1411 struct gcpro gcpro1; |
| 1415 } | 1430 } |
| 1416 | 1431 |
| 1417 /* Lisp functions for creating and removing buffer-local variables. */ | 1432 /* Lisp functions for creating and removing buffer-local variables. */ |
| 1418 | 1433 |
| 1419 DEFUN ("make-variable-buffer-local", Fmake_variable_buffer_local, Smake_variable_buffer_local, | 1434 DEFUN ("make-variable-buffer-local", Fmake_variable_buffer_local, Smake_variable_buffer_local, |
| 1420 1, 1, "vMake Variable Buffer Local: ", | 1435 1, 1, "vMake Variable Buffer Local: ", |
| 1421 "Make VARIABLE become buffer-local whenever it is set.\n\ | 1436 doc: /* Make VARIABLE become buffer-local whenever it is set. |
| 1422 At any time, the value for the current buffer is in effect,\n\ | 1437 At any time, the value for the current buffer is in effect, |
| 1423 unless the variable has never been set in this buffer,\n\ | 1438 unless the variable has never been set in this buffer, |
| 1424 in which case the default value is in effect.\n\ | 1439 in which case the default value is in effect. |
| 1425 Note that binding the variable with `let', or setting it while\n\ | 1440 Note that binding the variable with `let', or setting it while |
| 1426 a `let'-style binding made in this buffer is in effect,\n\ | 1441 a `let'-style binding made in this buffer is in effect, |
| 1427 does not make the variable buffer-local.\n\ | 1442 does not make the variable buffer-local. |
| 1428 \n\ | 1443 |
| 1429 The function `default-value' gets the default value and `set-default' sets it.") | 1444 The function `default-value' gets the default value and `set-default' sets it. */) |
| 1430 (variable) | 1445 (variable) |
| 1431 register Lisp_Object variable; | 1446 register Lisp_Object variable; |
| 1432 { | 1447 { |
| 1433 register Lisp_Object tem, valcontents, newval; | 1448 register Lisp_Object tem, valcontents, newval; |
| 1434 | 1449 |
| 1435 CHECK_SYMBOL (variable, 0); | 1450 CHECK_SYMBOL (variable, 0); |
| 1461 SET_SYMBOL_VALUE (variable, newval); | 1476 SET_SYMBOL_VALUE (variable, newval); |
| 1462 return variable; | 1477 return variable; |
| 1463 } | 1478 } |
| 1464 | 1479 |
| 1465 DEFUN ("make-local-variable", Fmake_local_variable, Smake_local_variable, | 1480 DEFUN ("make-local-variable", Fmake_local_variable, Smake_local_variable, |
| 1466 1, 1, "vMake Local Variable: ", | 1481 1, 1, "vMake Local Variable: ", |
| 1467 "Make VARIABLE have a separate value in the current buffer.\n\ | 1482 doc: /* Make VARIABLE have a separate value in the current buffer. |
| 1468 Other buffers will continue to share a common default value.\n\ | 1483 Other buffers will continue to share a common default value. |
| 1469 \(The buffer-local value of VARIABLE starts out as the same value\n\ | 1484 \(The buffer-local value of VARIABLE starts out as the same value |
| 1470 VARIABLE previously had. If VARIABLE was void, it remains void.\)\n\ | 1485 VARIABLE previously had. If VARIABLE was void, it remains void.\) |
| 1471 See also `make-variable-buffer-local'.\n\ | 1486 See also `make-variable-buffer-local'. |
| 1472 \n\ | 1487 |
| 1473 If the variable is already arranged to become local when set,\n\ | 1488 If the variable is already arranged to become local when set, |
| 1474 this function causes a local value to exist for this buffer,\n\ | 1489 this function causes a local value to exist for this buffer, |
| 1475 just as setting the variable would do.\n\ | 1490 just as setting the variable would do. |
| 1476 \n\ | 1491 |
| 1477 This function returns VARIABLE, and therefore\n\ | 1492 This function returns VARIABLE, and therefore |
| 1478 (set (make-local-variable 'VARIABLE) VALUE-EXP)\n\ | 1493 (set (make-local-variable 'VARIABLE) VALUE-EXP) |
| 1479 works.\n\ | 1494 works. |
| 1480 \n\ | 1495 |
| 1481 Do not use `make-local-variable' to make a hook variable buffer-local.\n\ | 1496 Do not use `make-local-variable' to make a hook variable buffer-local. |
| 1482 Use `make-local-hook' instead.") | 1497 Use `make-local-hook' instead. */) |
| 1483 (variable) | 1498 (variable) |
| 1484 register Lisp_Object variable; | 1499 register Lisp_Object variable; |
| 1485 { | 1500 { |
| 1486 register Lisp_Object tem, valcontents; | 1501 register Lisp_Object tem, valcontents; |
| 1487 | 1502 |
| 1488 CHECK_SYMBOL (variable, 0); | 1503 CHECK_SYMBOL (variable, 0); |
| 1554 | 1569 |
| 1555 return variable; | 1570 return variable; |
| 1556 } | 1571 } |
| 1557 | 1572 |
| 1558 DEFUN ("kill-local-variable", Fkill_local_variable, Skill_local_variable, | 1573 DEFUN ("kill-local-variable", Fkill_local_variable, Skill_local_variable, |
| 1559 1, 1, "vKill Local Variable: ", | 1574 1, 1, "vKill Local Variable: ", |
| 1560 "Make VARIABLE no longer have a separate value in the current buffer.\n\ | 1575 doc: /* Make VARIABLE no longer have a separate value in the current buffer. |
| 1561 From now on the default value will apply in this buffer.") | 1576 From now on the default value will apply in this buffer. */) |
| 1562 (variable) | 1577 (variable) |
| 1563 register Lisp_Object variable; | 1578 register Lisp_Object variable; |
| 1564 { | 1579 { |
| 1565 register Lisp_Object tem, valcontents; | 1580 register Lisp_Object tem, valcontents; |
| 1566 | 1581 |
| 1567 CHECK_SYMBOL (variable, 0); | 1582 CHECK_SYMBOL (variable, 0); |
| 1612 } | 1627 } |
| 1613 | 1628 |
| 1614 /* Lisp functions for creating and removing buffer-local variables. */ | 1629 /* Lisp functions for creating and removing buffer-local variables. */ |
| 1615 | 1630 |
| 1616 DEFUN ("make-variable-frame-local", Fmake_variable_frame_local, Smake_variable_frame_local, | 1631 DEFUN ("make-variable-frame-local", Fmake_variable_frame_local, Smake_variable_frame_local, |
| 1617 1, 1, "vMake Variable Frame Local: ", | 1632 1, 1, "vMake Variable Frame Local: ", |
| 1618 "Enable VARIABLE to have frame-local bindings.\n\ | 1633 doc: /* Enable VARIABLE to have frame-local bindings. |
| 1619 When a frame-local binding exists in the current frame,\n\ | 1634 When a frame-local binding exists in the current frame, |
| 1620 it is in effect whenever the current buffer has no buffer-local binding.\n\ | 1635 it is in effect whenever the current buffer has no buffer-local binding. |
| 1621 A frame-local binding is actual a frame parameter value;\n\ | 1636 A frame-local binding is actual a frame parameter value; |
| 1622 thus, any given frame has a local binding for VARIABLE\n\ | 1637 thus, any given frame has a local binding for VARIABLE |
| 1623 if it has a value for the frame parameter named VARIABLE.\n\ | 1638 if it has a value for the frame parameter named VARIABLE. |
| 1624 See `modify-frame-parameters'.") | 1639 See `modify-frame-parameters'. */) |
| 1625 (variable) | 1640 (variable) |
| 1626 register Lisp_Object variable; | 1641 register Lisp_Object variable; |
| 1627 { | 1642 { |
| 1628 register Lisp_Object tem, valcontents, newval; | 1643 register Lisp_Object tem, valcontents, newval; |
| 1629 | 1644 |
| 1630 CHECK_SYMBOL (variable, 0); | 1645 CHECK_SYMBOL (variable, 0); |
| 1657 SET_SYMBOL_VALUE (variable, newval); | 1672 SET_SYMBOL_VALUE (variable, newval); |
| 1658 return variable; | 1673 return variable; |
| 1659 } | 1674 } |
| 1660 | 1675 |
| 1661 DEFUN ("local-variable-p", Flocal_variable_p, Slocal_variable_p, | 1676 DEFUN ("local-variable-p", Flocal_variable_p, Slocal_variable_p, |
| 1662 1, 2, 0, | 1677 1, 2, 0, |
| 1663 "Non-nil if VARIABLE has a local binding in buffer BUFFER.\n\ | 1678 doc: /* Non-nil if VARIABLE has a local binding in buffer BUFFER. |
| 1664 BUFFER defaults to the current buffer.") | 1679 BUFFER defaults to the current buffer. */) |
| 1665 (variable, buffer) | 1680 (variable, buffer) |
| 1666 register Lisp_Object variable, buffer; | 1681 register Lisp_Object variable, buffer; |
| 1667 { | 1682 { |
| 1668 Lisp_Object valcontents; | 1683 Lisp_Object valcontents; |
| 1669 register struct buffer *buf; | 1684 register struct buffer *buf; |
| 1670 | 1685 |
| 1701 } | 1716 } |
| 1702 return Qnil; | 1717 return Qnil; |
| 1703 } | 1718 } |
| 1704 | 1719 |
| 1705 DEFUN ("local-variable-if-set-p", Flocal_variable_if_set_p, Slocal_variable_if_set_p, | 1720 DEFUN ("local-variable-if-set-p", Flocal_variable_if_set_p, Slocal_variable_if_set_p, |
| 1706 1, 2, 0, | 1721 1, 2, 0, |
| 1707 "Non-nil if VARIABLE will be local in buffer BUFFER if it is set there.\n\ | 1722 doc: /* Non-nil if VARIABLE will be local in buffer BUFFER if it is set there. |
| 1708 BUFFER defaults to the current buffer.") | 1723 BUFFER defaults to the current buffer. */) |
| 1709 (variable, buffer) | 1724 (variable, buffer) |
| 1710 register Lisp_Object variable, buffer; | 1725 register Lisp_Object variable, buffer; |
| 1711 { | 1726 { |
| 1712 Lisp_Object valcontents; | 1727 Lisp_Object valcontents; |
| 1713 register struct buffer *buf; | 1728 register struct buffer *buf; |
| 1714 | 1729 |
| 1777 | 1792 |
| 1778 return hare; | 1793 return hare; |
| 1779 } | 1794 } |
| 1780 | 1795 |
| 1781 DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 1, 0, | 1796 DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 1, 0, |
| 1782 "Return the function at the end of OBJECT's function chain.\n\ | 1797 doc: /* Return the function at the end of OBJECT's function chain. |
| 1783 If OBJECT is a symbol, follow all function indirections and return the final\n\ | 1798 If OBJECT is a symbol, follow all function indirections and return the final |
| 1784 function binding.\n\ | 1799 function binding. |
| 1785 If OBJECT is not a symbol, just return it.\n\ | 1800 If OBJECT is not a symbol, just return it. |
| 1786 Signal a void-function error if the final symbol is unbound.\n\ | 1801 Signal a void-function error if the final symbol is unbound. |
| 1787 Signal a cyclic-function-indirection error if there is a loop in the\n\ | 1802 Signal a cyclic-function-indirection error if there is a loop in the |
| 1788 function chain of symbols.") | 1803 function chain of symbols. */) |
| 1789 (object) | 1804 (object) |
| 1790 register Lisp_Object object; | 1805 register Lisp_Object object; |
| 1791 { | 1806 { |
| 1792 Lisp_Object result; | 1807 Lisp_Object result; |
| 1793 | 1808 |
| 1794 result = indirect_function (object); | 1809 result = indirect_function (object); |
| 1795 | 1810 |
| 1799 } | 1814 } |
| 1800 | 1815 |
| 1801 /* Extract and set vector and string elements */ | 1816 /* Extract and set vector and string elements */ |
| 1802 | 1817 |
| 1803 DEFUN ("aref", Faref, Saref, 2, 2, 0, | 1818 DEFUN ("aref", Faref, Saref, 2, 2, 0, |
| 1804 "Return the element of ARRAY at index IDX.\n\ | 1819 doc: /* Return the element of ARRAY at index IDX. |
| 1805 ARRAY may be a vector, a string, a char-table, a bool-vector,\n\ | 1820 ARRAY may be a vector, a string, a char-table, a bool-vector, |
| 1806 or a byte-code object. IDX starts at 0.") | 1821 or a byte-code object. IDX starts at 0. */) |
| 1807 (array, idx) | 1822 (array, idx) |
| 1808 register Lisp_Object array; | 1823 register Lisp_Object array; |
| 1809 Lisp_Object idx; | 1824 Lisp_Object idx; |
| 1810 { | 1825 { |
| 1811 register int idxval; | 1826 register int idxval; |
| 1812 | 1827 |
| 1930 we overflow their stack. The value is the same as what used in | 1945 we overflow their stack. The value is the same as what used in |
| 1931 fns.c for base64 handling. */ | 1946 fns.c for base64 handling. */ |
| 1932 #define MAX_ALLOCA 16*1024 | 1947 #define MAX_ALLOCA 16*1024 |
| 1933 | 1948 |
| 1934 DEFUN ("aset", Faset, Saset, 3, 3, 0, | 1949 DEFUN ("aset", Faset, Saset, 3, 3, 0, |
| 1935 "Store into the element of ARRAY at index IDX the value NEWELT.\n\ | 1950 doc: /* Store into the element of ARRAY at index IDX the value NEWELT. |
| 1936 ARRAY may be a vector, a string, a char-table or a bool-vector.\n\ | 1951 ARRAY may be a vector, a string, a char-table or a bool-vector. |
| 1937 IDX starts at 0.") | 1952 IDX starts at 0. */) |
| 1938 (array, idx, newelt) | 1953 (array, idx, newelt) |
| 1939 register Lisp_Object array; | 1954 register Lisp_Object array; |
| 1940 Lisp_Object idx, newelt; | 1955 Lisp_Object idx, newelt; |
| 1941 { | 1956 { |
| 1942 register int idxval; | 1957 register int idxval; |
| 1943 | 1958 |
| 2150 abort (); | 2165 abort (); |
| 2151 } | 2166 } |
| 2152 } | 2167 } |
| 2153 | 2168 |
| 2154 DEFUN ("=", Feqlsign, Seqlsign, 2, 2, 0, | 2169 DEFUN ("=", Feqlsign, Seqlsign, 2, 2, 0, |
| 2155 "Return t if two args, both numbers or markers, are equal.") | 2170 doc: /* Return t if two args, both numbers or markers, are equal. */) |
| 2156 (num1, num2) | 2171 (num1, num2) |
| 2157 register Lisp_Object num1, num2; | 2172 register Lisp_Object num1, num2; |
| 2158 { | 2173 { |
| 2159 return arithcompare (num1, num2, equal); | 2174 return arithcompare (num1, num2, equal); |
| 2160 } | 2175 } |
| 2161 | 2176 |
| 2162 DEFUN ("<", Flss, Slss, 2, 2, 0, | 2177 DEFUN ("<", Flss, Slss, 2, 2, 0, |
| 2163 "Return t if first arg is less than second arg. Both must be numbers or markers.") | 2178 doc: /* Return t if first arg is less than second arg. Both must be numbers or markers. */) |
| 2164 (num1, num2) | 2179 (num1, num2) |
| 2165 register Lisp_Object num1, num2; | 2180 register Lisp_Object num1, num2; |
| 2166 { | 2181 { |
| 2167 return arithcompare (num1, num2, less); | 2182 return arithcompare (num1, num2, less); |
| 2168 } | 2183 } |
| 2169 | 2184 |
| 2170 DEFUN (">", Fgtr, Sgtr, 2, 2, 0, | 2185 DEFUN (">", Fgtr, Sgtr, 2, 2, 0, |
| 2171 "Return t if first arg is greater than second arg. Both must be numbers or markers.") | 2186 doc: /* Return t if first arg is greater than second arg. Both must be numbers or markers. */) |
| 2172 (num1, num2) | 2187 (num1, num2) |
| 2173 register Lisp_Object num1, num2; | 2188 register Lisp_Object num1, num2; |
| 2174 { | 2189 { |
| 2175 return arithcompare (num1, num2, grtr); | 2190 return arithcompare (num1, num2, grtr); |
| 2176 } | 2191 } |
| 2177 | 2192 |
| 2178 DEFUN ("<=", Fleq, Sleq, 2, 2, 0, | 2193 DEFUN ("<=", Fleq, Sleq, 2, 2, 0, |
| 2179 "Return t if first arg is less than or equal to second arg.\n\ | 2194 doc: /* Return t if first arg is less than or equal to second arg. |
| 2180 Both must be numbers or markers.") | 2195 Both must be numbers or markers. */) |
| 2181 (num1, num2) | 2196 (num1, num2) |
| 2182 register Lisp_Object num1, num2; | 2197 register Lisp_Object num1, num2; |
| 2183 { | 2198 { |
| 2184 return arithcompare (num1, num2, less_or_equal); | 2199 return arithcompare (num1, num2, less_or_equal); |
| 2185 } | 2200 } |
| 2186 | 2201 |
| 2187 DEFUN (">=", Fgeq, Sgeq, 2, 2, 0, | 2202 DEFUN (">=", Fgeq, Sgeq, 2, 2, 0, |
| 2188 "Return t if first arg is greater than or equal to second arg.\n\ | 2203 doc: /* Return t if first arg is greater than or equal to second arg. |
| 2189 Both must be numbers or markers.") | 2204 Both must be numbers or markers. */) |
| 2190 (num1, num2) | 2205 (num1, num2) |
| 2191 register Lisp_Object num1, num2; | 2206 register Lisp_Object num1, num2; |
| 2192 { | 2207 { |
| 2193 return arithcompare (num1, num2, grtr_or_equal); | 2208 return arithcompare (num1, num2, grtr_or_equal); |
| 2194 } | 2209 } |
| 2195 | 2210 |
| 2196 DEFUN ("/=", Fneq, Sneq, 2, 2, 0, | 2211 DEFUN ("/=", Fneq, Sneq, 2, 2, 0, |
| 2197 "Return t if first arg is not equal to second arg. Both must be numbers or markers.") | 2212 doc: /* Return t if first arg is not equal to second arg. Both must be numbers or markers. */) |
| 2198 (num1, num2) | 2213 (num1, num2) |
| 2199 register Lisp_Object num1, num2; | 2214 register Lisp_Object num1, num2; |
| 2200 { | 2215 { |
| 2201 return arithcompare (num1, num2, notequal); | 2216 return arithcompare (num1, num2, notequal); |
| 2202 } | 2217 } |
| 2203 | 2218 |
| 2204 DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, "Return t if NUMBER is zero.") | 2219 DEFUN ("zerop", Fzerop, Szerop, 1, 1, 0, |
| 2205 (number) | 2220 doc: /* Return t if NUMBER is zero. */) |
| 2221 (number) | |
| 2206 register Lisp_Object number; | 2222 register Lisp_Object number; |
| 2207 { | 2223 { |
| 2208 CHECK_NUMBER_OR_FLOAT (number, 0); | 2224 CHECK_NUMBER_OR_FLOAT (number, 0); |
| 2209 | 2225 |
| 2210 if (FLOATP (number)) | 2226 if (FLOATP (number)) |
| 2247 bot = XCAR (bot); | 2263 bot = XCAR (bot); |
| 2248 return ((XINT (top) << 16) | XINT (bot)); | 2264 return ((XINT (top) << 16) | XINT (bot)); |
| 2249 } | 2265 } |
| 2250 | 2266 |
| 2251 DEFUN ("number-to-string", Fnumber_to_string, Snumber_to_string, 1, 1, 0, | 2267 DEFUN ("number-to-string", Fnumber_to_string, Snumber_to_string, 1, 1, 0, |
| 2252 "Convert NUMBER to a string by printing it in decimal.\n\ | 2268 doc: /* Convert NUMBER to a string by printing it in decimal. |
| 2253 Uses a minus sign if negative.\n\ | 2269 Uses a minus sign if negative. |
| 2254 NUMBER may be an integer or a floating point number.") | 2270 NUMBER may be an integer or a floating point number. */) |
| 2255 (number) | 2271 (number) |
| 2256 Lisp_Object number; | 2272 Lisp_Object number; |
| 2257 { | 2273 { |
| 2258 char buffer[VALBITS]; | 2274 char buffer[VALBITS]; |
| 2259 | 2275 |
| 2260 CHECK_NUMBER_OR_FLOAT (number, 0); | 2276 CHECK_NUMBER_OR_FLOAT (number, 0); |
| 2296 else | 2312 else |
| 2297 return digit; | 2313 return digit; |
| 2298 } | 2314 } |
| 2299 | 2315 |
| 2300 DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, | 2316 DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, |
| 2301 "Convert STRING to a number by parsing it as a decimal number.\n\ | 2317 doc: /* Convert STRING to a number by parsing it as a decimal number. |
| 2302 This parses both integers and floating point numbers.\n\ | 2318 This parses both integers and floating point numbers. |
| 2303 It ignores leading spaces and tabs.\n\ | 2319 It ignores leading spaces and tabs. |
| 2304 \n\ | 2320 |
| 2305 If BASE, interpret STRING as a number in that base. If BASE isn't\n\ | 2321 If BASE, interpret STRING as a number in that base. If BASE isn't |
| 2306 present, base 10 is used. BASE must be between 2 and 16 (inclusive).\n\ | 2322 present, base 10 is used. BASE must be between 2 and 16 (inclusive). |
| 2307 If the base used is not 10, floating point is not recognized.") | 2323 If the base used is not 10, floating point is not recognized. */) |
| 2308 (string, base) | 2324 (string, base) |
| 2309 register Lisp_Object string, base; | 2325 register Lisp_Object string, base; |
| 2310 { | 2326 { |
| 2311 register unsigned char *p; | 2327 register unsigned char *p; |
| 2312 register int b; | 2328 register int b; |
| 2313 int sign = 1; | 2329 int sign = 1; |
| 2529 return make_float (accum); | 2545 return make_float (accum); |
| 2530 } | 2546 } |
| 2531 | 2547 |
| 2532 | 2548 |
| 2533 DEFUN ("+", Fplus, Splus, 0, MANY, 0, | 2549 DEFUN ("+", Fplus, Splus, 0, MANY, 0, |
| 2534 "Return sum of any number of arguments, which are numbers or markers. | 2550 doc: /* Return sum of any number of arguments, which are numbers or markers. |
| 2535 usage: (+ &rest NUMBERS-OR-MARKERS)") | 2551 usage: (+ &rest NUMBERS-OR-MARKERS) */) |
| 2536 (nargs, args) | 2552 (nargs, args) |
| 2537 int nargs; | 2553 int nargs; |
| 2538 Lisp_Object *args; | 2554 Lisp_Object *args; |
| 2539 { | 2555 { |
| 2540 return arith_driver (Aadd, nargs, args); | 2556 return arith_driver (Aadd, nargs, args); |
| 2541 } | 2557 } |
| 2542 | 2558 |
| 2543 DEFUN ("-", Fminus, Sminus, 0, MANY, 0, | 2559 DEFUN ("-", Fminus, Sminus, 0, MANY, 0, |
| 2544 "Negate number or subtract numbers or markers.\n\ | 2560 doc: /* Negate number or subtract numbers or markers. |
| 2545 With one arg, negates it. With more than one arg,\n\ | 2561 With one arg, negates it. With more than one arg, |
| 2546 subtracts all but the first from the first. | 2562 subtracts all but the first from the first. |
| 2547 usage: (- &optional NUMBER-OR-MARKER &rest MORE-NUMBERS-OR-MARKERS)") | 2563 usage: (- &optional NUMBER-OR-MARKER &rest MORE-NUMBERS-OR-MARKERS) */) |
| 2548 (nargs, args) | 2564 (nargs, args) |
| 2549 int nargs; | 2565 int nargs; |
| 2550 Lisp_Object *args; | 2566 Lisp_Object *args; |
| 2551 { | 2567 { |
| 2552 return arith_driver (Asub, nargs, args); | 2568 return arith_driver (Asub, nargs, args); |
| 2553 } | 2569 } |
| 2554 | 2570 |
| 2555 DEFUN ("*", Ftimes, Stimes, 0, MANY, 0, | 2571 DEFUN ("*", Ftimes, Stimes, 0, MANY, 0, |
| 2556 "Returns product of any number of arguments, which are numbers or markers. | 2572 doc: /* Returns product of any number of arguments, which are numbers or markers. |
| 2557 usage: (* &rest NUMBERS-OR-MARKERS)") | 2573 usage: (* &rest NUMBERS-OR-MARKERS) */) |
| 2558 (nargs, args) | 2574 (nargs, args) |
| 2559 int nargs; | 2575 int nargs; |
| 2560 Lisp_Object *args; | 2576 Lisp_Object *args; |
| 2561 { | 2577 { |
| 2562 return arith_driver (Amult, nargs, args); | 2578 return arith_driver (Amult, nargs, args); |
| 2563 } | 2579 } |
| 2564 | 2580 |
| 2565 DEFUN ("/", Fquo, Squo, 2, MANY, 0, | 2581 DEFUN ("/", Fquo, Squo, 2, MANY, 0, |
| 2566 "Returns first argument divided by all the remaining arguments.\n\ | 2582 doc: /* Returns first argument divided by all the remaining arguments. |
| 2567 The arguments must be numbers or markers. | 2583 The arguments must be numbers or markers. |
| 2568 usage: (/ DIVIDEND DIVISOR &rest DIVISORS)") | 2584 usage: (/ DIVIDEND DIVISOR &rest DIVISORS) */) |
| 2569 (nargs, args) | 2585 (nargs, args) |
| 2570 int nargs; | 2586 int nargs; |
| 2571 Lisp_Object *args; | 2587 Lisp_Object *args; |
| 2572 { | 2588 { |
| 2573 return arith_driver (Adiv, nargs, args); | 2589 return arith_driver (Adiv, nargs, args); |
| 2574 } | 2590 } |
| 2575 | 2591 |
| 2576 DEFUN ("%", Frem, Srem, 2, 2, 0, | 2592 DEFUN ("%", Frem, Srem, 2, 2, 0, |
| 2577 "Returns remainder of X divided by Y.\n\ | 2593 doc: /* Returns remainder of X divided by Y. |
| 2578 Both must be integers or markers.") | 2594 Both must be integers or markers. */) |
| 2579 (x, y) | 2595 (x, y) |
| 2580 register Lisp_Object x, y; | 2596 register Lisp_Object x, y; |
| 2581 { | 2597 { |
| 2582 Lisp_Object val; | 2598 Lisp_Object val; |
| 2583 | 2599 |
| 2584 CHECK_NUMBER_COERCE_MARKER (x, 0); | 2600 CHECK_NUMBER_COERCE_MARKER (x, 0); |
| 2613 return r; | 2629 return r; |
| 2614 } | 2630 } |
| 2615 #endif /* ! HAVE_FMOD */ | 2631 #endif /* ! HAVE_FMOD */ |
| 2616 | 2632 |
| 2617 DEFUN ("mod", Fmod, Smod, 2, 2, 0, | 2633 DEFUN ("mod", Fmod, Smod, 2, 2, 0, |
| 2618 "Returns X modulo Y.\n\ | 2634 doc: /* Returns X modulo Y. |
| 2619 The result falls between zero (inclusive) and Y (exclusive).\n\ | 2635 The result falls between zero (inclusive) and Y (exclusive). |
| 2620 Both X and Y must be numbers or markers.") | 2636 Both X and Y must be numbers or markers. */) |
| 2621 (x, y) | 2637 (x, y) |
| 2622 register Lisp_Object x, y; | 2638 register Lisp_Object x, y; |
| 2623 { | 2639 { |
| 2624 Lisp_Object val; | 2640 Lisp_Object val; |
| 2625 EMACS_INT i1, i2; | 2641 EMACS_INT i1, i2; |
| 2626 | 2642 |
| 2645 XSETINT (val, i1); | 2661 XSETINT (val, i1); |
| 2646 return val; | 2662 return val; |
| 2647 } | 2663 } |
| 2648 | 2664 |
| 2649 DEFUN ("max", Fmax, Smax, 1, MANY, 0, | 2665 DEFUN ("max", Fmax, Smax, 1, MANY, 0, |
| 2650 "Return largest of all the arguments (which must be numbers or markers).\n\ | 2666 doc: /* Return largest of all the arguments (which must be numbers or markers). |
| 2651 The value is always a number; markers are converted to numbers. | 2667 The value is always a number; markers are converted to numbers. |
| 2652 usage: (max NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)") | 2668 usage: (max NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) |
| 2653 (nargs, args) | 2669 (nargs, args) |
| 2654 int nargs; | 2670 int nargs; |
| 2655 Lisp_Object *args; | 2671 Lisp_Object *args; |
| 2656 { | 2672 { |
| 2657 return arith_driver (Amax, nargs, args); | 2673 return arith_driver (Amax, nargs, args); |
| 2658 } | 2674 } |
| 2659 | 2675 |
| 2660 DEFUN ("min", Fmin, Smin, 1, MANY, 0, | 2676 DEFUN ("min", Fmin, Smin, 1, MANY, 0, |
| 2661 "Return smallest of all the arguments (which must be numbers or markers).\n\ | 2677 doc: /* Return smallest of all the arguments (which must be numbers or markers). |
| 2662 The value is always a number; markers are converted to numbers. | 2678 The value is always a number; markers are converted to numbers. |
| 2663 usage: (min NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS)") | 2679 usage: (min NUMBER-OR-MARKER &rest NUMBERS-OR-MARKERS) */) |
| 2664 (nargs, args) | 2680 (nargs, args) |
| 2665 int nargs; | 2681 int nargs; |
| 2666 Lisp_Object *args; | 2682 Lisp_Object *args; |
| 2667 { | 2683 { |
| 2668 return arith_driver (Amin, nargs, args); | 2684 return arith_driver (Amin, nargs, args); |
| 2669 } | 2685 } |
| 2670 | 2686 |
| 2671 DEFUN ("logand", Flogand, Slogand, 0, MANY, 0, | 2687 DEFUN ("logand", Flogand, Slogand, 0, MANY, 0, |
| 2672 "Return bitwise-and of all the arguments.\n\ | 2688 doc: /* Return bitwise-and of all the arguments. |
| 2673 Arguments may be integers, or markers converted to integers. | 2689 Arguments may be integers, or markers converted to integers. |
| 2674 usage: (logand &rest INTS-OR-MARKERS)") | 2690 usage: (logand &rest INTS-OR-MARKERS) */) |
| 2675 (nargs, args) | 2691 (nargs, args) |
| 2676 int nargs; | 2692 int nargs; |
| 2677 Lisp_Object *args; | 2693 Lisp_Object *args; |
| 2678 { | 2694 { |
| 2679 return arith_driver (Alogand, nargs, args); | 2695 return arith_driver (Alogand, nargs, args); |
| 2680 } | 2696 } |
| 2681 | 2697 |
| 2682 DEFUN ("logior", Flogior, Slogior, 0, MANY, 0, | 2698 DEFUN ("logior", Flogior, Slogior, 0, MANY, 0, |
| 2683 "Return bitwise-or of all the arguments.\n\ | 2699 doc: /* Return bitwise-or of all the arguments. |
| 2684 Arguments may be integers, or markers converted to integers. | 2700 Arguments may be integers, or markers converted to integers. |
| 2685 usage: (logior &rest INTS-OR-MARKERS)") | 2701 usage: (logior &rest INTS-OR-MARKERS) */) |
| 2686 (nargs, args) | 2702 (nargs, args) |
| 2687 int nargs; | 2703 int nargs; |
| 2688 Lisp_Object *args; | 2704 Lisp_Object *args; |
| 2689 { | 2705 { |
| 2690 return arith_driver (Alogior, nargs, args); | 2706 return arith_driver (Alogior, nargs, args); |
| 2691 } | 2707 } |
| 2692 | 2708 |
| 2693 DEFUN ("logxor", Flogxor, Slogxor, 0, MANY, 0, | 2709 DEFUN ("logxor", Flogxor, Slogxor, 0, MANY, 0, |
| 2694 "Return bitwise-exclusive-or of all the arguments.\n\ | 2710 doc: /* Return bitwise-exclusive-or of all the arguments. |
| 2695 Arguments may be integers, or markers converted to integers. | 2711 Arguments may be integers, or markers converted to integers. |
| 2696 usage: (logxor &rest INTS-OR-MARKERS)") | 2712 usage: (logxor &rest INTS-OR-MARKERS) */) |
| 2697 (nargs, args) | 2713 (nargs, args) |
| 2698 int nargs; | 2714 int nargs; |
| 2699 Lisp_Object *args; | 2715 Lisp_Object *args; |
| 2700 { | 2716 { |
| 2701 return arith_driver (Alogxor, nargs, args); | 2717 return arith_driver (Alogxor, nargs, args); |
| 2702 } | 2718 } |
| 2703 | 2719 |
| 2704 DEFUN ("ash", Fash, Sash, 2, 2, 0, | 2720 DEFUN ("ash", Fash, Sash, 2, 2, 0, |
| 2705 "Return VALUE with its bits shifted left by COUNT.\n\ | 2721 doc: /* Return VALUE with its bits shifted left by COUNT. |
| 2706 If COUNT is negative, shifting is actually to the right.\n\ | 2722 If COUNT is negative, shifting is actually to the right. |
| 2707 In this case, the sign bit is duplicated.") | 2723 In this case, the sign bit is duplicated. */) |
| 2708 (value, count) | 2724 (value, count) |
| 2709 register Lisp_Object value, count; | 2725 register Lisp_Object value, count; |
| 2710 { | 2726 { |
| 2711 register Lisp_Object val; | 2727 register Lisp_Object val; |
| 2712 | 2728 |
| 2713 CHECK_NUMBER (value, 0); | 2729 CHECK_NUMBER (value, 0); |
| 2723 XSETINT (val, XINT (value) >> -XINT (count)); | 2739 XSETINT (val, XINT (value) >> -XINT (count)); |
| 2724 return val; | 2740 return val; |
| 2725 } | 2741 } |
| 2726 | 2742 |
| 2727 DEFUN ("lsh", Flsh, Slsh, 2, 2, 0, | 2743 DEFUN ("lsh", Flsh, Slsh, 2, 2, 0, |
| 2728 "Return VALUE with its bits shifted left by COUNT.\n\ | 2744 doc: /* Return VALUE with its bits shifted left by COUNT. |
| 2729 If COUNT is negative, shifting is actually to the right.\n\ | 2745 If COUNT is negative, shifting is actually to the right. |
| 2730 In this case, zeros are shifted in on the left.") | 2746 In this case, zeros are shifted in on the left. */) |
| 2731 (value, count) | 2747 (value, count) |
| 2732 register Lisp_Object value, count; | 2748 register Lisp_Object value, count; |
| 2733 { | 2749 { |
| 2734 register Lisp_Object val; | 2750 register Lisp_Object val; |
| 2735 | 2751 |
| 2736 CHECK_NUMBER (value, 0); | 2752 CHECK_NUMBER (value, 0); |
| 2746 XSETINT (val, (EMACS_UINT) XUINT (value) >> -XINT (count)); | 2762 XSETINT (val, (EMACS_UINT) XUINT (value) >> -XINT (count)); |
| 2747 return val; | 2763 return val; |
| 2748 } | 2764 } |
| 2749 | 2765 |
| 2750 DEFUN ("1+", Fadd1, Sadd1, 1, 1, 0, | 2766 DEFUN ("1+", Fadd1, Sadd1, 1, 1, 0, |
| 2751 "Return NUMBER plus one. NUMBER may be a number or a marker.\n\ | 2767 doc: /* Return NUMBER plus one. NUMBER may be a number or a marker. |
| 2752 Markers are converted to integers.") | 2768 Markers are converted to integers. */) |
| 2753 (number) | 2769 (number) |
| 2754 register Lisp_Object number; | 2770 register Lisp_Object number; |
| 2755 { | 2771 { |
| 2756 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0); | 2772 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0); |
| 2757 | 2773 |
| 2758 if (FLOATP (number)) | 2774 if (FLOATP (number)) |
| 2761 XSETINT (number, XINT (number) + 1); | 2777 XSETINT (number, XINT (number) + 1); |
| 2762 return number; | 2778 return number; |
| 2763 } | 2779 } |
| 2764 | 2780 |
| 2765 DEFUN ("1-", Fsub1, Ssub1, 1, 1, 0, | 2781 DEFUN ("1-", Fsub1, Ssub1, 1, 1, 0, |
| 2766 "Return NUMBER minus one. NUMBER may be a number or a marker.\n\ | 2782 doc: /* Return NUMBER minus one. NUMBER may be a number or a marker. |
| 2767 Markers are converted to integers.") | 2783 Markers are converted to integers. */) |
| 2768 (number) | 2784 (number) |
| 2769 register Lisp_Object number; | 2785 register Lisp_Object number; |
| 2770 { | 2786 { |
| 2771 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0); | 2787 CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (number, 0); |
| 2772 | 2788 |
| 2773 if (FLOATP (number)) | 2789 if (FLOATP (number)) |
| 2776 XSETINT (number, XINT (number) - 1); | 2792 XSETINT (number, XINT (number) - 1); |
| 2777 return number; | 2793 return number; |
| 2778 } | 2794 } |
| 2779 | 2795 |
| 2780 DEFUN ("lognot", Flognot, Slognot, 1, 1, 0, | 2796 DEFUN ("lognot", Flognot, Slognot, 1, 1, 0, |
| 2781 "Return the bitwise complement of NUMBER. NUMBER must be an integer.") | 2797 doc: /* Return the bitwise complement of NUMBER. NUMBER must be an integer. */) |
| 2782 (number) | 2798 (number) |
| 2783 register Lisp_Object number; | 2799 register Lisp_Object number; |
| 2784 { | 2800 { |
| 2785 CHECK_NUMBER (number, 0); | 2801 CHECK_NUMBER (number, 0); |
| 2786 XSETINT (number, ~XINT (number)); | 2802 XSETINT (number, ~XINT (number)); |
| 2787 return number; | 2803 return number; |
| 3190 defsubr (&Ssubr_arity); | 3206 defsubr (&Ssubr_arity); |
| 3191 | 3207 |
| 3192 XSYMBOL (Qwholenump)->function = XSYMBOL (Qnatnump)->function; | 3208 XSYMBOL (Qwholenump)->function = XSYMBOL (Qnatnump)->function; |
| 3193 | 3209 |
| 3194 DEFVAR_INT ("most-positive-fixnum", &most_positive_fixnum, | 3210 DEFVAR_INT ("most-positive-fixnum", &most_positive_fixnum, |
| 3195 "The largest value that is representable in a Lisp integer."); | 3211 doc: /* The largest value that is representable in a Lisp integer. */); |
| 3196 most_positive_fixnum = MOST_POSITIVE_FIXNUM; | 3212 most_positive_fixnum = MOST_POSITIVE_FIXNUM; |
| 3197 | 3213 |
| 3198 DEFVAR_INT ("most-negative-fixnum", &most_negative_fixnum, | 3214 DEFVAR_INT ("most-negative-fixnum", &most_negative_fixnum, |
| 3199 "The smallest value that is representable in a Lisp integer."); | 3215 doc: /* The smallest value that is representable in a Lisp integer. */); |
| 3200 most_negative_fixnum = MOST_NEGATIVE_FIXNUM; | 3216 most_negative_fixnum = MOST_NEGATIVE_FIXNUM; |
| 3201 } | 3217 } |
| 3202 | 3218 |
| 3203 SIGTYPE | 3219 SIGTYPE |
| 3204 arith_error (signo) | 3220 arith_error (signo) |
| 3237 | 3253 |
| 3238 #ifdef uts | 3254 #ifdef uts |
| 3239 signal (SIGEMT, arith_error); | 3255 signal (SIGEMT, arith_error); |
| 3240 #endif /* uts */ | 3256 #endif /* uts */ |
| 3241 } | 3257 } |
| 3242 | |
| 3243 |
