File: typemap

package info (click to toggle)
atheme-services 7.2.12-2.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,256 kB
  • sloc: ansic: 95,899; sh: 8,462; php: 5,032; perl: 3,327; makefile: 1,279; sed: 16; ruby: 15; python: 3
file content (127 lines) | stat: -rw-r--r-- 3,387 bytes parent folder | download | duplicates (6)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
TYPEMAP
Atheme_Sourceinfo		T_PTROBJ_SPECIAL
Atheme_Service			T_PTROBJ_SPECIAL
Atheme_User			T_PTROBJ_SPECIAL
Atheme_Object			T_PTROBJ_SPECIAL
Atheme_Entity			T_PTROBJ_SPECIAL
Atheme_Account			T_PTROBJ_SPECIAL
Atheme_Channel			T_PTROBJ_SPECIAL
Atheme_ChanUser			T_PTROBJ_SPECIAL
Atheme_ChannelRegistration	T_PTROBJ_SPECIAL
Atheme_ChanAcs			T_PTROBJ_SPECIAL
Atheme_NickRegistration		T_PTROBJ_SPECIAL
Atheme_Server			T_PTROBJ_SPECIAL

Atheme_Command			T_PTROBJ_PERLOWNED

Atheme_Internal_List		T_PTROBJ_TIEDARRAY
Atheme_Object_MetadataHash	T_PTROBJ_TIEDHASH

INPUT
T_PTROBJ_SPECIAL
	do
	{
		SV *arg = $arg;
		SV *ref = SvRV(arg);
		const char * type = \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\";
		if ( sv_isobject(arg) && (SvTYPE(SvRV(arg)) == SVt_PVMG) &&
		    sv_derived_from(arg, type)) {
			IV tmp = SvIV(ref);
			if (tmp == invalid_object_pointer)
				croak(\"$var is an invalid object reference\");
			$var = INT2PTR($type, tmp);
		}
		else
			croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\");
	} while(0)

T_PTROBJ_PERLOWNED
	do
	{
		SV *arg = $arg;
		SV *ref = SvRV(arg);
		const char * type = \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\";
		if ( sv_isobject(arg) && (SvTYPE(SvRV(arg)) == SVt_PVMG) &&
		    sv_derived_from(arg, type)) {
			IV tmp = SvIV(ref);
			if (tmp == invalid_object_pointer)
				croak(\"$var is not a valid object reference\");
			$var = INT2PTR($type, tmp);
		}
		else
			croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\");
	} while(0)

T_PTROBJ_TIEDARRAY
	do
	{
		SV *arg = $arg;
		SV *ref = SvRV(arg);
		const char * type = \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\";
		if ( sv_isobject(arg) && (SvTYPE(SvRV(arg)) == SVt_PVMG) &&
		    sv_derived_from(arg, type)) {
			IV tmp = SvIV(ref);
			if (tmp == invalid_object_pointer)
				croak(\"$var is not a valid object reference\");
			$var = INT2PTR($type, tmp);
		}
		else
			croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\");
	} while(0)

T_PTROBJ_TIEDHASH
	do
	{
		SV *arg = $arg;
		SV *ref = SvRV(arg);
		const char * type = \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\";
		if ( sv_isobject(arg) && (SvTYPE(SvRV(arg)) == SVt_PVMG) &&
		    sv_derived_from(arg, type)) {
			IV tmp = SvIV(ref);
			if (tmp == invalid_object_pointer)
				croak(\"$var is not a valid object reference\");
			$var = INT2PTR($type, tmp);
		}
		else
			croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\");
	} while(0)

OUTPUT
T_PTROBJ_SPECIAL
	do {
		if ($var == NULL)
			XSRETURN_UNDEF;
		sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\", (void*)$var);
		register_object_reference($arg);
	} while(0);

T_PTROBJ_PERLOWNED
	do {
		if ($var == NULL)
			XSRETURN_UNDEF;
		sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\", (void*)$var);
	} while(0);

T_PTROBJ_TIEDARRAY
	do {
		if ($var == NULL)
			XSRETURN_UNDEF;
		AV *array = newAV();
		SV *tie = newSV(0);
		sv_setref_pv(tie, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\", (void*)$var);
		hv_magic(array, tie, PERL_MAGIC_tied);
		$arg = newRV_noinc((SV*)array);
		register_object_reference(tie);
	} while(0);

T_PTROBJ_TIEDHASH
	do {
		if ($var == NULL)
			XSRETURN_UNDEF;
		HV *hash = newHV();
		SV *tie = newSV(0);
		sv_setref_pv(tie, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\", (void*)$var);
		hv_magic(hash, tie, PERL_MAGIC_tied);
		$arg = newRV_noinc((SV*)hash);
		register_object_reference(tie);
	} while(0);