c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<?xml version="1.0" encoding="utf-8"?>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<!--
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk This code is free software; you can redistribute it and/or modify it
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk under the terms of the GNU General Public License version 2 only, as
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk published by the Free Software Foundation.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk This code is distributed in the hope that it will be useful, but WITHOUT
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk version 2 for more details (a copy is included in the LICENSE file that
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk accompanied this code).
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk You should have received a copy of the GNU General Public License version
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk 2 along with this work; if not, write to the Free Software Foundation,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk or visit www.oracle.com if you need additional information or have any
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk questions.
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk-->
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk version="1.0">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:import href="jvmtiLib.xsl"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:output method="text" omit-xml-declaration="yes"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:template match="/">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="specification"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:template match="specification">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="intro"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>/* Derived Base Types */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="//basetype"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Constants */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="//constants"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Errors */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef enum {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:for-each select="//errorid">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:sort select="@num" data-type="number"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="." mode="enum"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:if test="position() = last()">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> JVMTI_ERROR_MAX = </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="@num"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:if>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:for-each>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk} jvmtiError;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="eventsection" mode="enum"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Pre-Declarations */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<xsl:apply-templates select="//typedef|//uniontypedef" mode="early"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Function Types */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="//callback"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Structure Types */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="//typedef|//uniontypedef" mode="body"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="//capabilitiestypedef"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="eventsection" mode="body"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="functionsection"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="outro"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:template name="intro">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="includeHeader"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Include file for the Java(tm) Virtual Machine Tool Interface */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#ifndef _JAVA_JVMTI_H_
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#define _JAVA_JVMTI_H_
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#include "jni.h"
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#ifdef __cplusplus
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkextern "C" {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#endif
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkenum {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk JVMTI_VERSION_1 = 0x30010000,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk JVMTI_VERSION_1_0 = 0x30010000,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk JVMTI_VERSION_1_1 = 0x30010100,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk JVMTI_VERSION_1_2 = 0x30010200,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk JVMTI_VERSION = 0x30000000 + (</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="//specification/@majorversion"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> * 0x10000) + (</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="//specification/@minorversion"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> * 0x100)</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:variable name="micro">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="microversion"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:variable>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:choose>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:when test="string($micro)='dev'">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> /* checked out - </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:when>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:otherwise>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> + </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="$micro"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> /* </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:otherwise>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:choose>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>version: </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="showversion"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk};
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkJNIEXPORT jint JNICALL
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkAgent_OnLoad(JavaVM *vm, char *options, void *reserved);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkJNIEXPORT jint JNICALL
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkAgent_OnAttach(JavaVM* vm, char* options, void* reserved);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkJNIEXPORT void JNICALL
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkAgent_OnUnload(JavaVM *vm);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Forward declaration of the environment */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkstruct _jvmtiEnv;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkstruct jvmtiInterface_1_;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#ifdef __cplusplus
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef _jvmtiEnv jvmtiEnv;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#else
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef const struct jvmtiInterface_1_ *jvmtiEnv;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#endif /* __cplusplus */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:template name="outro">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#ifdef __cplusplus
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk} /* extern "C" */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#endif /* __cplusplus */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk#endif /* !_JAVA_JVMTI_H_ */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<xsl:template match="eventsection" mode="enum">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Event IDs */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef enum {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:for-each select="event">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:sort select="@num" data-type="number"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:if test="position()=1">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> JVMTI_MIN_EVENT_TYPE_VAL = </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="@num"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:if>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="." mode="enum"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>,
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:if test="position()=last()">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text> JVMTI_MAX_EVENT_TYPE_VAL = </xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:value-of select="@num"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:if>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:for-each>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk} jvmtiEvent;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<xsl:template match="eventsection" mode="body">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Event Definitions */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef void (JNICALL *jvmtiEventReserved)(void);
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:apply-templates select="event" mode="definition">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:sort select="@id"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:apply-templates>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk /* Event Callback Structure */
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenktypedef struct {
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:call-template name="eventStruct">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:with-param name="events" select="event"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:with-param name="index" select="0"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:with-param name="started" select="false"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:with-param name="comment" select="'Yes'"/>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk </xsl:call-template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>} jvmtiEventCallbacks;
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:text>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk</xsl:template>
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk<xsl:template match="event" mode="definition">
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk <xsl:text>
typedef void (JNICALL *jvmtiEvent</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>)
(jvmtiEnv *jvmti_env</xsl:text>
<xsl:apply-templates select="parameters" mode="signature">
<xsl:with-param name="comma">
<xsl:text>,
</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
<xsl:text>);
</xsl:text>
</xsl:template>
<xsl:template match="functionsection">
<xsl:text>
/* Function Interface */
typedef struct jvmtiInterface_1_ {
</xsl:text>
<xsl:call-template name="funcStruct">
<xsl:with-param name="funcs" select="category/function[count(@hide)=0]"/>
<xsl:with-param name="index" select="1"/>
</xsl:call-template>
<xsl:text>} jvmtiInterface_1;
struct _jvmtiEnv {
const struct jvmtiInterface_1_ *functions;
#ifdef __cplusplus
</xsl:text>
<xsl:apply-templates select="category" mode="cppinline"/>
<xsl:text>
#endif /* __cplusplus */
};
</xsl:text>
</xsl:template>
<xsl:template name="funcStruct">
<xsl:param name="funcs"/>
<xsl:param name="index"/>
<xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
<xsl:text> /* </xsl:text>
<xsl:number value="$index" format=" 1"/>
<xsl:text> : </xsl:text>
<xsl:choose>
<xsl:when test="count($thisFunction)=1">
<xsl:value-of select="$thisFunction/synopsis"/>
<xsl:text> */
jvmtiError (JNICALL *</xsl:text>
<xsl:value-of select="$thisFunction/@id"/>
<xsl:text>) (jvmtiEnv* env</xsl:text>
<xsl:apply-templates select="$thisFunction/parameters" mode="signature">
<xsl:with-param name="comma">
<xsl:text>,
</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
<xsl:text>)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> RESERVED */
void *reserved</xsl:text>
<xsl:value-of select="$index"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>;
</xsl:text>
<xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
<xsl:call-template name="funcStruct">
<xsl:with-param name="funcs" select="$funcs"/>
<xsl:with-param name="index" select="1+$index"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="function">
<xsl:text> jvmtiError (JNICALL *</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>) (jvmtiEnv* env</xsl:text>
<xsl:apply-templates select="parameters" mode="signature"/>
<xsl:text>);
</xsl:text>
</xsl:template>
<xsl:template match="category" mode="cppinline">
<xsl:apply-templates select="function[count(@hide)=0]" mode="cppinline"/>
</xsl:template>
<xsl:template match="function" mode="cppinline">
<xsl:text>
jvmtiError </xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>(</xsl:text>
<xsl:apply-templates select="parameters" mode="signaturenoleadcomma"/>
<xsl:text>) {
return functions-></xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>(this</xsl:text>
<xsl:for-each select="parameters">
<xsl:for-each select="param">
<xsl:if test="@id != '...' and count(jclass/@method) = 0">
<xsl:text>, </xsl:text>
<xsl:value-of select="@id"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:text>);
}
</xsl:text>
</xsl:template>
<xsl:template match="basetype">
<xsl:if test="count(definition)!=0">
<xsl:text>
</xsl:text>
<xsl:apply-templates select="definition"/>
</xsl:if>
</xsl:template>
<xsl:template match="constants">
<xsl:text>
/* </xsl:text>
<xsl:value-of select="@label"/>
<xsl:text> */
</xsl:text>
<xsl:choose>
<xsl:when test="@kind='enum'">
<xsl:apply-templates select="." mode="enum"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="constants"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="callback">
<xsl:text>
typedef </xsl:text>
<xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
<xsl:text> (JNICALL *</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>)
(</xsl:text>
<xsl:for-each select="parameters">
<xsl:apply-templates select="param[position()=1]" mode="signature"/>
<xsl:for-each select="param[position()>1]">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="." mode="signature"/>
</xsl:for-each>
</xsl:for-each>
<xsl:text>);
</xsl:text>
</xsl:template>
<xsl:template match="capabilitiestypedef">
<xsl:text>
</xsl:text>
<xsl:apply-templates select="." mode="genstruct"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="typedef" mode="early">
<xsl:text>struct _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>;
</xsl:text>
<xsl:text>typedef struct _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>;
</xsl:text>
</xsl:template>
<xsl:template match="typedef" mode="body">
<xsl:text>struct _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> {
</xsl:text>
<xsl:apply-templates select="field" mode="signature"/>
<xsl:text>};
</xsl:text>
</xsl:template>
<xsl:template match="uniontypedef" mode="early">
<xsl:text>union _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>;
</xsl:text>
<xsl:text>typedef union _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@id"/>
<xsl:text>;
</xsl:text>
</xsl:template>
<xsl:template match="uniontypedef" mode="body">
<xsl:text>union _</xsl:text>
<xsl:value-of select="@id"/>
<xsl:text> {
</xsl:text>
<xsl:apply-templates select="field" mode="signature"/>
<xsl:text>};
</xsl:text>
</xsl:template>
</xsl:stylesheet>