Mercurial > vim
comparison src/if_perl.xs @ 502:52e76e2b5b65 v7.0140
updated for version 7.0140
author | vimboss |
---|---|
date | Thu, 01 Sep 2005 20:46:49 +0000 |
parents | 2983cde45542 |
children | 0f9f4761ad9c |
comparison
equal
deleted
inserted
replaced
501:ce2181d14aa0 | 502:52e76e2b5b65 |
---|---|
435 } | 435 } |
436 #endif | 436 #endif |
437 | 437 |
438 /* | 438 /* |
439 * Create a new reference to an SV pointing to the SCR structure | 439 * Create a new reference to an SV pointing to the SCR structure |
440 * The perl_private part of the SCR structure points to the SV, | 440 * The b_perl_private/w_perl_private part of the SCR structure points to the |
441 * so there can only be one such SV for a particular SCR structure. | 441 * SV, so there can only be one such SV for a particular SCR structure. When |
442 * When the last reference has gone (DESTROY is called), | 442 * the last reference has gone (DESTROY is called), |
443 * perl_private is reset; When the screen goes away before | 443 * b_perl_private/w_perl_private is reset; When the screen goes away before |
444 * all references are gone, the value of the SV is reset; | 444 * all references are gone, the value of the SV is reset; |
445 * any subsequent use of any of those reference will produce | 445 * any subsequent use of any of those reference will produce |
446 * a warning. (see typemap) | 446 * a warning. (see typemap) |
447 */ | 447 */ |
448 #define newANYrv(TYPE, TNAME) \ | 448 |
449 static SV * \ | 449 static SV * |
450 new ## TNAME ## rv(rv, ptr) \ | 450 newWINrv(rv, ptr) |
451 SV *rv; \ | 451 SV *rv; |
452 TYPE *ptr; \ | 452 win_T *ptr; |
453 { \ | 453 { |
454 sv_upgrade(rv, SVt_RV); \ | 454 sv_upgrade(rv, SVt_RV); |
455 if (!ptr->perl_private) \ | 455 if (ptr->w_perl_private == NULL) |
456 { \ | 456 { |
457 ptr->perl_private = newSV(0); \ | 457 ptr->w_perl_private = newSV(0); |
458 sv_setiv(ptr->perl_private, (IV)ptr); \ | 458 sv_setiv(ptr->w_perl_private, (IV)ptr); |
459 } \ | 459 } |
460 else \ | 460 else |
461 SvREFCNT_inc(ptr->perl_private); \ | 461 SvREFCNT_inc(ptr->w_perl_private); |
462 SvRV(rv) = ptr->perl_private; \ | 462 SvRV(rv) = ptr->w_perl_private; |
463 SvROK_on(rv); \ | 463 SvROK_on(rv); |
464 return sv_bless(rv, gv_stashpv("VI" #TNAME, TRUE)); \ | 464 return sv_bless(rv, gv_stashpv("VIWIN", TRUE)); |
465 } | 465 } |
466 | 466 |
467 /* LINTED: avoid warning: cast from pointer to integer of different size */ | 467 static SV * |
468 newANYrv(win_T, WIN) | 468 newBUFrv(rv, ptr) |
469 /* LINTED: avoid warning: cast from pointer to integer of different size */ | 469 SV *rv; |
470 newANYrv(buf_T, BUF) | 470 buf_T *ptr; |
471 { | |
472 sv_upgrade(rv, SVt_RV); | |
473 if (ptr->b_perl_private == NULL) | |
474 { | |
475 ptr->b_perl_private = newSV(0); | |
476 sv_setiv(ptr->b_perl_private, (IV)ptr); | |
477 } | |
478 else | |
479 SvREFCNT_inc(ptr->b_perl_private); | |
480 SvRV(rv) = ptr->b_perl_private; | |
481 SvROK_on(rv); | |
482 return sv_bless(rv, gv_stashpv("VIBUF", TRUE)); | |
483 } | |
471 | 484 |
472 /* | 485 /* |
473 * perl_win_free | 486 * perl_win_free |
474 * Remove all refences to the window to be destroyed | 487 * Remove all refences to the window to be destroyed |
475 */ | 488 */ |
476 void | 489 void |
477 perl_win_free(wp) | 490 perl_win_free(wp) |
478 win_T *wp; | 491 win_T *wp; |
479 { | 492 { |
480 if (wp->perl_private) | 493 if (wp->w_perl_private) |
481 sv_setiv((SV *)wp->perl_private, 0); | 494 sv_setiv((SV *)wp->w_perl_private, 0); |
482 return; | 495 return; |
483 } | 496 } |
484 | 497 |
485 void | 498 void |
486 perl_buf_free(bp) | 499 perl_buf_free(bp) |
487 buf_T *bp; | 500 buf_T *bp; |
488 { | 501 { |
489 if (bp->perl_private) | 502 if (bp->b_perl_private) |
490 sv_setiv((SV *)bp->perl_private, 0); | 503 sv_setiv((SV *)bp->b_perl_private, 0); |
491 return; | 504 return; |
492 } | 505 } |
493 | 506 |
494 #ifndef PROTO | 507 #ifndef PROTO |
495 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) | 508 # if (PERL_REVISION == 5) && (PERL_VERSION >= 8) |
913 DESTROY(win) | 926 DESTROY(win) |
914 VIWIN win | 927 VIWIN win |
915 | 928 |
916 CODE: | 929 CODE: |
917 if (win_valid(win)) | 930 if (win_valid(win)) |
918 win->perl_private = 0; | 931 win->w_perl_private = 0; |
919 | 932 |
920 SV * | 933 SV * |
921 Buffer(win) | 934 Buffer(win) |
922 VIWIN win | 935 VIWIN win |
923 | 936 |
977 DESTROY(vimbuf) | 990 DESTROY(vimbuf) |
978 VIBUF vimbuf; | 991 VIBUF vimbuf; |
979 | 992 |
980 CODE: | 993 CODE: |
981 if (buf_valid(vimbuf)) | 994 if (buf_valid(vimbuf)) |
982 vimbuf->perl_private = 0; | 995 vimbuf->b_perl_private = 0; |
983 | 996 |
984 void | 997 void |
985 Name(vimbuf) | 998 Name(vimbuf) |
986 VIBUF vimbuf; | 999 VIBUF vimbuf; |
987 | 1000 |