File: xmlpatterns-xquery-globalvariables-reportglobals-xq.html

package info (click to toggle)
qt4-x11 4%3A4.8.2%2Bdfsg-11
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 701,696 kB
  • sloc: cpp: 2,686,179; ansic: 375,485; python: 25,859; sh: 19,349; xml: 17,091; perl: 14,765; yacc: 5,383; asm: 5,038; makefile: 1,259; lex: 555; ruby: 526; objc: 347; cs: 112; pascal: 112; php: 54; sed: 34
file content (163 lines) | stat: -rw-r--r-- 6,637 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Qt 4.8: reportGlobals.xq Example File (xmlpatterns/xquery/globalVariables/reportGlobals.xq)</title>
  <link rel="stylesheet" type="text/css" href="style/offline.css" />
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="content"> 
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
  </div>
  <div class="breadcrumb toolblock">
    <ul>
      <li class="first"><a href="index.html">Home</a></li>
      <!--  Breadcrumbs go here -->
    </ul>
  </div>
</div>
<div class="content mainContent">
<h1 class="title">reportGlobals.xq Example File</h1>
<span class="small-subtitle">xmlpatterns/xquery/globalVariables/reportGlobals.xq</span>
<!-- $$$xmlpatterns/xquery/globalVariables/reportGlobals.xq-description -->
<div class="descr"> <a name="details"></a>
<pre class="cpp"> (:
     This XQuery loads a GCC-XML file and reports the locations of all
     global variables in the original C++ source. To run the query,
     use the command line:

     xmlpatterns reportGlobals.xq -param fileToOpen=globals.gccxml -output globals.html

     &quot;fileToOpen=globals.gccxml&quot; binds the file name &quot;globals.gccxml&quot;
     to the variable &quot;fileToOpen&quot; declared and used below.
 :)

 declare variable $fileToOpen as xs:anyURI external;
 declare variable $inDoc as document-node() := doc($fileToOpen);

 (:
    This function determines whether the typeId is a complex type,
    e.g. QString. We only check whether it's a class. To be strictly
    correct, we should check whether the class has a non-synthesized
    constructor. We accept both mutable and const types.
 :)
 declare function local:isComplexType($typeID as xs:string) as xs:boolean
 {
     exists($inDoc/GCC_XML/Class[@id = $typeID])
     or
     exists($inDoc/GCC_XML/Class[@id = $inDoc/GCC_XML/CvQualifiedType[@id = $typeID]/@type])
 };

 (:
    This function determines whether the typeId is a primitive type.
 :)
 declare function local:isPrimitive($typeId as xs:string) as xs:boolean
 {
     exists($inDoc/GCC_XML/FundamentalType[@id = $typeId])
 };

 (:
    This function constructs a line for the report. The line contains
    a variable name, the source file, and the line number.
 :)
 declare function local:location($block as element()) as xs:string
 {
     concat($inDoc/GCC_XML/File[@id = $block/@file]/@name, &quot; at line &quot;, $block/@line)
 };

 (:
    This function generates the report. Note that it is called once
    in the &lt;body&gt; element of the &lt;html&gt; output.

    It ignores const variables of simple types but reports all others.
 :)
 declare function local:report() as element()+
 {
     let $complexVariables as element(Variable)* := $inDoc/GCC_XML/Variable[local:isComplexType(@type)]
     return if (exists($complexVariables))
            then (&lt;p xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;Global variables with complex types:&lt;/p&gt;,
                  &lt;ol xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;
                     {
                         (: For each Variable in $complexVariables... :)
                         $complexVariables/&lt;li&gt;&lt;span class=&quot;variableName&quot;&gt;{string(@name)}&lt;/span&gt; in {local:location(.)}&lt;/li&gt;
                     }
                  &lt;/ol&gt;)
            else &lt;p xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;No complex global variables found.&lt;/p&gt;

     ,

     let $primitiveVariables as element(Variable)+ := $inDoc/GCC_XML/Variable[local:isPrimitive(@type)]
     return if (exists($primitiveVariables))
            then (&lt;p xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;Mutable global variables with primitives types:&lt;/p&gt;,
                  &lt;ol xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;
                     {
                         (: For each Variable in $complexVariables... :)
                         $primitiveVariables/&lt;li&gt;&lt;span class=&quot;variableName&quot;&gt;{string(@name)}&lt;/span&gt; in {local:location(.)}&lt;/li&gt;
                     }
                  &lt;/ol&gt;)
            else &lt;p xmlns=&quot;http://www.w3.org/1999/xhtml/&quot;&gt;No mutable primitive global variables found.&lt;/p&gt;
 };

 (:
     This is where the &lt;html&gt; report is output. First
     there is some style stuff, then the &lt;body&gt; element,
     which contains the call to the \c{local:report()}
     declared above.
 :)
 &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml/&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
     &lt;head&gt;
         &lt;title&gt;Global variables report for {$fileToOpen}&lt;/title&gt;
     &lt;/head&gt;
     &lt;style type=&quot;text/css&quot;&gt;
         .details
         {{
             text-align: left;
             font-size: 80%;
             color: blue
         }}
         .variableName
         {{
             font-family: courier;
             color: blue
         }}
     &lt;/style&gt;

     &lt;body&gt;
         &lt;p class=&quot;details&quot;&gt;Start report: {current-dateTime()}&lt;/p&gt;
         {
             local:report()
         }
         &lt;p class=&quot;details&quot;&gt;End report: {current-dateTime()}&lt;/p&gt;
     &lt;/body&gt;

 &lt;/html&gt;</pre>
</div>
<!-- @@@xmlpatterns/xquery/globalVariables/reportGlobals.xq -->
  <div class="ft">
    <span></span>
  </div>
</div> 
<div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2012 Nokia Corporation and/or its
      subsidiaries. Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      The documentation provided herein is licensed under the terms of the
      <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
      License version 1.3</a> as published by the Free Software Foundation.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Nokia, Qt and their respective logos are trademarks of Nokia Corporation 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
</div>
</body>
</html>