File: av-utils.c.inc

package info (click to toggle)
libfuture-xs-perl 0.13-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 212 kB
  • sloc: ansic: 1,464; perl: 181; makefile: 3
file content (28 lines) | stat: -rw-r--r-- 716 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* vi: set ft=c : */

// TODO: move av_push_from_av() from perl-additions.c.inc to here

#define XPUSHs_from_AV(av)            \
  do {                                \
    EXTEND(SP, AvFILL(av)+1);         \
    size_t i;                         \
    for(i = 0; i < AvFILL(av)+1; i++) \
      PUSHs(AvARRAY(av)[i]);          \
  } while(0)

#define av_push_svn(av, svp, n)  S_av_push_svn(aTHX_ av, svp, n)
static void S_av_push_svn(pTHX_ AV *av, SV **svp, size_t n)
{
  while(n) {
    av_push(av, newSVsv(*svp));
    svp++; n--;
  }
}

#define newAV_svn_dup(svp, n)  S_newAV_svn_dup(aTHX_ svp, n)
static AV *S_newAV_svn_dup(pTHX_ SV **svp, size_t n)
{
  AV *av = newAV();
  av_push_svn(av, svp, n);
  return av;
}