|
Java example source code file (traceEventClasses.xsl)
The traceEventClasses.xsl Java example source code<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 only, as published by the Free Software Foundation. This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details (a copy is included in the LICENSE file that accompanied this code). You should have received a copy of the GNU General Public License version 2 along with this work; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA or visit www.oracle.com if you need additional information or have any questions. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="xsl_util.xsl"/> <xsl:output method="text" indent="no" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:call-template name="file-header"/> #ifndef TRACEFILES_TRACEEVENTCLASSES_HPP #define TRACEFILES_TRACEEVENTCLASSES_HPP // On purpose outside the INCLUDE_TRACE // Some parts of traceEvent.hpp are used outside of // INCLUDE_TRACE #include "memory/resourceArea.hpp" #include "tracefiles/traceTypes.hpp" #include "trace/traceEvent.hpp" #include "utilities/macros.hpp" #include "utilities/ticks.hpp" #if INCLUDE_TRACE #include "trace/traceStream.hpp" #include "utilities/ostream.hpp" <xsl:apply-templates select="trace/events/struct" mode="trace"/> <xsl:apply-templates select="trace/events/event" mode="trace"/> #else class TraceEvent { public: TraceEvent() {} void set_starttime(const Ticks& time) {} void set_endtime(const Ticks& time) {} bool should_commit() const { return false; } void commit() const {} }; <xsl:apply-templates select="trace/events/struct" mode="empty"/> <xsl:apply-templates select="trace/events/event" mode="empty"/> #endif #endif </xsl:template> <xsl:template match="struct" mode="trace"> struct TraceStruct<xsl:value-of select="@id"/> { private: <xsl:apply-templates select="value" mode="write-fields"/> public: <xsl:apply-templates select="value" mode="write-setters"/> void writeStruct(TraceStream& ts) { <xsl:apply-templates select="value" mode="write-data"/> } }; </xsl:template> <xsl:template match="struct" mode="empty"> struct TraceStruct<xsl:value-of select="@id"/> { public: <xsl:apply-templates select="value" mode="write-empty-setters"/> }; </xsl:template> <xsl:template match="event" mode="empty"> <xsl:value-of select="concat('class Event', @id, ' : public TraceEvent')"/> { public: <xsl:value-of select="concat(' Event', @id, '(bool ignore=true) {}')"/> <xsl:text> </xsl:text> <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-empty-setters"/> }; </xsl:template> <xsl:template match="event" mode="trace"> <xsl:value-of select="concat('class Event', @id, ' : public TraceEvent<Event', @id, '>')"/> { public: static const bool hasThread = <xsl:value-of select="@has_thread"/>; static const bool hasStackTrace = <xsl:value-of select="@has_stacktrace"/>; static const bool isInstant = <xsl:value-of select="@is_instant"/>; static const bool isRequestable = <xsl:value-of select="@is_requestable"/>; static const TraceEventId eventId = <xsl:value-of select="concat('Trace', @id, 'Event')"/>; private: <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-fields"/> void writeEventContent(void) { TraceStream ts(*tty); ts.print("<xsl:value-of select="@label"/>: ["); <xsl:apply-templates select="value|structvalue" mode="write-data"/> ts.print("]\n"); } public: <xsl:apply-templates select="value|structvalue|transition_value|relation" mode="write-setters"/> bool should_write(void) { return true; } <xsl:text> </xsl:text> <xsl:value-of select="concat(' Event', @id, '(EventStartTime timing=TIMED) : TraceEvent<Event', @id, '>(timing) {}', $newline)"/> void writeEvent(void) { ResourceMark rm; if (UseLockedTracing) { ttyLocker lock; writeEventContent(); } else { writeEventContent(); } } }; </xsl:template> <xsl:template match="value|transition_value|relation" mode="write-empty-setters"> <xsl:param name="cls"/> <xsl:variable name="type" select="@type"/> <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> <xsl:value-of select="concat(' void set_', @field, '(', $wt, ' value) { }')"/> <xsl:if test="position() != last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <xsl:template match="structvalue" mode="write-empty-setters"> <xsl:param name="cls"/> <xsl:value-of select="concat(' void set_', @field, '(const TraceStruct', @type, '& value) { }')"/> <xsl:if test="position() != last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <xsl:template match="value[@type='TICKS']" mode="write-setters"> #if INCLUDE_TRACE <xsl:value-of select="concat(' void set_', @field, '(const Ticks& time) { _', @field, ' = time; }')"/> #else <xsl:value-of select="concat(' void set_', @field, '(const Ticks& ignore) {}')"/> #endif </xsl:template> <xsl:template match="value[@type='TICKSPAN']" mode="write-setters"> #if INCLUDE_TRACE <xsl:value-of select="concat(' void set_', @field, '(const Tickspan& time) { _', @field, ' = time; }')"/> #else <xsl:value-of select="concat(' void set_', @field, '(const Tickspan& ignore) {}')"/> #endif </xsl:template> <xsl:template match="value" mode="write-fields"> <xsl:variable name="type" select="@type"/> <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> <xsl:value-of select="concat(' ', $wt, ' _', @field, ';')"/> <xsl:if test="position() != last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <xsl:template match="structvalue" mode="write-fields"> <xsl:value-of select="concat(' TraceStruct', @type, ' _', @field, ';')"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="value|transition_value|relation" mode="write-setters"> <xsl:param name="cls"/> <xsl:variable name="type" select="@type"/> <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@type"/> <xsl:value-of select="concat(' void set_', @field, '(', $wt, ' value) { this->_', @field, ' = value; }')"/> <xsl:if test="position() != last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <xsl:template match="structvalue" mode="write-setters"> <xsl:param name="cls"/> <xsl:value-of select="concat(' void set_', @field, '(const TraceStruct', @type, '& value) { this->_', @field, ' = value; }')"/> <xsl:if test="position() != last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:template> <xsl:template match="value" mode="write-data"> <xsl:variable name="type" select="@type"/> <xsl:variable name="wt" select="//primary_type[@symbol=$type]/@writetype"/> <xsl:choose> <xsl:when test="@type='TICKSPAN'"> <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, '.value());')"/> </xsl:when> <xsl:when test="@type='TICKS'"> <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, '.value());')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat(' ts.print_val("', @label, '", _', @field, ');')"/> </xsl:otherwise> </xsl:choose> <xsl:if test="position() != last()"> <xsl:text> ts.print(", "); </xsl:text> </xsl:if> </xsl:template> <xsl:template match="structvalue" mode="write-data"> <xsl:value-of select="concat(' _', @field, '.writeStruct(ts);')"/> <xsl:if test="position() != last()"> <xsl:text> ts.print(", "); </xsl:text> </xsl:if> </xsl:template> </xsl:stylesheet> Other Java examples (source code examples)Here is a short list of links related to this Java traceEventClasses.xsl source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.