This file is indexed.

/usr/share/doc/haskell-haskelldb-doc/html/src/Database-HaskellDB-DBSpec-DBInfo.html is in libghc-haskelldb-doc 2.1.1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<?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>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>src/Database/HaskellDB/DBSpec/DBInfo.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>-----------------------------------------------------------</span>
<a name="line-2"></a><span class='hs-comment'>-- |</span>
<a name="line-3"></a><span class='hs-comment'>-- Module      :  DBInfo</span>
<a name="line-4"></a><span class='hs-comment'>-- Copyright   :  HWT Group (c) 2004, haskelldb-users@lists.sourceforge.net</span>
<a name="line-5"></a><span class='hs-comment'>-- License     :  BSD-style</span>
<a name="line-6"></a><span class='hs-comment'>-- </span>
<a name="line-7"></a><span class='hs-comment'>-- Maintainer  :  haskelldb-users@lists.sourceforge.net</span>
<a name="line-8"></a><span class='hs-comment'>-- Stability   :  experimental</span>
<a name="line-9"></a><span class='hs-comment'>-- Portability :  non-portable</span>
<a name="line-10"></a><span class='hs-comment'>--</span>
<a name="line-11"></a><span class='hs-comment'>-- This is the "core" file of the DBSpec files. It defines</span>
<a name="line-12"></a><span class='hs-comment'>-- a DBInfo and important functions on it.</span>
<a name="line-13"></a><span class='hs-comment'>--</span>
<a name="line-14"></a><span class='hs-comment'>-- </span>
<a name="line-15"></a><span class='hs-comment'>-----------------------------------------------------------</span>
<a name="line-16"></a>
<a name="line-17"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Database</span><span class='hs-varop'>.</span><span class='hs-conid'>HaskellDB</span><span class='hs-varop'>.</span><span class='hs-conid'>DBSpec</span><span class='hs-varop'>.</span><span class='hs-conid'>DBInfo</span>
<a name="line-18"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>DBInfo</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>TInfo</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>CInfo</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-conid'>DBOptions</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span><span class='hs-varid'>makeDBSpec</span><span class='hs-layout'>,</span>
<a name="line-19"></a>     <span class='hs-varid'>makeTInfo</span><span class='hs-layout'>,</span><span class='hs-varid'>makeCInfo</span><span class='hs-layout'>,</span><span class='hs-varid'>ppDBInfo</span><span class='hs-layout'>,</span><span class='hs-varid'>ppTInfo</span><span class='hs-layout'>,</span><span class='hs-varid'>ppCInfo</span><span class='hs-layout'>,</span><span class='hs-varid'>ppDBOptions</span><span class='hs-layout'>,</span>
<a name="line-20"></a>     <span class='hs-varid'>dbInfoToDoc</span><span class='hs-layout'>,</span><span class='hs-varid'>finalizeSpec</span><span class='hs-layout'>,</span><span class='hs-varid'>constructNonClashingDBInfo</span><span class='hs-layout'>)</span>
<a name="line-21"></a>    <span class='hs-keyword'>where</span>
<a name="line-22"></a>
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Database</span><span class='hs-varop'>.</span><span class='hs-conid'>HaskellDB</span><span class='hs-varop'>.</span><span class='hs-conid'>DBSpec</span><span class='hs-varop'>.</span><span class='hs-conid'>PPHelpers</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>PP</span>
<a name="line-24"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Database</span><span class='hs-varop'>.</span><span class='hs-conid'>HaskellDB</span><span class='hs-varop'>.</span><span class='hs-conid'>FieldType</span> <span class='hs-layout'>(</span><span class='hs-conid'>FieldDesc</span><span class='hs-layout'>,</span> <span class='hs-conid'>FieldType</span><span class='hs-layout'>(</span><span class='hs-conid'>BStrT</span><span class='hs-layout'>,</span> <span class='hs-conid'>StringT</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>)</span>
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>toLower</span><span class='hs-layout'>,</span> <span class='hs-varid'>isAlpha</span><span class='hs-layout'>)</span>
<a name="line-26"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>PrettyPrint</span><span class='hs-varop'>.</span><span class='hs-conid'>HughesPJ</span>
<a name="line-27"></a>
<a name="line-28"></a><a name="DBInfo"></a><span class='hs-comment'>-- | Defines a database layout, top level</span>
<a name="line-29"></a><a name="DBInfo"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DBInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>dbname</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ The name of the database</span>
<a name="line-30"></a>		     <span class='hs-layout'>,</span><span class='hs-varid'>opts</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBOptions</span>  <span class='hs-comment'>-- ^ Any options (i.e whether to use</span>
<a name="line-31"></a>					 <span class='hs-comment'>--   Bounded Strings)</span>
<a name="line-32"></a>		     <span class='hs-layout'>,</span><span class='hs-varid'>tbls</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TInfo</span><span class='hs-keyglyph'>]</span>    <span class='hs-comment'>-- ^ Tables this database contains</span>
<a name="line-33"></a>		     <span class='hs-layout'>}</span>
<a name="line-34"></a>	      <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-35"></a>
<a name="line-36"></a><a name="TInfo"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TInfo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>tname</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>  <span class='hs-comment'>-- ^ The name of the table</span>
<a name="line-37"></a>		   <span class='hs-layout'>,</span><span class='hs-varid'>cols</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>CInfo</span><span class='hs-keyglyph'>]</span>  <span class='hs-comment'>-- ^ The columns in this table</span>
<a name="line-38"></a>		   <span class='hs-layout'>}</span>
<a name="line-39"></a>	      <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-40"></a><a name="CInfo"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>CInfo</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>cname</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>    <span class='hs-comment'>-- ^ The name of this column</span>
<a name="line-41"></a>		   <span class='hs-layout'>,</span><span class='hs-varid'>descr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FieldDesc</span> <span class='hs-comment'>-- ^ The description of this column</span>
<a name="line-42"></a>		   <span class='hs-layout'>}</span>
<a name="line-43"></a>	     <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span><span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
<a name="line-44"></a>
<a name="line-45"></a><a name="DBOptions"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DBOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DBOptions</span>
<a name="line-46"></a>		   <span class='hs-layout'>{</span><span class='hs-varid'>useBString</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span> <span class='hs-comment'>-- ^ Use Bounded Strings?</span>
<a name="line-47"></a>		   <span class='hs-layout'>,</span><span class='hs-varid'>makeIdent</span>  <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PP</span><span class='hs-varop'>.</span><span class='hs-conid'>MakeIdentifiers</span> <span class='hs-comment'>-- ^ Conversion routines from Database identifiers to Haskell identifiers</span>
<a name="line-48"></a>		   <span class='hs-layout'>}</span>
<a name="line-49"></a>
<a name="line-50"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>DBOptions</span> <span class='hs-keyword'>where</span>
<a name="line-51"></a>   <span class='hs-varid'>showsPrec</span> <span class='hs-varid'>p</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span>
<a name="line-52"></a>      <span class='hs-varid'>showString</span> <span class='hs-str'>"DBOptions {useBString = "</span> <span class='hs-varop'>.</span>
<a name="line-53"></a>      <span class='hs-varid'>shows</span> <span class='hs-layout'>(</span><span class='hs-varid'>useBString</span> <span class='hs-varid'>opts</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span>
<a name="line-54"></a>      <span class='hs-varid'>showString</span> <span class='hs-str'>"}"</span>
<a name="line-55"></a>
<a name="line-56"></a>
<a name="line-57"></a><a name="dbInfoToDoc"></a><span class='hs-comment'>-- | Creates a valid declaration of a DBInfo. The variable name will be the</span>
<a name="line-58"></a><span class='hs-comment'>--   same as the database name</span>
<a name="line-59"></a><span class='hs-definition'>dbInfoToDoc</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-60"></a><span class='hs-definition'>dbInfoToDoc</span> <span class='hs-varid'>dbi</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>DBInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>dbname</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span>
<a name="line-61"></a>                        <span class='hs-layout'>,</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>opt</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span> 
<a name="line-62"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fixedName</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>text</span> <span class='hs-str'>":: DBInfo"</span>
<a name="line-63"></a>      <span class='hs-varop'>$$</span> <span class='hs-varid'>fixedName</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>equals</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>ppDBInfo</span> <span class='hs-varid'>dbi</span>
<a name="line-64"></a>      <span class='hs-keyword'>where</span> <span class='hs-varid'>fixedName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>text</span> <span class='hs-varop'>.</span> <span class='hs-conid'>PP</span><span class='hs-varop'>.</span><span class='hs-varid'>identifier</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeIdent</span> <span class='hs-varid'>opt</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>n</span>
<a name="line-65"></a>
<a name="line-66"></a><a name="ppDBInfo"></a><span class='hs-comment'>-- | Pretty prints a DBInfo</span>
<a name="line-67"></a><span class='hs-definition'>ppDBInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-68"></a><span class='hs-definition'>ppDBInfo</span> <span class='hs-layout'>(</span><span class='hs-conid'>DBInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>dbname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>n</span><span class='hs-layout'>,</span> <span class='hs-varid'>opts</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>o</span><span class='hs-layout'>,</span> <span class='hs-varid'>tbls</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span> 
<a name="line-69"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>text</span> <span class='hs-str'>"DBInfo"</span> <span class='hs-varop'>&lt;+&gt;</span> 
<a name="line-70"></a>	 <span class='hs-varid'>braces</span> <span class='hs-layout'>(</span><span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>punctuate</span> <span class='hs-varid'>comma</span> <span class='hs-layout'>(</span>
<a name="line-71"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"dbname ="</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>doubleQuotes</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span>
<a name="line-72"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"opts ="</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>ppDBOptions</span> <span class='hs-varid'>o</span> <span class='hs-conop'>:</span>
<a name="line-73"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"tbls ="</span> <span class='hs-varop'>&lt;+&gt;</span> 
<a name="line-74"></a>		 <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>punctuate</span> <span class='hs-varid'>comma</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>ppTInfo</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-75"></a>
<a name="line-76"></a><a name="ppTInfo"></a><span class='hs-definition'>ppTInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-77"></a><span class='hs-definition'>ppTInfo</span> <span class='hs-layout'>(</span><span class='hs-conid'>TInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>tname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>n</span><span class='hs-layout'>,</span><span class='hs-varid'>cols</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>c</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
<a name="line-78"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>text</span> <span class='hs-str'>"TInfo"</span> <span class='hs-varop'>&lt;+&gt;</span> 
<a name="line-79"></a>      <span class='hs-varid'>braces</span> <span class='hs-layout'>(</span><span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>punctuate</span> <span class='hs-varid'>comma</span> <span class='hs-layout'>(</span>
<a name="line-80"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"tname ="</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>doubleQuotes</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span>
<a name="line-81"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"cols ="</span> <span class='hs-varop'>&lt;+&gt;</span> 
<a name="line-82"></a>		 <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>punctuate</span> <span class='hs-varid'>comma</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>ppCInfo</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-83"></a>
<a name="line-84"></a><a name="ppCInfo"></a><span class='hs-definition'>ppCInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>CInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-85"></a><span class='hs-definition'>ppCInfo</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>cname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>n</span><span class='hs-layout'>,</span><span class='hs-varid'>descr</span><span class='hs-keyglyph'>=</span><span class='hs-layout'>(</span><span class='hs-varid'>val</span><span class='hs-layout'>,</span><span class='hs-varid'>null</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
<a name="line-86"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>text</span> <span class='hs-str'>"CInfo"</span> <span class='hs-varop'>&lt;+&gt;</span>
<a name="line-87"></a>      <span class='hs-varid'>braces</span> <span class='hs-layout'>(</span><span class='hs-varid'>vcat</span> <span class='hs-layout'>(</span><span class='hs-varid'>punctuate</span> <span class='hs-varid'>comma</span> <span class='hs-layout'>(</span>
<a name="line-88"></a>	         <span class='hs-varid'>text</span> <span class='hs-str'>"cname ="</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>doubleQuotes</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span>
<a name="line-89"></a>		 <span class='hs-varid'>text</span> <span class='hs-str'>"descr ="</span> <span class='hs-varop'>&lt;+&gt;</span> 
<a name="line-90"></a>		 <span class='hs-varid'>parens</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>val</span><span class='hs-layout'>)</span> <span class='hs-varop'>&lt;&gt;</span> <span class='hs-varid'>comma</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>text</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>null</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-91"></a>
<a name="line-92"></a><a name="ppDBOptions"></a><span class='hs-definition'>ppDBOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBOptions</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Doc</span>
<a name="line-93"></a><span class='hs-definition'>ppDBOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>DBOptions</span> <span class='hs-layout'>{</span><span class='hs-varid'>useBString</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>b</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
<a name="line-94"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>text</span> <span class='hs-str'>"DBOptions"</span> <span class='hs-varop'>&lt;+&gt;</span>
<a name="line-95"></a>      <span class='hs-varid'>braces</span> <span class='hs-layout'>(</span><span class='hs-varid'>text</span> <span class='hs-str'>"useBString ="</span> <span class='hs-varop'>&lt;+&gt;</span> <span class='hs-varid'>text</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-96"></a>
<a name="line-97"></a><a name="finalizeSpec"></a><span class='hs-comment'>-- | Does a final "touching up" of a DBInfo before it is used by i.e DBDirect.</span>
<a name="line-98"></a><span class='hs-comment'>-- This converts any Bounded Strings to ordinary strings if that flag is set.</span>
<a name="line-99"></a><span class='hs-definition'>finalizeSpec</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span>
<a name="line-100"></a><span class='hs-definition'>finalizeSpec</span> <span class='hs-varid'>dbi</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>useBString</span> <span class='hs-layout'>(</span><span class='hs-varid'>opts</span> <span class='hs-varid'>dbi</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyword'>then</span> 
<a name="line-101"></a>		   <span class='hs-varid'>dbi</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>stripBStr</span> <span class='hs-varid'>dbi</span>
<a name="line-102"></a>
<a name="line-103"></a><a name="stripBStr"></a><span class='hs-comment'>-- | Converts all BStrings to ordinary Strings</span>
<a name="line-104"></a><span class='hs-definition'>stripBStr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span>
<a name="line-105"></a><span class='hs-definition'>stripBStr</span> <span class='hs-varid'>dbi</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fixTables</span> <span class='hs-varid'>dbi</span>
<a name="line-106"></a>    <span class='hs-keyword'>where</span>
<a name="line-107"></a>    <span class='hs-varid'>fixTables</span> <span class='hs-varid'>dbi</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>dbi</span><span class='hs-layout'>{</span><span class='hs-varid'>tbls</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>map</span> <span class='hs-varid'>fixCols</span> <span class='hs-layout'>(</span><span class='hs-varid'>tbls</span> <span class='hs-varid'>dbi</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-108"></a>    <span class='hs-varid'>fixCols</span> <span class='hs-varid'>tbl</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tbl</span><span class='hs-layout'>{</span><span class='hs-varid'>cols</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>map</span> <span class='hs-varid'>oneCol</span> <span class='hs-layout'>(</span><span class='hs-varid'>cols</span> <span class='hs-varid'>tbl</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-109"></a>    <span class='hs-varid'>oneCol</span> <span class='hs-varid'>col</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>col</span><span class='hs-layout'>{</span><span class='hs-varid'>descr</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fixDescr</span> <span class='hs-layout'>(</span><span class='hs-varid'>descr</span> <span class='hs-varid'>col</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-110"></a>    <span class='hs-varid'>fixDescr</span> <span class='hs-varid'>col</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>fst</span> <span class='hs-varid'>col</span> <span class='hs-keyword'>of</span>
<a name="line-111"></a>		       <span class='hs-conid'>BStrT</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>StringT</span><span class='hs-layout'>,</span><span class='hs-varid'>snd</span> <span class='hs-varid'>col</span><span class='hs-layout'>)</span>
<a name="line-112"></a>		       <span class='hs-keyword'>_</span>       <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>col</span>
<a name="line-113"></a>
<a name="line-114"></a><a name="makeDBSpec"></a><span class='hs-comment'>-- | Creates a DBInfo</span>
<a name="line-115"></a><span class='hs-definition'>makeDBSpec</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ The name of the Database</span>
<a name="line-116"></a>	   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBOptions</span> <span class='hs-comment'>-- ^ Options</span>
<a name="line-117"></a>	   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TInfo</span><span class='hs-keyglyph'>]</span>  <span class='hs-comment'>-- ^ Tables</span>
<a name="line-118"></a>	   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span> <span class='hs-comment'>-- ^ The generated DBInfo</span>
<a name="line-119"></a><span class='hs-definition'>makeDBSpec</span> <span class='hs-varid'>name</span> <span class='hs-varid'>opt</span> <span class='hs-varid'>tinfos</span>
<a name="line-120"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DBInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>dbname</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>name</span><span class='hs-layout'>,</span> <span class='hs-varid'>opts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>opt</span><span class='hs-layout'>,</span> <span class='hs-varid'>tbls</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tinfos</span><span class='hs-layout'>}</span>
<a name="line-121"></a>
<a name="line-122"></a><a name="makeTInfo"></a><span class='hs-comment'>-- | Creates a TInfo</span>
<a name="line-123"></a><span class='hs-definition'>makeTInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ The table name</span>
<a name="line-124"></a>	  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>CInfo</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Columns </span>
<a name="line-125"></a>	  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>TInfo</span> <span class='hs-comment'>-- ^ The generated TInfo</span>
<a name="line-126"></a><span class='hs-definition'>makeTInfo</span> <span class='hs-varid'>name</span> <span class='hs-varid'>cinfs</span>
<a name="line-127"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>tname</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>name</span><span class='hs-layout'>,</span> <span class='hs-varid'>cols</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>cinfs</span><span class='hs-layout'>}</span>
<a name="line-128"></a>
<a name="line-129"></a><a name="makeCInfo"></a><span class='hs-comment'>-- | Creates a CInfo</span>
<a name="line-130"></a><span class='hs-definition'>makeCInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ The column name</span>
<a name="line-131"></a>	  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>FieldDesc</span> <span class='hs-comment'>-- ^ What the column contains</span>
<a name="line-132"></a>	  <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CInfo</span> <span class='hs-comment'>-- ^ The generated CInfo</span>
<a name="line-133"></a><span class='hs-definition'>makeCInfo</span> <span class='hs-varid'>name</span> <span class='hs-varid'>fdef</span>
<a name="line-134"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CInfo</span> <span class='hs-layout'>{</span><span class='hs-varid'>cname</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>name</span><span class='hs-layout'>,</span> <span class='hs-varid'>descr</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fdef</span><span class='hs-layout'>}</span>
<a name="line-135"></a>
<a name="line-136"></a><span class='hs-comment'>-----------------------------------------------------</span>
<a name="line-137"></a><span class='hs-comment'>-- Functions for avoiding nameclashes</span>
<a name="line-138"></a><span class='hs-comment'>-----------------------------------------------------</span>
<a name="line-139"></a>
<a name="line-140"></a><a name="constructNonClashingDBInfo"></a><span class='hs-comment'>-- | Constructs a DBInfo that doesn't cause nameclashes</span>
<a name="line-141"></a><span class='hs-definition'>constructNonClashingDBInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span>
<a name="line-142"></a><span class='hs-definition'>constructNonClashingDBInfo</span> <span class='hs-varid'>dbinfo</span> <span class='hs-keyglyph'>=</span> 
<a name="line-143"></a>    <span class='hs-keyword'>let</span> <span class='hs-varid'>db'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeDBNameUnique</span> <span class='hs-varid'>dbinfo</span>
<a name="line-144"></a>    <span class='hs-keyword'>in</span>  <span class='hs-keyword'>if</span> <span class='hs-varid'>equalObjectNames</span> <span class='hs-varid'>db'</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeDBNameUnique</span> <span class='hs-varid'>db'</span><span class='hs-layout'>)</span>
<a name="line-145"></a>          <span class='hs-keyword'>then</span> <span class='hs-varid'>db'</span>
<a name="line-146"></a>	  <span class='hs-keyword'>else</span> <span class='hs-varid'>constructNonClashingDBInfo</span> <span class='hs-varid'>db'</span>
<a name="line-147"></a>
<a name="line-148"></a><a name="equalObjectNames"></a><span class='hs-definition'>equalObjectNames</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-149"></a><span class='hs-definition'>equalObjectNames</span> <span class='hs-varid'>db1</span> <span class='hs-varid'>db2</span> <span class='hs-keyglyph'>=</span>
<a name="line-150"></a>   <span class='hs-varid'>dbname</span> <span class='hs-varid'>db1</span> <span class='hs-varop'>==</span> <span class='hs-varid'>dbname</span> <span class='hs-varid'>db2</span> <span class='hs-varop'>&amp;&amp;</span>
<a name="line-151"></a>   <span class='hs-varid'>tbls</span> <span class='hs-varid'>db1</span> <span class='hs-varop'>==</span> <span class='hs-varid'>tbls</span> <span class='hs-varid'>db2</span>
<a name="line-152"></a>
<a name="line-153"></a><a name="makeTblNamesUnique"></a><span class='hs-comment'>-- | Makes a table name unique among all other table names</span>
<a name="line-154"></a><span class='hs-definition'>makeTblNamesUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TInfo</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TInfo</span><span class='hs-keyglyph'>]</span>
<a name="line-155"></a><span class='hs-definition'>makeTblNamesUnique</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-156"></a><span class='hs-definition'>makeTblNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span>
<a name="line-157"></a><span class='hs-definition'>makeTblNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span><span class='hs-conop'>:</span><span class='hs-varid'>tt</span><span class='hs-conop'>:</span><span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
<a name="line-158"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>compNames</span> <span class='hs-layout'>(</span><span class='hs-varid'>tname</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>tname</span> <span class='hs-varid'>tt</span><span class='hs-layout'>)</span> 
<a name="line-159"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span><span class='hs-conop'>:</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeTblNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>tblNewName</span> <span class='hs-varid'>tt</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-160"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span> <span class='hs-conop'>:</span> <span class='hs-varid'>makeTblNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>tt</span><span class='hs-conop'>:</span><span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
<a name="line-161"></a>    <span class='hs-keyword'>where</span> 
<a name="line-162"></a>    <span class='hs-varid'>tblNewName</span> <span class='hs-varid'>tinfo</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>TInfo</span><span class='hs-layout'>{</span><span class='hs-varid'>tname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>n</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>tname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-163"></a>
<a name="line-164"></a><a name="makeFieldNamesUnique"></a><span class='hs-comment'>-- | Makes a field name unique among all other field names</span>
<a name="line-165"></a><span class='hs-definition'>makeFieldNamesUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>CInfo</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>CInfo</span><span class='hs-keyglyph'>]</span>
<a name="line-166"></a><span class='hs-definition'>makeFieldNamesUnique</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-167"></a><span class='hs-definition'>makeFieldNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span><span class='hs-conop'>:</span><span class='hs-conid'>[]</span>
<a name="line-168"></a><span class='hs-definition'>makeFieldNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span><span class='hs-conop'>:</span><span class='hs-varid'>ff</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span>
<a name="line-169"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>compNames</span> <span class='hs-layout'>(</span><span class='hs-varid'>cname</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>cname</span> <span class='hs-varid'>ff</span><span class='hs-layout'>)</span> 
<a name="line-170"></a>	<span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span><span class='hs-conop'>:</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeFieldNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>fNewName</span> <span class='hs-varid'>ff</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-171"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span> <span class='hs-conop'>:</span> <span class='hs-varid'>makeFieldNamesUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>ff</span><span class='hs-conop'>:</span><span class='hs-varid'>fs</span><span class='hs-layout'>)</span>
<a name="line-172"></a>    <span class='hs-keyword'>where</span> 
<a name="line-173"></a>    <span class='hs-varid'>fNewName</span> <span class='hs-varid'>cinfo</span><span class='hs-keyglyph'>@</span><span class='hs-conid'>CInfo</span><span class='hs-layout'>{</span><span class='hs-varid'>cname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>n</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>cinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>cname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-174"></a>
<a name="line-175"></a><a name="makeDBNameUnique"></a><span class='hs-comment'>-- | makes the dbname unique in a database</span>
<a name="line-176"></a><span class='hs-definition'>makeDBNameUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DBInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>DBInfo</span>
<a name="line-177"></a><span class='hs-definition'>makeDBNameUnique</span> <span class='hs-varid'>dbinfo</span> 
<a name="line-178"></a>    <span class='hs-keyglyph'>=</span> <span class='hs-varid'>dbinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>tbls</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeTblNameUnique</span> <span class='hs-layout'>(</span><span class='hs-varid'>dbname</span> <span class='hs-varid'>dbinfo</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>tbls</span> <span class='hs-varid'>dbinfo</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-179"></a>
<a name="line-180"></a><a name="makeTblNameUnique"></a><span class='hs-comment'>-- | makes a supplied name unique in a table and its subfields</span>
<a name="line-181"></a><span class='hs-definition'>makeTblNameUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>TInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>TInfo</span>
<a name="line-182"></a><span class='hs-definition'>makeTblNameUnique</span> <span class='hs-varid'>s</span> <span class='hs-varid'>tinfo</span>
<a name="line-183"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>compNames</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-varid'>tname</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> 
<a name="line-184"></a>	<span class='hs-varid'>tinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>cols</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeFieldNameUnique</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> 
<a name="line-185"></a>	      <span class='hs-layout'>(</span><span class='hs-varid'>cols</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>tname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-layout'>(</span><span class='hs-varid'>tname</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-186"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>cols</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeFieldNameUnique</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>cols</span> <span class='hs-varid'>tinfo</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-187"></a>
<a name="line-188"></a><a name="makeFieldNameUnique"></a><span class='hs-comment'>-- | makes a supplied name unique in a field</span>
<a name="line-189"></a><span class='hs-definition'>makeFieldNameUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CInfo</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>CInfo</span>
<a name="line-190"></a><span class='hs-definition'>makeFieldNameUnique</span> <span class='hs-varid'>s</span> <span class='hs-varid'>cinfo</span> 
<a name="line-191"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>compNames</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-varid'>cname</span> <span class='hs-varid'>cinfo</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>cinfo</span><span class='hs-layout'>{</span><span class='hs-varid'>cname</span><span class='hs-keyglyph'>=</span><span class='hs-varid'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-layout'>(</span><span class='hs-varid'>cname</span> <span class='hs-varid'>cinfo</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span>
<a name="line-192"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>True</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>cinfo</span>
<a name="line-193"></a>
<a name="line-194"></a><a name="newName"></a><span class='hs-comment'>-- | Gives a String a new name, according to its type</span>
<a name="line-195"></a><span class='hs-definition'>newName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Either</span> <span class='hs-conid'>String</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ Either a Table or a Field</span>
<a name="line-196"></a>	<span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-comment'>-- ^ The new name</span>
<a name="line-197"></a><span class='hs-definition'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Left</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span> <span class='hs-varop'>++</span> <span class='hs-str'>"T"</span>
<a name="line-198"></a><span class='hs-definition'>newName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Right</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-varop'>++</span> <span class='hs-str'>"F"</span>
<a name="line-199"></a>
<a name="line-200"></a><a name="compNames"></a><span class='hs-comment'>-- | Case insensitive String comparison (there probably is a standard function</span>
<a name="line-201"></a><span class='hs-comment'>--   for this, there ought to be anyway</span>
<a name="line-202"></a><span class='hs-definition'>compNames</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span>
<a name="line-203"></a><span class='hs-definition'>compNames</span> <span class='hs-varid'>s1</span> <span class='hs-varid'>s2</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toLower</span> <span class='hs-varid'>s1</span> <span class='hs-varop'>==</span> <span class='hs-varid'>map</span> <span class='hs-varid'>toLower</span> <span class='hs-varid'>s2</span>
</pre></body>
</html>