1
0
forked from aniani/vim

updated for version 7.0140

This commit is contained in:
Bram Moolenaar
2005-09-01 20:46:49 +00:00
parent da2303d96b
commit e344bead3e
103 changed files with 3275 additions and 640 deletions

View File

@@ -437,37 +437,50 @@ eval_to_string(arg, nextcmd)
/*
* Create a new reference to an SV pointing to the SCR structure
* The perl_private part of the SCR structure points to the SV,
* so there can only be one such SV for a particular SCR structure.
* When the last reference has gone (DESTROY is called),
* perl_private is reset; When the screen goes away before
* The b_perl_private/w_perl_private part of the SCR structure points to the
* SV, so there can only be one such SV for a particular SCR structure. When
* the last reference has gone (DESTROY is called),
* b_perl_private/w_perl_private is reset; When the screen goes away before
* all references are gone, the value of the SV is reset;
* any subsequent use of any of those reference will produce
* a warning. (see typemap)
*/
#define newANYrv(TYPE, TNAME) \
static SV * \
new ## TNAME ## rv(rv, ptr) \
SV *rv; \
TYPE *ptr; \
{ \
sv_upgrade(rv, SVt_RV); \
if (!ptr->perl_private) \
{ \
ptr->perl_private = newSV(0); \
sv_setiv(ptr->perl_private, (IV)ptr); \
} \
else \
SvREFCNT_inc(ptr->perl_private); \
SvRV(rv) = ptr->perl_private; \
SvROK_on(rv); \
return sv_bless(rv, gv_stashpv("VI" #TNAME, TRUE)); \
static SV *
newWINrv(rv, ptr)
SV *rv;
win_T *ptr;
{
sv_upgrade(rv, SVt_RV);
if (ptr->w_perl_private == NULL)
{
ptr->w_perl_private = newSV(0);
sv_setiv(ptr->w_perl_private, (IV)ptr);
}
else
SvREFCNT_inc(ptr->w_perl_private);
SvRV(rv) = ptr->w_perl_private;
SvROK_on(rv);
return sv_bless(rv, gv_stashpv("VIWIN", TRUE));
}
/* LINTED: avoid warning: cast from pointer to integer of different size */
newANYrv(win_T, WIN)
/* LINTED: avoid warning: cast from pointer to integer of different size */
newANYrv(buf_T, BUF)
static SV *
newBUFrv(rv, ptr)
SV *rv;
buf_T *ptr;
{
sv_upgrade(rv, SVt_RV);
if (ptr->b_perl_private == NULL)
{
ptr->b_perl_private = newSV(0);
sv_setiv(ptr->b_perl_private, (IV)ptr);
}
else
SvREFCNT_inc(ptr->b_perl_private);
SvRV(rv) = ptr->b_perl_private;
SvROK_on(rv);
return sv_bless(rv, gv_stashpv("VIBUF", TRUE));
}
/*
* perl_win_free
@@ -477,8 +490,8 @@ newANYrv(buf_T, BUF)
perl_win_free(wp)
win_T *wp;
{
if (wp->perl_private)
sv_setiv((SV *)wp->perl_private, 0);
if (wp->w_perl_private)
sv_setiv((SV *)wp->w_perl_private, 0);
return;
}
@@ -486,8 +499,8 @@ perl_win_free(wp)
perl_buf_free(bp)
buf_T *bp;
{
if (bp->perl_private)
sv_setiv((SV *)bp->perl_private, 0);
if (bp->b_perl_private)
sv_setiv((SV *)bp->b_perl_private, 0);
return;
}
@@ -915,7 +928,7 @@ DESTROY(win)
CODE:
if (win_valid(win))
win->perl_private = 0;
win->w_perl_private = 0;
SV *
Buffer(win)
@@ -979,7 +992,7 @@ DESTROY(vimbuf)
CODE:
if (buf_valid(vimbuf))
vimbuf->perl_private = 0;
vimbuf->b_perl_private = 0;
void
Name(vimbuf)