TYPEMAP
nsIWebBrowser * T_MOZDOM_GENERIC_WRAPPER
nsIWebNavigation * T_MOZDOM_GENERIC_WRAPPER
nsIURI * T_MOZDOM_GENERIC_WRAPPER
nsISelection * T_MOZDOM_GENERIC_WRAPPER
nsISupports * T_MOZDOM_GENERIC_WRAPPER
nsIDOMAbstractView * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocumentView * T_MOZDOM_GENERIC_WRAPPER
nsIDOMEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMUIEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSUIEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocumentEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMMutationEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMKeyEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMMouseEvent * T_MOZDOM_GENERIC_WRAPPER
nsIDOMEventTarget * T_MOZDOM_GENERIC_WRAPPER
nsIDOMEventListener * T_MOZDOM_GENERIC_WRAPPER
nsIDOMWindow * T_MOZDOM_GENERIC_WRAPPER
nsIDOMWindow2 * T_MOZDOM_GENERIC_WRAPPER
nsIDOMWindowInternal * T_MOZDOM_GENERIC_WRAPPER
nsIDOMWindowCollection * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocument * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSDocument * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocumentFragment * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocumentRange * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDocumentType * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNode * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNodeList * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNamedNodeMap * T_MOZDOM_GENERIC_WRAPPER
nsIDOMElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMEntity * T_MOZDOM_GENERIC_WRAPPER
nsIDOMEntityReference * T_MOZDOM_GENERIC_WRAPPER
nsIDOMAttr * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNotation * T_MOZDOM_GENERIC_WRAPPER
nsIDOMProcessingInstruction * T_MOZDOM_GENERIC_WRAPPER
nsIDOMCDATASection * T_MOZDOM_GENERIC_WRAPPER
nsIDOMComment * T_MOZDOM_GENERIC_WRAPPER
nsIDOMCharacterData * T_MOZDOM_GENERIC_WRAPPER
nsIDOMText * T_MOZDOM_GENERIC_WRAPPER
nsIDOMDOMImplementation * T_MOZDOM_GENERIC_WRAPPER
nsIDOMRange * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSRange * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHistory * T_MOZDOM_GENERIC_WRAPPER
nsIDOMLocation * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNavigator * T_MOZDOM_GENERIC_WRAPPER
nsIDOMScreen * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLAreaElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLAreaElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLAnchorElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLAnchorElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLAppletElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLBRElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLBaseElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLBaseFontElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLBodyElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLButtonElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLButtonElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLCollection * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLDListElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLDirectoryElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLDivElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLDocument * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLEmbedElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLFieldSetElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLFontElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLFormElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLFormElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLFrameElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLFrameElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLFrameSetElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLHRElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLHRElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLHeadElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLHeadingElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLHtmlElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLIFrameElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLImageElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLImageElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLInputElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLInputElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLIsIndexElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLLIElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLLabelElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLLegendElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLLinkElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLMapElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLMenuElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLMetaElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLModElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLOListElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLObjectElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLOptGroupElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLOptionElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLOptionElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLOptionsCollection * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLParagraphElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLParamElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLPreElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLQuoteElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLScriptElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLSelectElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLSelectElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLStyleElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableCaptionElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableCellElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableColElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableRowElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTableSectionElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTextAreaElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMNSHTMLTextAreaElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLTitleElement * T_MOZDOM_GENERIC_WRAPPER
nsIDOMHTMLUListElement * T_MOZDOM_GENERIC_WRAPPER
PRUint32 T_UV
PRUint16 T_UV
PRInt32 T_IV
PRInt16 T_UV
PRBool T_BOOL
DOMTimeStamp T_UV
# Use this for methods with "const nsAString &" arguments;
# e.g. for InitEvent(const nsAString &evtType, ...)
# do something like
# void
# moz_dom_init_event (event, type, ...)
# nsIDOMEvent *event;
# nsEmbedString type;
# ...
# CODE:
# event->InitEvent(type, ...)
nsEmbedString T_NSASTRING
nsEmbedCString T_NSACSTRING
nsIID T_NSIID
# O_OBJECT is from `perldoc perlxs`
MozDomEventListener * O_OBJECT
INPUT
# (T_GPERL_GENERIC_WRAPPER from Glib/typemap; I wasn't sure if having the
# same name would conflict or something)
# a general-purpose typemap... strips any trailing star and/or leading "const",
# leaving only the type name in the form SvMyType. this allows you to make a
# typedef such as "typedef MyType MyType_ornull", and SvMyType_ornull will be
# called for those.
T_MOZDOM_GENERIC_WRAPPER
$var = Sv${(my $ntype = $type) =~ s/(?:const\s+)?([:\w]+)(?:\s*\*)$/$1/x;
\$ntype} ($arg);
# For an `nsEmbedString' arg, this converts the incoming SV* arg
# to a UTF-16 nsEmbedString, suitable for "const nsAString &"
# input parameters.
T_NSASTRING
char * str$var = (char *) SvPV_nolen($arg);
nsEmbedCString u8$var(str$var);
NS_CStringToUTF16(u8$var, NS_CSTRING_ENCODING_UTF8, $var);
# Same but UTF-8 version
T_NSACSTRING
char * str$var = (char *) SvPV_nolen($arg);
$var = str$var;
T_NSIID
char * str$var = (char *) SvPV_nolen($arg);
$var.Parse(str$var);
O_OBJECT
if (sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG))
$var = ($type) SvIV((SV *) SvRV($arg));
else {
warn(\"${Package}::$func_name() -- $var is not a blessed SV reference\");
XSRETURN_UNDEF;
}
OUTPUT
T_MOZDOM_GENERIC_WRAPPER
$arg = newSV${(my $ntype = $type) =~ s/(?:const\s+)?([:\w]+)(?:\s*\*)$/$1/;
\$ntype} ($var);
# For a `nsEmbedString' return value, takes care of converting
# a UTF-16 nsEmbedString to a UTF-8 SV * (const char *).
# Generally this is necessary for methods with "nsAString &"
# arguments that are passed in by reference; for example,
# GetType(nsAString &type):
#
# nsEmbedString
# moz_dom_get_type (event)
# nsIDOMEvent *event;
# PREINIT:
# nsEmbedString type;
# CODE:
# event->GetType(type);
# RETVAL = type;
# OUTPUT:
# RETVAL
T_NSASTRING
nsEmbedCString u8$var;
const char * u8str$var;
NS_UTF16ToCString($var, NS_CSTRING_ENCODING_UTF8, u8$var);
u8str$var = u8$var.get();
sv_setpv((SV *)$arg, u8str$var);
# Same but UTF-8 version
T_NSACSTRING
const char * str$var;
str$var = $var.get();
sv_setpv((SV *)$arg, str$var);
# XXX: I think ToString leaks since I don't free the string
T_NSIID
sv_setpv((SV*)$arg, $var.ToString());
O_OBJECT
sv_setref_pv($arg, CLASS, (void *) $var);