VirtualBox_rgs.xsl revision a74782eac5771b0de57834e8c8c0247c55e8dd57
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<?xml version="1.0"?>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<!--
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * A template to generate a RGS resource script that contains
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * registry definitions necessary to properly register
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * VirtualBox Main API COM components.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse Copyright (C) 2007 Oracle Corporation
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse This file is part of VirtualBox Open Source Edition (OSE), as
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse available from http://www.virtualbox.org. This file is free software;
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse you can redistribute it and/or modify it under the terms of the GNU
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse General Public License (GPL) as published by the Free Software
bc8fd1b0b1afdf89b8d28eefa8cd74e26ba97986fielding Foundation, in version 2 as it comes in the "COPYING" file of the
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse-->
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<xsl:stylesheet version="1.0"
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<xsl:output method="text"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<xsl:strip-space elements="*"/>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<!--
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse// parameters
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse/////////////////////////////////////////////////////////////////////////////
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse-->
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<!-- Name of the module to generate the RGS script for -->
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<xsl:param name="Module"/>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<!--
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse// templates
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse/////////////////////////////////////////////////////////////////////////////
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse-->
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<!--
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse * header
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse-->
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<xsl:template match="/idl">
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseHKCR
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse{
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<xsl:apply-templates/>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse}
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse</xsl:template>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<!--
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse * libraries
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse-->
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse<xsl:template match="idl/library">
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse NoRemove AppID
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse {
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse {<xsl:value-of select="@appUuid"/>} = s '<xsl:value-of select="@name"/> Application'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse }
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<xsl:apply-templates select="module[@name=$Module]/class"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse</xsl:template>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
60c1c6006c048e5009ae91fa2ba4cd35e5f78e10rse<!--
60c1c6006c048e5009ae91fa2ba4cd35e5f78e10rse * classes
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse-->
a943533fd4d91d114af622731a405407990c4fb1rse<xsl:template match="library//module/class">
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:variable name="cname" select="concat(//library/@name,'.',@name)"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:variable name="desc" select="concat(@name,' Class')"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:text> </xsl:text>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:value-of select="concat($cname,'.1')"/> = s '<xsl:value-of select="$desc"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse {
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse CLSID = s '{<xsl:value-of select="@uuid"/>}'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse }
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:value-of select="$cname"/> = s '<xsl:value-of select="$desc"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse {
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse CLSID = s '{<xsl:value-of select="@uuid"/>}'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse CurVer = s '<xsl:value-of select="concat($cname,'.1')"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse }
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse NoRemove CLSID
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse {
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse ForceRemove {<xsl:value-of select="@uuid"/>} = s '<xsl:value-of select="$desc"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse {
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse ProgId = s '<xsl:value-of select="concat($cname,'.1')"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse VersionIndependentProgID = s '<xsl:value-of select="$cname"/>'
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:choose>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:when test="../@context='InprocServer'">InprocServer32</xsl:when>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:when test="../@context='LocalServer'">LocalServer32</xsl:when>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:otherwise>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:message terminate="yes">
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:value-of select="concat(../../@name,'::',../@name,': ')"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:text>module context </xsl:text>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:value-of select="concat('&quot;',../@context,'&quot;')"/>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse <xsl:text> is invalid!</xsl:text>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse </xsl:message>
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse </xsl:otherwise>
a943533fd4d91d114af622731a405407990c4fb1rse </xsl:choose> = s '%MODULE%'
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:if test="../@context='InprocServer'">
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:variable name="tmodel" select="(./@threadingModel | ../@threadingModel)[last()]"/>{
a943533fd4d91d114af622731a405407990c4fb1rse val ThreadingModel = s '<xsl:choose>
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:when test="$tmodel='Apartment'">Apartment</xsl:when>
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:when test="$tmodel='Free'">Free</xsl:when>
22889d69e2b1dc1197419786bc1294498e124803wrowe <xsl:when test="$tmodel='Both'">Both</xsl:when>
2b206c2066dcdc042661ea9a07802f344e852808rbb <xsl:when test="$tmodel='Neutral'">Neutral</xsl:when>
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:when test="$tmodel='Single'">Single</xsl:when>
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:when test="$tmodel='Rental'">Rental</xsl:when>
bb0b94431dc9a1591a0a38a6c48925c6d9213c83rse <xsl:otherwise>
d1bb6e2664788e0437acc18e877562c9a796d7cerse <xsl:message terminate="yes">
7933d4a963def02417113b6798d87a36395053b0rse <xsl:value-of select="concat(../../@name,'::',@name,': ')"/>
a943533fd4d91d114af622731a405407990c4fb1rse <xsl:text>class (or module) threading model </xsl:text>
9603c496d9e1dbc213141ca64378df5fa45a9aa4dougm <xsl:value-of select="concat('&quot;',$tmodel,'&quot;')"/>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe <xsl:text> is invalid!</xsl:text>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe </xsl:message>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe </xsl:otherwise>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe </xsl:choose>'
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe }
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe </xsl:if>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe val AppId = s '{<xsl:value-of select="//library/@appUuid"/>}'
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe 'TypeLib' = s '{<xsl:value-of select="//library/@uuid"/>}'
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe }
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe }
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe</xsl:template>
af5dd1c93d2185f7e37f8783c593b64fd35ea8a6wrowe
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<!--
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * eat everything else not explicitly matched
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse-->
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse<xsl:template match="*">
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse</xsl:template>
fe46444c8f32f00d040ebefa94bcd0c05ab15ab9martin
fe46444c8f32f00d040ebefa94bcd0c05ab15ab9martin
fe46444c8f32f00d040ebefa94bcd0c05ab15ab9martin</xsl:stylesheet>
fe46444c8f32f00d040ebefa94bcd0c05ab15ab9martin