diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/lisp.h b/src/lisp.h index 7178ef01cb1..80d45e2004b 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -600,9 +600,19 @@ struct Lisp_Cons | |||
| 600 | /* Please do not use the names of these elements in code other | 600 | /* Please do not use the names of these elements in code other |
| 601 | than the core lisp implementation. Use XCAR and XCDR below. */ | 601 | than the core lisp implementation. Use XCAR and XCDR below. */ |
| 602 | #ifdef HIDE_LISP_IMPLEMENTATION | 602 | #ifdef HIDE_LISP_IMPLEMENTATION |
| 603 | Lisp_Object car_, cdr_; | 603 | Lisp_Object car_; |
| 604 | union | ||
| 605 | { | ||
| 606 | Lisp_Object cdr_; | ||
| 607 | struct Lisp_Cons *chain; | ||
| 608 | } u; | ||
| 604 | #else | 609 | #else |
| 605 | Lisp_Object car, cdr; | 610 | Lisp_Object car; |
| 611 | union | ||
| 612 | { | ||
| 613 | Lisp_Object cdr; | ||
| 614 | struct Lisp_Cons *chain; | ||
| 615 | } u; | ||
| 606 | #endif | 616 | #endif |
| 607 | }; | 617 | }; |
| 608 | 618 | ||
| @@ -615,10 +625,10 @@ struct Lisp_Cons | |||
| 615 | invalidated at arbitrary points.) */ | 625 | invalidated at arbitrary points.) */ |
| 616 | #ifdef HIDE_LISP_IMPLEMENTATION | 626 | #ifdef HIDE_LISP_IMPLEMENTATION |
| 617 | #define XCAR_AS_LVALUE(c) (XCONS ((c))->car_) | 627 | #define XCAR_AS_LVALUE(c) (XCONS ((c))->car_) |
| 618 | #define XCDR_AS_LVALUE(c) (XCONS ((c))->cdr_) | 628 | #define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr_) |
| 619 | #else | 629 | #else |
| 620 | #define XCAR_AS_LVALUE(c) (XCONS ((c))->car) | 630 | #define XCAR_AS_LVALUE(c) (XCONS ((c))->car) |
| 621 | #define XCDR_AS_LVALUE(c) (XCONS ((c))->cdr) | 631 | #define XCDR_AS_LVALUE(c) (XCONS ((c))->u.cdr) |
| 622 | #endif | 632 | #endif |
| 623 | 633 | ||
| 624 | /* Use these from normal code. */ | 634 | /* Use these from normal code. */ |
| @@ -1275,17 +1285,21 @@ union Lisp_Misc | |||
| 1275 | /* Lisp floating point type */ | 1285 | /* Lisp floating point type */ |
| 1276 | struct Lisp_Float | 1286 | struct Lisp_Float |
| 1277 | { | 1287 | { |
| 1288 | union | ||
| 1289 | { | ||
| 1278 | #ifdef HIDE_LISP_IMPLEMENTATION | 1290 | #ifdef HIDE_LISP_IMPLEMENTATION |
| 1279 | double data_; | 1291 | double data_; |
| 1280 | #else | 1292 | #else |
| 1281 | double data; | 1293 | double data; |
| 1282 | #endif | 1294 | #endif |
| 1295 | struct Lisp_Float *chain; | ||
| 1296 | } u; | ||
| 1283 | }; | 1297 | }; |
| 1284 | 1298 | ||
| 1285 | #ifdef HIDE_LISP_IMPLEMENTATION | 1299 | #ifdef HIDE_LISP_IMPLEMENTATION |
| 1286 | #define XFLOAT_DATA(f) (XFLOAT (f)->data_) | 1300 | #define XFLOAT_DATA(f) (XFLOAT (f)->u.data_) |
| 1287 | #else | 1301 | #else |
| 1288 | #define XFLOAT_DATA(f) (XFLOAT (f)->data) | 1302 | #define XFLOAT_DATA(f) (XFLOAT (f)->u.data) |
| 1289 | #endif | 1303 | #endif |
| 1290 | 1304 | ||
| 1291 | /* A character, declared with the following typedef, is a member | 1305 | /* A character, declared with the following typedef, is a member |