|
<stylesheet xmlns:fn="http://www.w3.org/2005/xpath-functions"
|
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
<globalVariables>
|
|
<globalVariable name="Q{xslt:priority-queue:2020}empty"
|
|
as="1FM k[AS] v[1F]"
|
|
line="16"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
visibility="PRIVATE">
|
|
<ifCall baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="16"
|
|
name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
|
|
type="1FM">
|
|
<sequence>
|
|
<map size="1">
|
|
<str val="keys"/>
|
|
<map size="0"/>
|
|
</map>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="items"/>
|
|
<array size="0"/>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</globalVariable>
|
|
</globalVariables>
|
|
<mode onNo="TC" flags="dW" patternSlots="0">
|
|
<ruleSet type="document-node()">
|
|
<templateRule prec="5"
|
|
prio="-0.5"
|
|
seq="0"
|
|
rank="0"
|
|
minImp="0"
|
|
slots="1"
|
|
matches="ND"
|
|
flags="s"
|
|
line="16"
|
|
module="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt">
|
|
<p.nodeTest role="match" test="ND"/>
|
|
<let role="action"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="17"
|
|
var="Q{}g"
|
|
as="1FM"
|
|
slot="0"
|
|
eval="16">
|
|
<ufCall name="Q{public:this}create-graph" tailCall="false" bSlot="0"/>
|
|
<message line="26">
|
|
<sequence role="select">
|
|
<valueOf>
|
|
<str val="Shortest path:
"/>
|
|
</valueOf>
|
|
<forEach>
|
|
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search"
|
|
tailCall="false"
|
|
bSlot="1"
|
|
eval="0 0 6">
|
|
<int val="1498"/>
|
|
<int val="351"/>
|
|
<varRef name="Q{}g" slot="0"/>
|
|
</ufCall>
|
|
<sequence line="30">
|
|
<valueOf>
|
|
<fn name="string-join">
|
|
<convert from="A" to="AS">
|
|
<data>
|
|
<mergeAdj>
|
|
<sequence>
|
|
<lookup>
|
|
<dot type="1FM"/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
<str val=" - "/>
|
|
<lookup>
|
|
<dot type="1FM"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
<str val=", distance = "/>
|
|
<ufCall name="Q{xslt:graph-api:2020}edge-value"
|
|
tailCall="false"
|
|
bSlot="2"
|
|
eval="16 6">
|
|
<check card="1" diag="0|0||g:edge-value">
|
|
<lookup>
|
|
<dot type="1FM"/>
|
|
<str val="edge"/>
|
|
</lookup>
|
|
</check>
|
|
<varRef name="Q{}g" slot="0"/>
|
|
</ufCall>
|
|
<str val=", total = "/>
|
|
<lookup>
|
|
<dot type="1FM"/>
|
|
<str val="distance"/>
|
|
</lookup>
|
|
</sequence>
|
|
</mergeAdj>
|
|
</data>
|
|
</convert>
|
|
<str val=""/>
|
|
</fn>
|
|
</valueOf>
|
|
<valueOf>
|
|
<str val="
"/>
|
|
</valueOf>
|
|
</sequence>
|
|
</forEach>
|
|
</sequence>
|
|
<str role="terminate" val="no"/>
|
|
<str role="error" val="Q{http://www.w3.org/2005/xqt-errors}XTMM9000"/>
|
|
</message>
|
|
</let>
|
|
</templateRule>
|
|
</ruleSet>
|
|
</mode>
|
|
<namedTemplates>
|
|
<template name="f:repeat"
|
|
line="180"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt">
|
|
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="181">
|
|
<param name="Q{}state" slot="0">
|
|
<empty role="select"/>
|
|
<supplied role="conversion" slot="0"/>
|
|
</param>
|
|
<param line="182"
|
|
name="Q{}condition"
|
|
slot="1"
|
|
flags="i"
|
|
as="1F r[1AB] a[*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
|
|
<fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
|
|
<supplied slot="1"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<param line="183" name="Q{}action" slot="2" flags="i" as="1F a[*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|action">
|
|
<fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
|
|
<supplied slot="2"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<param line="184" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|next">
|
|
<fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
|
|
<supplied slot="3"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<let line="186" var="Q{}items" slot="4" eval="4">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
|
|
<varRef name="Q{}action" slot="2"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<sequence line="188">
|
|
<varRef name="Q{}items" slot="4"/>
|
|
<choose line="190">
|
|
<fn name="not">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
|
|
<varRef name="Q{}condition" slot="1"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</fn>
|
|
<callT line="191"
|
|
name="Q{xslt:functions:2020}repeat"
|
|
bSlot="0"
|
|
flags="t">
|
|
<withParam name="Q{}state" flags="c">
|
|
<ifCall line="192"
|
|
name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$next">
|
|
<varRef name="Q{}next" slot="3"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<varRef name="Q{}items" slot="4"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
|
|
<varRef line="193" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
<withParam name="Q{}action" flags="c" as="1F a[*]">
|
|
<varRef line="194" name="Q{}action" slot="2"/>
|
|
</withParam>
|
|
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
|
|
<varRef line="195" name="Q{}next" slot="3"/>
|
|
</withParam>
|
|
</callT>
|
|
</choose>
|
|
</sequence>
|
|
</let>
|
|
</sequence>
|
|
</template>
|
|
<template name="f:skip-while"
|
|
line="241"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt">
|
|
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="242">
|
|
<param name="Q{}items" slot="0">
|
|
<empty role="select"/>
|
|
<supplied role="conversion" slot="0"/>
|
|
</param>
|
|
<param line="243" name="Q{}index" slot="1" as="1ADI">
|
|
<int role="select" val="1"/>
|
|
<treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
|
|
<check card="1" diag="8|0|XTTE0590|index">
|
|
<cvUntyped to="ADI" diag="8|0|XTTE0590|index">
|
|
<data diag="8|0|XTTE0590|index">
|
|
<supplied slot="1"/>
|
|
</data>
|
|
</cvUntyped>
|
|
</check>
|
|
</treat>
|
|
</param>
|
|
<param line="245"
|
|
name="Q{}condition"
|
|
slot="2"
|
|
flags="i"
|
|
as="1F r[1AB] a[1,1ADI]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
|
|
<fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
|
|
<supplied slot="2"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<let line="247" var="Q{}item" as="?" slot="3" eval="7">
|
|
<first>
|
|
<varRef name="Q{}items" slot="0"/>
|
|
</first>
|
|
<let line="248" var="Q{}tail" slot="4" eval="10">
|
|
<tail start="2">
|
|
<varRef name="Q{}items" slot="0"/>
|
|
</tail>
|
|
<choose line="251">
|
|
<and op="and">
|
|
<fn name="exists">
|
|
<varRef name="Q{}item" slot="3"/>
|
|
</fn>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
|
|
<varRef name="Q{}condition" slot="2"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
<varRef name="Q{}index" slot="1"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</and>
|
|
<callT line="252"
|
|
name="Q{xslt:functions:2020}skip-while"
|
|
bSlot="0"
|
|
flags="t">
|
|
<withParam name="Q{}items" flags="c">
|
|
<varRef line="253" name="Q{}tail" slot="4"/>
|
|
</withParam>
|
|
<withParam name="Q{}index" flags="c" as="1ADI">
|
|
<arith line="254" op="+" calc="i+i">
|
|
<varRef name="Q{}index" slot="1"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
|
|
<varRef line="255" name="Q{}condition" slot="2"/>
|
|
</withParam>
|
|
</callT>
|
|
<true/>
|
|
<varRef line="259" name="Q{}tail" slot="4"/>
|
|
</choose>
|
|
</let>
|
|
</let>
|
|
</sequence>
|
|
</template>
|
|
<template name="f:take-while"
|
|
line="211"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt">
|
|
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="212">
|
|
<param name="Q{}items" slot="0">
|
|
<empty role="select"/>
|
|
<supplied role="conversion" slot="0"/>
|
|
</param>
|
|
<param line="213" name="Q{}index" slot="1" as="1ADI">
|
|
<int role="select" val="1"/>
|
|
<treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
|
|
<check card="1" diag="8|0|XTTE0590|index">
|
|
<cvUntyped to="ADI" diag="8|0|XTTE0590|index">
|
|
<data diag="8|0|XTTE0590|index">
|
|
<supplied slot="1"/>
|
|
</data>
|
|
</cvUntyped>
|
|
</check>
|
|
</treat>
|
|
</param>
|
|
<param line="215"
|
|
name="Q{}condition"
|
|
slot="2"
|
|
flags="i"
|
|
as="1F r[1AB] a[1,1ADI]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
|
|
<fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
|
|
<supplied slot="2"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<let line="217" var="Q{}item" as="?" slot="3" eval="7">
|
|
<first>
|
|
<varRef name="Q{}items" slot="0"/>
|
|
</first>
|
|
<choose line="219">
|
|
<and op="and">
|
|
<fn name="exists">
|
|
<varRef name="Q{}item" slot="3"/>
|
|
</fn>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
|
|
<varRef name="Q{}condition" slot="2"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
<varRef name="Q{}index" slot="1"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</and>
|
|
<sequence line="220">
|
|
<varRef name="Q{}item" slot="3"/>
|
|
<callT line="222"
|
|
name="Q{xslt:functions:2020}take-while"
|
|
bSlot="0"
|
|
flags="t">
|
|
<withParam name="Q{}items" flags="c">
|
|
<tail line="223" start="2">
|
|
<varRef name="Q{}items" slot="0"/>
|
|
</tail>
|
|
</withParam>
|
|
<withParam name="Q{}index" flags="c" as="1ADI">
|
|
<arith line="224" op="+" calc="i+i">
|
|
<varRef name="Q{}index" slot="1"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
|
|
<varRef line="225" name="Q{}condition" slot="2"/>
|
|
</withParam>
|
|
</callT>
|
|
</sequence>
|
|
</choose>
|
|
</let>
|
|
</sequence>
|
|
</template>
|
|
<template name="f:while"
|
|
line="144"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt">
|
|
<sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="145">
|
|
<param name="Q{}state" slot="0">
|
|
<empty role="select"/>
|
|
<supplied role="conversion" slot="0"/>
|
|
</param>
|
|
<param line="146"
|
|
name="Q{}condition"
|
|
slot="1"
|
|
flags="i"
|
|
as="1F r[1AB] a[*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|condition">
|
|
<fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
|
|
<supplied slot="1"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<param line="147" name="Q{}action" slot="2" flags="i" as="1F a[*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|action">
|
|
<fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
|
|
<supplied slot="2"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<param line="148" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
|
|
<check role="conversion" card="1" diag="8|0|XTTE0590|next">
|
|
<fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
|
|
<supplied slot="3"/>
|
|
</fnCoercer>
|
|
</check>
|
|
</param>
|
|
<choose line="150">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
|
|
<varRef name="Q{}condition" slot="1"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<let line="151" var="Q{}items" slot="4" eval="4">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
|
|
<varRef name="Q{}action" slot="2"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<sequence line="153">
|
|
<varRef name="Q{}items" slot="4"/>
|
|
<callT line="155"
|
|
name="Q{xslt:functions:2020}while"
|
|
bSlot="0"
|
|
flags="t">
|
|
<withParam name="Q{}state" flags="c">
|
|
<ifCall line="156"
|
|
name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$next">
|
|
<varRef name="Q{}next" slot="3"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<varRef name="Q{}items" slot="4"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
|
|
<varRef line="157" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
<withParam name="Q{}action" flags="c" as="1F a[*]">
|
|
<varRef line="158" name="Q{}action" slot="2"/>
|
|
</withParam>
|
|
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
|
|
<varRef line="159" name="Q{}next" slot="3"/>
|
|
</withParam>
|
|
</callT>
|
|
</sequence>
|
|
</let>
|
|
</choose>
|
|
</sequence>
|
|
</template>
|
|
</namedTemplates>
|
|
<accumulators/>
|
|
<functions>
|
|
<function name="Q{xslt:functions:2020}while"
|
|
line="48"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
eval="8"
|
|
flags="pU"
|
|
as="*"
|
|
slots="3">
|
|
<arg name="Q{}state" as="*"/>
|
|
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
|
|
<arg name="Q{}next" as="1F a[*]"/>
|
|
<tailCallLoop role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="57">
|
|
<choose>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
|
|
<varRef name="Q{}condition" slot="1"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<ufCall name="Q{xslt:functions:2020}while"
|
|
tailCall="self"
|
|
bSlot="0"
|
|
eval="4 6 6">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$next">
|
|
<varRef name="Q{}next" slot="2"/>
|
|
<arrayBlock>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<varRef name="Q{}condition" slot="1"/>
|
|
<varRef name="Q{}next" slot="2"/>
|
|
</ufCall>
|
|
<true/>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</choose>
|
|
</tailCallLoop>
|
|
</function>
|
|
<function name="Q{public:this}create-graph"
|
|
line="42"
|
|
module="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
eval="8"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="4">
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="53"
|
|
var="Q{}roads"
|
|
as="*FM k[AS] v[?ADI]"
|
|
slot="0"
|
|
eval="4">
|
|
<for var="Q{}line" as="AS" slot="1">
|
|
<filter role="in" flags="b">
|
|
<fn name="unparsed-text-lines">
|
|
<str val="rome99.gr"/>
|
|
</fn>
|
|
<fn name="starts-with">
|
|
<dot type="1AS"/>
|
|
<str val="a "/>
|
|
</fn>
|
|
</filter>
|
|
<let role="return" var="Q{}values" slot="2" eval="4">
|
|
<fn name="tokenize">
|
|
<varRef name="Q{}line" slot="1"/>
|
|
</fn>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="from"/>
|
|
<cast flags="ae" as="?ADI">
|
|
<subscript>
|
|
<varRef name="Q{}values" slot="2"/>
|
|
<int val="2"/>
|
|
</subscript>
|
|
</cast>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="to"/>
|
|
<cast flags="ae" as="?ADI">
|
|
<subscript>
|
|
<varRef name="Q{}values" slot="2"/>
|
|
<int val="3"/>
|
|
</subscript>
|
|
</cast>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="length"/>
|
|
<cast flags="ae" as="?ADI">
|
|
<subscript>
|
|
<varRef name="Q{}values" slot="2"/>
|
|
<int val="4"/>
|
|
</subscript>
|
|
</cast>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</let>
|
|
</for>
|
|
<let line="60" var="Q{}vertices" as="1FM" slot="3" eval="8">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<forEach>
|
|
<varRef name="Q{}roads" slot="0"/>
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<check card="1" diag="0|0||map:entry">
|
|
<lookup>
|
|
<dot type="1FM k[AS] v[?ADI]"/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
</check>
|
|
<dot type="1FM k[AS] v[?ADI]"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<check card="1" diag="0|0||map:entry">
|
|
<lookup>
|
|
<dot type="1FM k[AS] v[?ADI]"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
</check>
|
|
<dot type="1FM k[AS] v[?ADI]"/>
|
|
</ifCall>
|
|
</sequence>
|
|
</forEach>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="combine"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
<ifCall line="73"
|
|
name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
|
|
type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="vertices"/>
|
|
<partialApply>
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
|
|
arity="1"
|
|
bSlot="0"/>
|
|
<varRef name="Q{}vertices" slot="3"/>
|
|
</partialApply>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="edges"/>
|
|
<partialApply>
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
|
|
arity="1"
|
|
bSlot="1"/>
|
|
<varRef name="Q{}roads" slot="0"/>
|
|
</partialApply>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="edge-value"/>
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
|
|
arity="1"
|
|
bSlot="2"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="edge-vertices"/>
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
|
|
arity="1"
|
|
bSlot="3"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="vertex-edges"/>
|
|
<partialApply>
|
|
<fnCoercer to="1F a[*,1FM]" diag="0|0||saxon:call">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
|
|
arity="2"
|
|
bSlot="4"/>
|
|
</fnCoercer>
|
|
<null/>
|
|
<varRef name="Q{}vertices" slot="3"/>
|
|
</partialApply>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</let>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:functions:2020}while"
|
|
line="21"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
eval="9"
|
|
flags="pU"
|
|
as="*"
|
|
slots="4">
|
|
<arg name="Q{}state" as="*"/>
|
|
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
|
|
<arg name="Q{}action" as="1F a[*]"/>
|
|
<arg name="Q{}next" as="1F a[*,*]"/>
|
|
<callT role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="27"
|
|
name="Q{xslt:functions:2020}while"
|
|
bSlot="0">
|
|
<withParam name="Q{}state" flags="c">
|
|
<varRef line="28" name="Q{}state" slot="0"/>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
|
|
<varRef line="29" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
<withParam name="Q{}action" flags="c" as="1F a[*]">
|
|
<varRef line="30" name="Q{}action" slot="2"/>
|
|
</withParam>
|
|
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
|
|
<varRef line="31" name="Q{}next" slot="3"/>
|
|
</withParam>
|
|
</callT>
|
|
</function>
|
|
<function name="Q{xslt:functions:2020}take-while"
|
|
line="96"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
eval="9"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}items" as="*"/>
|
|
<arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
|
|
<callT role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="101"
|
|
name="Q{xslt:functions:2020}take-while"
|
|
bSlot="0">
|
|
<withParam name="Q{}items" flags="c">
|
|
<varRef line="102" name="Q{}items" slot="0"/>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
|
|
<varRef line="103" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
</callT>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}state" as="1FM"/>
|
|
<filter role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="79"
|
|
flags="b">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
|
|
<treat as="FA" diag="0|0||array:head">
|
|
<check card="1" diag="0|0||array:head">
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="queue"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
<fn name="not">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$state ? "visited"">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="visited"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<lookup>
|
|
<dot/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</fn>
|
|
</filter>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}edges"
|
|
line="53"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<forEach role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="56">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="0"/>
|
|
<str val="edges"/>
|
|
</lookup>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<dot/>
|
|
</treat>
|
|
<array size="0"/>
|
|
</ifCall>
|
|
</forEach>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}tail"
|
|
line="116"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="8"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="2">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="125"
|
|
var="Q{}items"
|
|
slot="1"
|
|
eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="keys"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
|
|
<treat as="FM" diag="0|0||map:remove">
|
|
<check card="1" diag="0|0||map:remove">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<data diag="0|1||map:remove">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
|
|
<treat as="FA" diag="0|0||array:head">
|
|
<check card="1" diag="0|0||array:head">
|
|
<varRef name="Q{}items" slot="1"/>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
</data>
|
|
</ifCall>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="items"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
|
|
<treat as="FA" diag="0|0||array:tail">
|
|
<check card="1" diag="0|0||array:tail">
|
|
<varRef name="Q{}items" slot="1"/>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}head"
|
|
line="105"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="7"
|
|
flags="pU"
|
|
as="?FM"
|
|
slots="2">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="108"
|
|
var="Q{http://saxon.sf.net/generated-variable}v0"
|
|
as="1F"
|
|
slot="1"
|
|
eval="13">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<treat as="FM" diag="5|0|XTTE0780|q:head#1">
|
|
<check card="?" diag="5|0|XTTE0780|q:head#1">
|
|
<forEach>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
|
|
<treat as="FA" diag="0|0||array:head">
|
|
<check card="1" diag="0|0||array:head">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? "keys"">
|
|
<varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
|
|
<arrayBlock>
|
|
<dot/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</forEach>
|
|
</check>
|
|
</treat>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}size"
|
|
line="91"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="8"
|
|
flags="pU"
|
|
as="1ADI"
|
|
slots="1">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<ifCall role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="94"
|
|
name="Q{http://www.w3.org/2005/xpath-functions/array}size"
|
|
type="1ADI">
|
|
<treat as="FA" diag="0|0||array:size">
|
|
<check card="1" diag="0|0||array:size">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="10">
|
|
<arg name="Q{}state" as="*"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<arg name="Q{}target" as="?"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="171"
|
|
var="Q{}item"
|
|
slot="3"
|
|
eval="3">
|
|
<lookup>
|
|
<ufCall name="Q{xslt:priority-queue:2020}head" tailCall="false" bSlot="0">
|
|
<treat as="FM" diag="0|0||q:head">
|
|
<check card="1" diag="0|0||q:head">
|
|
<first>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</first>
|
|
</check>
|
|
</treat>
|
|
</ufCall>
|
|
<str val="value"/>
|
|
</lookup>
|
|
<let var="Q{}visited" slot="4" eval="7">
|
|
<subscript>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<int val="2"/>
|
|
</subscript>
|
|
<let var="Q{}from" slot="5" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
<let var="Q{}total" slot="6" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
<str val="distance"/>
|
|
</lookup>
|
|
<choose>
|
|
<gc op="="
|
|
card="M:N"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<data diag="1|0||=">
|
|
<varRef name="Q{}target" slot="2"/>
|
|
</data>
|
|
<data diag="1|1||=">
|
|
<varRef name="Q{}from" slot="5"/>
|
|
</data>
|
|
</gc>
|
|
<sequence>
|
|
<ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="1"/>
|
|
<varRef name="Q{}visited" slot="4"/>
|
|
</sequence>
|
|
<true/>
|
|
<fn name="fold-left">
|
|
<for var="Q{}edge" slot="7">
|
|
<ufCall role="in"
|
|
name="Q{xslt:graph-api:2020}vertex-edges"
|
|
tailCall="false"
|
|
bSlot="2">
|
|
<check card="1" diag="0|0||g:vertex-edges">
|
|
<varRef name="Q{}from" slot="5"/>
|
|
</check>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
</ufCall>
|
|
<let role="return" var="Q{}distance" slot="8" eval="4">
|
|
<ufCall name="Q{xslt:graph-api:2020}edge-value" tailCall="false" bSlot="3">
|
|
<varRef name="Q{}edge" slot="7"/>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
</ufCall>
|
|
<for var="Q{}to" slot="9">
|
|
<ufCall role="in"
|
|
name="Q{xslt:graph-api:2020}edge-vertices"
|
|
tailCall="false"
|
|
bSlot="4">
|
|
<varRef name="Q{}edge" slot="7"/>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
</ufCall>
|
|
<choose role="return">
|
|
<gc op="="
|
|
card="M:N"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<data diag="1|0||=">
|
|
<varRef name="Q{}to" slot="9"/>
|
|
</data>
|
|
<data diag="1|1||=">
|
|
<varRef name="Q{}from" slot="5"/>
|
|
</data>
|
|
</gc>
|
|
<empty/>
|
|
<true/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="from"/>
|
|
<varRef name="Q{}from" slot="5"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="to"/>
|
|
<varRef name="Q{}to" slot="9"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="edge"/>
|
|
<varRef name="Q{}edge" slot="7"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="distance"/>
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}total" slot="6"/>
|
|
</fn>
|
|
<varRef name="Q{}distance" slot="8"/>
|
|
<true/>
|
|
<arith op="+" calc="a+a">
|
|
<cvUntyped to="AO">
|
|
<atomSing card="?" diag="1|0||+">
|
|
<varRef name="Q{}total" slot="6"/>
|
|
</atomSing>
|
|
</cvUntyped>
|
|
<cvUntyped to="AO">
|
|
<atomSing card="?" diag="1|1||+">
|
|
<varRef name="Q{}distance" slot="8"/>
|
|
</atomSing>
|
|
</cvUntyped>
|
|
</arith>
|
|
</choose>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</choose>
|
|
</for>
|
|
</let>
|
|
</for>
|
|
<sequence>
|
|
<ufCall name="Q{xslt:priority-queue:2020}tail" tailCall="false" bSlot="5">
|
|
<treat as="FM" diag="0|0||q:tail">
|
|
<check card="1" diag="0|0||q:tail">
|
|
<first>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</first>
|
|
</check>
|
|
</treat>
|
|
</ufCall>
|
|
<varRef name="Q{}visited" slot="4"/>
|
|
</sequence>
|
|
<fnCoercer to="1F a[*,1]" diag="0|2||fn:fold-left">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
|
|
arity="2"
|
|
bSlot="6"/>
|
|
</fnCoercer>
|
|
</fn>
|
|
</choose>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}edge" as="1FM"/>
|
|
<lookup role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="73">
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
<str val="length"/>
|
|
</lookup>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}edge" as="1FM"/>
|
|
<sequence role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="73">
|
|
<lookup>
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
<lookup>
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
</sequence>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}edge-value"
|
|
line="83"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="3">
|
|
<arg name="Q{}edge" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="92"
|
|
var="Q{}fn"
|
|
slot="2"
|
|
eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
<str val="edge-value"/>
|
|
</lookup>
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}fn" slot="2"/>
|
|
</fn>
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
<true/>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}fn" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</choose>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}items"
|
|
line="152"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*FM"
|
|
slots="2">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="155"
|
|
var="Q{http://saxon.sf.net/generated-variable}v0"
|
|
as="1F"
|
|
slot="1"
|
|
eval="13">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<treat as="FM" diag="5|0|XTTE0780|q:items#1">
|
|
<forEach>
|
|
<lookupAll>
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
</lookupAll>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? "keys"">
|
|
<varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
|
|
<arrayBlock>
|
|
<dot/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</forEach>
|
|
</treat>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}remove"
|
|
line="67"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="16"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="5">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<arg name="Q{}key" as="1"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="83"
|
|
var="Q{}keys"
|
|
slot="2"
|
|
eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
<let var="Q{}items" slot="3" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
<let var="Q{}item" slot="4" eval="4">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}keys" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}key" slot="1"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}item" slot="4"/>
|
|
</fn>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<true/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="keys"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
|
|
<treat as="FM" diag="0|0||map:remove">
|
|
<check card="1" diag="0|0||map:remove">
|
|
<varRef name="Q{}keys" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<data diag="0|1||map:remove">
|
|
<varRef name="Q{}key" slot="1"/>
|
|
</data>
|
|
</ifCall>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="items"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
|
|
<treat as="FA" diag="0|0||array:remove">
|
|
<check card="1" diag="0|0||array:remove">
|
|
<varRef name="Q{}items" slot="3"/>
|
|
</check>
|
|
</treat>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="16 16 8 6">
|
|
<treat as="FM" diag="0|0||p:find">
|
|
<check card="1" diag="0|0||p:find">
|
|
<varRef name="Q{}keys" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<treat as="FA" diag="0|1||p:find">
|
|
<check card="1" diag="0|1||p:find">
|
|
<varRef name="Q{}items" slot="3"/>
|
|
</check>
|
|
</treat>
|
|
<check card="?" diag="0|2||p:find">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="4"/>
|
|
<str val="priority"/>
|
|
</lookup>
|
|
</check>
|
|
<varRef name="Q{}key" slot="1"/>
|
|
</ufCall>
|
|
</ifCall>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</choose>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:functions:2020}skip-while"
|
|
line="117"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
eval="9"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}items" as="*"/>
|
|
<arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
|
|
<callT role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="122"
|
|
name="Q{xslt:functions:2020}skip-while"
|
|
bSlot="0">
|
|
<withParam name="Q{}items" flags="c">
|
|
<varRef line="123" name="Q{}items" slot="0"/>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
|
|
<varRef line="124" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
</callT>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
|
|
line="0"
|
|
eval="16"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}state" as="1FM"/>
|
|
<vc role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="79"
|
|
op="gt"
|
|
onEmpty="0"
|
|
comp="CAVC">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
|
|
<treat as="FA" diag="0|0||array:size">
|
|
<check card="1" diag="0|0||array:size">
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="queue"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
<int val="0"/>
|
|
</vc>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
|
|
line="0"
|
|
eval="16"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}state" as="*"/>
|
|
<vc role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="171"
|
|
op="gt"
|
|
onEmpty="0"
|
|
comp="CAVC">
|
|
<ufCall name="Q{xslt:priority-queue:2020}size" tailCall="false" bSlot="0">
|
|
<treat as="FM" diag="0|0||q:size">
|
|
<check card="1" diag="0|0||q:size">
|
|
<first>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</first>
|
|
</check>
|
|
</treat>
|
|
</ufCall>
|
|
<int val="0"/>
|
|
</vc>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
|
|
line="0"
|
|
eval="6"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}roads" as="*FM k[AS] v[?ADI]"/>
|
|
<varRef role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="73"
|
|
name="Q{}roads"
|
|
slot="0"/>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}add"
|
|
line="34"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="8"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="9">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<arg name="Q{}priority" as="?"/>
|
|
<arg name="Q{}key" as="1"/>
|
|
<arg name="Q{}value" as="*"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="58"
|
|
var="Q{}keys"
|
|
slot="4"
|
|
eval="3">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
<let var="Q{}items" slot="5" eval="3">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="items"/>
|
|
</lookup>
|
|
<let var="Q{}item" slot="6" eval="3">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}keys" slot="4"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<let var="Q{}items" slot="7" eval="3">
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}item" slot="6"/>
|
|
</fn>
|
|
<varRef name="Q{}items" slot="5"/>
|
|
<true/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
|
|
<treat as="FA" diag="0|0||array:remove">
|
|
<check card="1" diag="0|0||array:remove">
|
|
<varRef name="Q{}items" slot="5"/>
|
|
</check>
|
|
</treat>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="16 16 8 6">
|
|
<treat as="FM" diag="0|0||p:find">
|
|
<check card="1" diag="0|0||p:find">
|
|
<varRef name="Q{}keys" slot="4"/>
|
|
</check>
|
|
</treat>
|
|
<treat as="FA" diag="0|1||p:find">
|
|
<check card="1" diag="0|1||p:find">
|
|
<varRef name="Q{}items" slot="5"/>
|
|
</check>
|
|
</treat>
|
|
<check card="?" diag="0|2||p:find">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="6"/>
|
|
<str val="priority"/>
|
|
</lookup>
|
|
</check>
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</ufCall>
|
|
</ifCall>
|
|
</choose>
|
|
<let var="Q{}index" slot="8" eval="16">
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="false"
|
|
bSlot="1"
|
|
eval="16 16 6 6">
|
|
<treat as="FM" diag="0|0||p:find">
|
|
<check card="1" diag="0|0||p:find">
|
|
<varRef name="Q{}keys" slot="4"/>
|
|
</check>
|
|
</treat>
|
|
<treat as="FA" diag="0|1||p:find">
|
|
<check card="1" diag="0|1||p:find">
|
|
<varRef name="Q{}items" slot="7"/>
|
|
</check>
|
|
</treat>
|
|
<varRef name="Q{}priority" slot="1"/>
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</ufCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="keys"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
|
|
<treat as="FM" diag="0|0||map:put">
|
|
<check card="1" diag="0|0||map:put">
|
|
<varRef name="Q{}keys" slot="4"/>
|
|
</check>
|
|
</treat>
|
|
<atomSing diag="0|1||map:put">
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</atomSing>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="key"/>
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="priority"/>
|
|
<varRef name="Q{}priority" slot="1"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="value"/>
|
|
<varRef name="Q{}value" slot="3"/>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</ifCall>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="items"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}insert-before"
|
|
type="1FA">
|
|
<treat as="FA" diag="0|0||array:insert-before">
|
|
<check card="1" diag="0|0||array:insert-before">
|
|
<varRef name="Q{}items" slot="7"/>
|
|
</check>
|
|
</treat>
|
|
<minus>
|
|
<varRef name="Q{}index" slot="8"/>
|
|
</minus>
|
|
<varRef name="Q{}key" slot="2"/>
|
|
</ifCall>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
|
|
line="0"
|
|
eval="8"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}vertex" as="1"/>
|
|
<arg name="Q{}visited" as="*"/>
|
|
<fn role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="88"
|
|
name="exists">
|
|
<forEach>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}visited" slot="1"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<lookup>
|
|
<dot/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
</forEach>
|
|
</fn>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}item"
|
|
line="137"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="7"
|
|
flags="pU"
|
|
as="?FM"
|
|
slots="2">
|
|
<arg name="Q{}q" as="1FM"/>
|
|
<arg name="Q{}key" as="1"/>
|
|
<treat role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="141"
|
|
as="FM"
|
|
diag="5|0|XTTE0780|q:item#2">
|
|
<check card="?" diag="5|0|XTTE0780|q:item#2">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? "keys"">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}q" slot="0"/>
|
|
<str val="keys"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}key" slot="1"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</check>
|
|
</treat>
|
|
</function>
|
|
<function name="Q{xslt:priority-queue:2020}create"
|
|
line="22"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="6"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="0">
|
|
<gVarRef role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="23"
|
|
name="Q{xslt:priority-queue:2020}empty"
|
|
bSlot="0"/>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}vertex" as="1ADI"/>
|
|
<arg name="Q{}vertices" as="1FM"/>
|
|
<filter role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="73"
|
|
flags="b">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
|
|
<varRef name="Q{}vertices" slot="1"/>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</ifCall>
|
|
<gc op="="
|
|
card="N:1"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<data diag="1|0||=">
|
|
<lookup>
|
|
<dot/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
</data>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</gc>
|
|
</filter>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}dijkstra-search-visited"
|
|
line="107"
|
|
module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
eval="16"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="4">
|
|
<arg name="Q{}source" as="1"/>
|
|
<arg name="Q{}target" as="?"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<treat role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="171"
|
|
as="FM"
|
|
diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
|
|
<check card="1" diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
|
|
<subscript>
|
|
<ufCall name="Q{xslt:functions:2020}while"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="8 16 16">
|
|
<let var="Q{}item" slot="3" eval="8">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="to"/>
|
|
<varRef name="Q{}source" slot="0"/>
|
|
</ifCall>
|
|
<sequence>
|
|
<ufCall name="Q{xslt:priority-queue:2020}add"
|
|
tailCall="false"
|
|
bSlot="1"
|
|
eval="16 0 6 6">
|
|
<ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="2"/>
|
|
<empty/>
|
|
<varRef name="Q{}source" slot="0"/>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
</ufCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<atomSing diag="0|0||map:entry">
|
|
<varRef name="Q{}source" slot="0"/>
|
|
</atomSing>
|
|
<varRef name="Q{}item" slot="3"/>
|
|
</ifCall>
|
|
</sequence>
|
|
</let>
|
|
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
|
|
arity="1"
|
|
bSlot="3"/>
|
|
</fnCoercer>
|
|
<partialApply>
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
|
|
arity="3"
|
|
bSlot="4"/>
|
|
<null/>
|
|
<varRef name="Q{}g" slot="2"/>
|
|
<varRef name="Q{}target" slot="1"/>
|
|
</partialApply>
|
|
</ufCall>
|
|
<int val="2"/>
|
|
</subscript>
|
|
</check>
|
|
</treat>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
|
|
line="75"
|
|
module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*FM"
|
|
slots="4">
|
|
<arg name="Q{}source" as="1"/>
|
|
<arg name="Q{}target" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="88"
|
|
var="Q{}visited"
|
|
slot="3"
|
|
eval="16">
|
|
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="6 6 6">
|
|
<varRef name="Q{}source" slot="0"/>
|
|
<varRef name="Q{}target" slot="1"/>
|
|
<varRef name="Q{}g" slot="2"/>
|
|
</ufCall>
|
|
<treat as="FM" diag="5|0|XTTE0780|g:dijkstra-search-reversed#3">
|
|
<ufCall name="Q{xslt:functions:2020}while"
|
|
tailCall="false"
|
|
bSlot="1"
|
|
eval="6 16 16 16">
|
|
<varRef name="Q{}target" slot="1"/>
|
|
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
|
|
<partialApply>
|
|
<fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
|
|
arity="2"
|
|
bSlot="2"/>
|
|
</fnCoercer>
|
|
<null/>
|
|
<varRef name="Q{}visited" slot="3"/>
|
|
</partialApply>
|
|
</fnCoercer>
|
|
<partialApply>
|
|
<fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
|
|
arity="2"
|
|
bSlot="3"/>
|
|
</fnCoercer>
|
|
<null/>
|
|
<varRef name="Q{}visited" slot="3"/>
|
|
</partialApply>
|
|
<fnCoercer to="1F a[*,*]" diag="0|3||f:while">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
|
|
arity="2"
|
|
bSlot="4"/>
|
|
</fnCoercer>
|
|
</ufCall>
|
|
</treat>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:functions:2020}repeat"
|
|
line="72"
|
|
module="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
eval="9"
|
|
flags="pU"
|
|
as="*"
|
|
slots="4">
|
|
<arg name="Q{}state" as="*"/>
|
|
<arg name="Q{}condition" as="1F r[1AB] a[*]"/>
|
|
<arg name="Q{}action" as="1F a[*]"/>
|
|
<arg name="Q{}next" as="1F a[*,*]"/>
|
|
<callT role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
|
|
ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
|
|
line="78"
|
|
name="Q{xslt:functions:2020}repeat"
|
|
bSlot="0">
|
|
<withParam name="Q{}state" flags="c">
|
|
<varRef line="79" name="Q{}state" slot="0"/>
|
|
</withParam>
|
|
<withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
|
|
<varRef line="80" name="Q{}condition" slot="1"/>
|
|
</withParam>
|
|
<withParam name="Q{}action" flags="c" as="1F a[*]">
|
|
<varRef line="81" name="Q{}action" slot="2"/>
|
|
</withParam>
|
|
<withParam name="Q{}next" flags="c" as="1F a[*,*]">
|
|
<varRef line="82" name="Q{}next" slot="3"/>
|
|
</withParam>
|
|
</callT>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}dijkstra-search"
|
|
line="50"
|
|
module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*FM"
|
|
slots="3">
|
|
<arg name="Q{}source" as="1"/>
|
|
<arg name="Q{}target" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<fn role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="56"
|
|
name="reverse">
|
|
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="6 6 6">
|
|
<varRef name="Q{}source" slot="0"/>
|
|
<varRef name="Q{}target" slot="1"/>
|
|
<varRef name="Q{}g" slot="2"/>
|
|
</ufCall>
|
|
</fn>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}dijkstra-search"
|
|
line="27"
|
|
module="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
eval="16"
|
|
flags="pU"
|
|
as="1FM"
|
|
slots="2">
|
|
<arg name="Q{}source" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<tailCallLoop role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="31">
|
|
<ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
|
|
tailCall="foreign"
|
|
bSlot="0"
|
|
eval="6 0 6">
|
|
<varRef name="Q{}source" slot="0"/>
|
|
<empty/>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
</ufCall>
|
|
</tailCallLoop>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
|
|
line="0"
|
|
eval="16"
|
|
flags="pU"
|
|
as="*"
|
|
slots="10">
|
|
<arg name="Q{}state" as="1FM"/>
|
|
<arg name="Q{}item" as="*"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<arg name="Q{}is-depth-first" as="1AB"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="79"
|
|
var="Q{}tail"
|
|
slot="4"
|
|
eval="8">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
|
|
<treat as="FA" diag="0|0||array:tail">
|
|
<check card="1" diag="0|0||array:tail">
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="queue"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
</ifCall>
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}item" slot="1"/>
|
|
</fn>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="queue"/>
|
|
<varRef name="Q{}tail" slot="4"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="visited"/>
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="visited"/>
|
|
</lookup>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
<true/>
|
|
<let var="Q{}to" slot="5" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="1"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
<let var="Q{}visited" slot="6" eval="8">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
|
|
<treat as="FM" diag="0|0||map:put">
|
|
<check card="1" diag="0|0||map:put">
|
|
<lookup>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<str val="visited"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<atomSing diag="0|1||map:put">
|
|
<varRef name="Q{}to" slot="5"/>
|
|
</atomSing>
|
|
<true/>
|
|
</ifCall>
|
|
<let var="Q{}items" slot="7" eval="8">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}_from-sequence"
|
|
type="1FA">
|
|
<for var="Q{}edge" slot="8">
|
|
<ufCall role="in"
|
|
name="Q{xslt:graph-api:2020}vertex-edges"
|
|
tailCall="false"
|
|
bSlot="0">
|
|
<check card="1" diag="0|0||g:vertex-edges">
|
|
<varRef name="Q{}to" slot="5"/>
|
|
</check>
|
|
<varRef name="Q{}g" slot="2"/>
|
|
</ufCall>
|
|
<for role="return" var="Q{}vertex" slot="9">
|
|
<ufCall role="in"
|
|
name="Q{xslt:graph-api:2020}edge-vertices"
|
|
tailCall="false"
|
|
bSlot="1">
|
|
<varRef name="Q{}edge" slot="8"/>
|
|
<varRef name="Q{}g" slot="2"/>
|
|
</ufCall>
|
|
<choose role="return">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
|
|
<varRef name="Q{}visited" slot="6"/>
|
|
<atomSing diag="0|1||map:get">
|
|
<varRef name="Q{}vertex" slot="9"/>
|
|
</atomSing>
|
|
</ifCall>
|
|
<empty/>
|
|
<true/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="from"/>
|
|
<varRef name="Q{}to" slot="5"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="to"/>
|
|
<varRef name="Q{}vertex" slot="9"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="edge"/>
|
|
<varRef name="Q{}edge" slot="8"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="depth"/>
|
|
<arith op="+" calc="a+a">
|
|
<cvUntyped to="AO">
|
|
<atomSing card="?" diag="1|0||+">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="1"/>
|
|
<str val="depth"/>
|
|
</lookup>
|
|
</atomSing>
|
|
</cvUntyped>
|
|
<int val="1"/>
|
|
</arith>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</choose>
|
|
</for>
|
|
</for>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="queue"/>
|
|
<choose>
|
|
<varRef name="Q{}is-depth-first" slot="3"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
|
|
<sequence>
|
|
<varRef name="Q{}items" slot="7"/>
|
|
<varRef name="Q{}tail" slot="4"/>
|
|
</sequence>
|
|
</ifCall>
|
|
<true/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
|
|
<sequence>
|
|
<varRef name="Q{}tail" slot="4"/>
|
|
<varRef name="Q{}items" slot="7"/>
|
|
</sequence>
|
|
</ifCall>
|
|
</choose>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="visited"/>
|
|
<varRef name="Q{}visited" slot="6"/>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</choose>
|
|
</let>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}vertices" as="1FM"/>
|
|
<ifCall role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.v2.xslt"
|
|
ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
|
|
line="73"
|
|
name="Q{http://www.w3.org/2005/xpath-functions/map}keys"
|
|
type="*A">
|
|
<varRef name="Q{}vertices" slot="0"/>
|
|
</ifCall>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}vertex" as="1"/>
|
|
<arg name="Q{}item" as="1FM"/>
|
|
<lookup role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="88">
|
|
<varRef name="Q{}item" slot="1"/>
|
|
<str val="from"/>
|
|
</lookup>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}vertex" as="1"/>
|
|
<arg name="Q{}visited" as="*"/>
|
|
<ifCall role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="88"
|
|
name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$visited">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}visited" slot="1"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}edge-vertices"
|
|
line="101"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="+"
|
|
slots="2">
|
|
<arg name="Q{}edge" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<check role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="105"
|
|
card="+"
|
|
diag="5|0|XTTE0780|g:edge-vertices#2">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$g ? "edge-vertices"">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
<str val="edge-vertices"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}edge" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</check>
|
|
</function>
|
|
<function name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
|
|
line="0"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="6">
|
|
<arg name="Q{}state" as="*"/>
|
|
<arg name="Q{}neighbor" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.v2.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="171"
|
|
var="Q{}visited"
|
|
slot="2"
|
|
eval="7">
|
|
<subscript>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
<int val="2"/>
|
|
</subscript>
|
|
<let var="Q{}to" slot="3" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}neighbor" slot="1"/>
|
|
<str val="to"/>
|
|
</lookup>
|
|
<let var="Q{}distance" slot="4" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}neighbor" slot="1"/>
|
|
<str val="distance"/>
|
|
</lookup>
|
|
<let var="Q{}item" slot="5" eval="4">
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}visited" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}to" slot="3"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<choose>
|
|
<or op="or">
|
|
<fn name="empty">
|
|
<varRef name="Q{}item" slot="5"/>
|
|
</fn>
|
|
<vc op="lt"
|
|
onEmpty="0"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<atomSing card="?" diag="1|0||lt">
|
|
<varRef name="Q{}distance" slot="4"/>
|
|
</atomSing>
|
|
<atomSing card="?" diag="1|1||lt">
|
|
<lookup>
|
|
<varRef name="Q{}item" slot="5"/>
|
|
<str val="distance"/>
|
|
</lookup>
|
|
</atomSing>
|
|
</vc>
|
|
</or>
|
|
<sequence>
|
|
<ufCall name="Q{xslt:priority-queue:2020}add" tailCall="false" bSlot="0">
|
|
<treat as="FM" diag="0|0||q:add">
|
|
<check card="1" diag="0|0||q:add">
|
|
<first>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</first>
|
|
</check>
|
|
</treat>
|
|
<check card="?" diag="0|1||q:add">
|
|
<varRef name="Q{}distance" slot="4"/>
|
|
</check>
|
|
<check card="1" diag="0|2||q:add">
|
|
<varRef name="Q{}to" slot="3"/>
|
|
</check>
|
|
<varRef name="Q{}neighbor" slot="1"/>
|
|
</ufCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
|
|
<treat as="FM" diag="0|0||map:put">
|
|
<check card="1" diag="0|0||map:put">
|
|
<varRef name="Q{}visited" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<atomSing diag="0|1||map:put">
|
|
<varRef name="Q{}to" slot="3"/>
|
|
</atomSing>
|
|
<varRef name="Q{}neighbor" slot="1"/>
|
|
</ifCall>
|
|
</sequence>
|
|
<true/>
|
|
<varRef name="Q{}state" slot="0"/>
|
|
</choose>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}search"
|
|
line="22"
|
|
module="file:/C:/projects/git/xslt-graph/search.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*FM"
|
|
slots="4">
|
|
<arg name="Q{}root" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<arg name="Q{}is-depth-first" as="1AB"/>
|
|
<arg name="Q{}visited" as="1FM"/>
|
|
<treat role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
|
|
ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="79"
|
|
as="FM"
|
|
diag="5|0|XTTE0780|g:search#4">
|
|
<ufCall name="Q{xslt:functions:2020}while"
|
|
tailCall="false"
|
|
bSlot="0"
|
|
eval="4 16 16 16">
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="queue"/>
|
|
<arrayBlock>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
|
|
<sequence>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="to"/>
|
|
<varRef name="Q{}root" slot="0"/>
|
|
</ifCall>
|
|
<map size="1">
|
|
<str val="depth"/>
|
|
<int val="0"/>
|
|
</map>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
|
|
<str val="visited"/>
|
|
<varRef name="Q{}visited" slot="3"/>
|
|
</ifCall>
|
|
</sequence>
|
|
<map size="2">
|
|
<str val="duplicates"/>
|
|
<str val="reject"/>
|
|
<str val="duplicates-error-code"/>
|
|
<str val="FOJS0003"/>
|
|
</map>
|
|
</ifCall>
|
|
<fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
|
|
arity="1"
|
|
bSlot="1"/>
|
|
</fnCoercer>
|
|
<fnCoercer to="1F a[*]" diag="0|2||f:while">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
|
|
arity="1"
|
|
bSlot="2"/>
|
|
</fnCoercer>
|
|
<partialApply>
|
|
<fnCoercer to="1F a[*,*,1FM,1AB]" diag="0|0||saxon:call">
|
|
<ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
|
|
arity="4"
|
|
bSlot="3"/>
|
|
</fnCoercer>
|
|
<null/>
|
|
<null/>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
<varRef name="Q{}is-depth-first" slot="2"/>
|
|
</partialApply>
|
|
</ufCall>
|
|
</treat>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}vertices"
|
|
line="42"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="1">
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<forEach role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="45">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="0"/>
|
|
<str val="vertices"/>
|
|
</lookup>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<dot/>
|
|
</treat>
|
|
<array size="0"/>
|
|
</ifCall>
|
|
</forEach>
|
|
</function>
|
|
<function name="Q{private:xslt:priority-queue:2020}find"
|
|
line="167"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="16"
|
|
flags="pU"
|
|
as="1ADI"
|
|
slots="4">
|
|
<arg name="Q{}keys" as="1FM"/>
|
|
<arg name="Q{}items" as="1FA"/>
|
|
<arg name="Q{}priority" as="?"/>
|
|
<arg name="Q{}key" as="1"/>
|
|
<tailCallLoop role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="174">
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="foreign"
|
|
bSlot="0"
|
|
eval="6 6 6 6 0 16">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
<varRef name="Q{}key" slot="3"/>
|
|
<int val="1"/>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
|
|
<varRef name="Q{}items" slot="1"/>
|
|
</ifCall>
|
|
</ufCall>
|
|
</tailCallLoop>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}vertex-edges"
|
|
line="114"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="2">
|
|
<arg name="Q{}vertex" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<ifCall role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="118"
|
|
name="Q{http://saxon.sf.net/}apply"
|
|
type="*"
|
|
dyn="$g ? "vertex-edges"">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
<str val="vertex-edges"/>
|
|
</lookup>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</function>
|
|
<function name="Q{xslt:graph-api:2020}vertex-value"
|
|
line="65"
|
|
module="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
eval="4"
|
|
flags="pU"
|
|
as="*"
|
|
slots="3">
|
|
<arg name="Q{}vertex" as="1"/>
|
|
<arg name="Q{}g" as="1FM"/>
|
|
<let role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
|
|
ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
|
|
line="74"
|
|
var="Q{}fn"
|
|
slot="2"
|
|
eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}g" slot="1"/>
|
|
<str val="vertex-value"/>
|
|
</lookup>
|
|
<choose>
|
|
<fn name="empty">
|
|
<varRef name="Q{}fn" slot="2"/>
|
|
</fn>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
<true/>
|
|
<ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
|
|
<treat as="F" diag="0|0||saxon:apply">
|
|
<check card="1" diag="0|0||saxon:apply">
|
|
<varRef name="Q{}fn" slot="2"/>
|
|
</check>
|
|
</treat>
|
|
<arrayBlock>
|
|
<varRef name="Q{}vertex" slot="0"/>
|
|
</arrayBlock>
|
|
</ifCall>
|
|
</choose>
|
|
</let>
|
|
</function>
|
|
<function name="Q{private:xslt:priority-queue:2020}find"
|
|
line="188"
|
|
module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
eval="16"
|
|
flags="pU"
|
|
as="1ADI"
|
|
slots="10">
|
|
<arg name="Q{}keys" as="1FM"/>
|
|
<arg name="Q{}items" as="1FA"/>
|
|
<arg name="Q{}priority" as="?"/>
|
|
<arg name="Q{}key" as="1"/>
|
|
<arg name="Q{}low" as="1ADI"/>
|
|
<arg name="Q{}high" as="1ADI"/>
|
|
<tailCallLoop role="body"
|
|
baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
|
|
ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
|
|
line="225">
|
|
<choose>
|
|
<vc op="gt" onEmpty="0" comp="CAVC">
|
|
<varRef name="Q{}low" slot="4"/>
|
|
<varRef name="Q{}high" slot="5"/>
|
|
</vc>
|
|
<minus>
|
|
<varRef name="Q{}low" slot="4"/>
|
|
</minus>
|
|
<true/>
|
|
<let var="Q{}mid" slot="6" eval="16">
|
|
<arith op="idiv" calc="i~i">
|
|
<arith op="+" calc="i+i">
|
|
<varRef name="Q{}low" slot="4"/>
|
|
<varRef name="Q{}high" slot="5"/>
|
|
</arith>
|
|
<int val="2"/>
|
|
</arith>
|
|
<let var="Q{}mid-item" slot="7" eval="4">
|
|
<forEach>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}get" type="*">
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
</ifCall>
|
|
<ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<atomSing diag="0|1||map:get">
|
|
<dot/>
|
|
</atomSing>
|
|
</ifCall>
|
|
</forEach>
|
|
<let var="Q{}mid-priority" slot="8" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}mid-item" slot="7"/>
|
|
<str val="priority"/>
|
|
</lookup>
|
|
<let var="Q{}mid-key" slot="9" eval="4">
|
|
<lookup>
|
|
<varRef name="Q{}mid-item" slot="7"/>
|
|
<str val="key"/>
|
|
</lookup>
|
|
<choose>
|
|
<or op="or">
|
|
<vc op="lt"
|
|
onEmpty="0"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<atomSing card="?" diag="1|0||lt">
|
|
<varRef name="Q{}mid-priority" slot="8"/>
|
|
</atomSing>
|
|
<atomSing card="?" diag="1|1||lt">
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
</atomSing>
|
|
</vc>
|
|
<and op="and">
|
|
<fn name="empty">
|
|
<varRef name="Q{}mid-priority" slot="8"/>
|
|
</fn>
|
|
<fn name="exists">
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
</fn>
|
|
</and>
|
|
</or>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="self"
|
|
bSlot="0"
|
|
eval="6 6 6 6 16 6">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
<varRef name="Q{}key" slot="3"/>
|
|
<arith op="+" calc="i+i">
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
<varRef name="Q{}high" slot="5"/>
|
|
</ufCall>
|
|
<true/>
|
|
<choose>
|
|
<or op="or">
|
|
<vc op="gt"
|
|
onEmpty="0"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<atomSing card="?" diag="1|0||gt">
|
|
<varRef name="Q{}mid-priority" slot="8"/>
|
|
</atomSing>
|
|
<atomSing card="?" diag="1|1||gt">
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
</atomSing>
|
|
</vc>
|
|
<and op="and">
|
|
<fn name="exists">
|
|
<varRef name="Q{}mid-priority" slot="8"/>
|
|
</fn>
|
|
<fn name="empty">
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
</fn>
|
|
</and>
|
|
</or>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="self"
|
|
bSlot="1"
|
|
eval="6 6 6 6 6 16">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
<varRef name="Q{}key" slot="3"/>
|
|
<varRef name="Q{}low" slot="4"/>
|
|
<arith op="-" calc="i-i">
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
</ufCall>
|
|
<true/>
|
|
<choose>
|
|
<vc op="lt"
|
|
onEmpty="0"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<atomSing card="?" diag="1|0||lt">
|
|
<varRef name="Q{}mid-key" slot="9"/>
|
|
</atomSing>
|
|
<atomSing card="?" diag="1|1||lt">
|
|
<varRef name="Q{}key" slot="3"/>
|
|
</atomSing>
|
|
</vc>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="self"
|
|
bSlot="2"
|
|
eval="6 6 6 6 16 6">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
<varRef name="Q{}key" slot="3"/>
|
|
<arith op="+" calc="i+i">
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
<varRef name="Q{}high" slot="5"/>
|
|
</ufCall>
|
|
<true/>
|
|
<choose>
|
|
<vc op="gt"
|
|
onEmpty="0"
|
|
comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
|
|
<atomSing card="?" diag="1|0||gt">
|
|
<varRef name="Q{}mid-key" slot="9"/>
|
|
</atomSing>
|
|
<atomSing card="?" diag="1|1||gt">
|
|
<varRef name="Q{}key" slot="3"/>
|
|
</atomSing>
|
|
</vc>
|
|
<ufCall name="Q{private:xslt:priority-queue:2020}find"
|
|
tailCall="self"
|
|
bSlot="3"
|
|
eval="6 6 6 6 6 16">
|
|
<varRef name="Q{}keys" slot="0"/>
|
|
<varRef name="Q{}items" slot="1"/>
|
|
<varRef name="Q{}priority" slot="2"/>
|
|
<varRef name="Q{}key" slot="3"/>
|
|
<varRef name="Q{}low" slot="4"/>
|
|
<arith op="-" calc="i-i">
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
<int val="1"/>
|
|
</arith>
|
|
</ufCall>
|
|
<true/>
|
|
<varRef name="Q{}mid" slot="6"/>
|
|
</choose>
|
|
</choose>
|
|
</choose>
|
|
</choose>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</let>
|
|
</choose>
|
|
</tailCallLoop>
|
|
</function>
|
|
</functions>
|
|
</stylesheet>
|