File: easyxs_structref.h

package info (click to toggle)
libjavascript-quickjs-perl 0.21-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,180 kB
  • sloc: ansic: 72,822; javascript: 7,743; perl: 1,065; makefile: 353; sh: 108
file content (21 lines) | stat: -rw-r--r-- 513 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef EASYXS_STRUCTREF_H
#define EASYXS_STRUCTREF_H 1

#include "init.h"

#define exs_new_structref(type, classname) _exs_new_structref_f(aTHX_ sizeof(type), classname)

#define exs_structref_ptr(svrv) ( (void *) SvPVX( SvRV(svrv) ) )

static inline SV* _exs_new_structref_f (pTHX_ unsigned size, const char* classname) {

    SV* referent = newSV(size);
    SvPOK_on(referent);

    SV* reference = newRV_noinc(referent);
    sv_bless(reference, gv_stashpv(classname, FALSE));

    return reference;
}

#endif