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