casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MirVisReader.h
Go to the documentation of this file.
1 //# MirVisReader.h: reads data from a Miriad Visibility dataset
2 //# Copyright (C) 2000,2001,2002
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //#
27 //# $Id: MirVisReader.h,v 1.2 2009/09/03 23:28:32 pteuben Exp $
28 
29 #ifndef BIMA_MIRVISREADER_H
30 #define BIMA_MIRVISREADER_H
31 
32 #include <casa/Logging/LogIO.h>
33 #include <casa/Containers/Block.h>
34 #include <list>
35 
37 #include <mirlib/miriad.h>
38 
39 #include <casa/namespace.h>
40 //# Forward Declarations
41 namespace casacore{
42 
43 class String;
44 class AipsError;
45 }
46 
47 namespace casa { //# NAMESPACE CASA - BEGIN
48 //class GlishRecord;
49 } //# NAMESPACE CASA - END
50 
51 //class GlishArray;
52 class MirVarHandler;
53 
54 // <summary>
55 // a container for a data record read in from a Miriad datatset
56 // </summary>
57 //
58 // <use visibility=local>
59 //
60 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
61 // </reviewed>
62 //
63 // <etymology>
64 // this class holds the record-dependent data from a Miriad dataset
65 // </etymology>
66 //
67 // <motivation>
68 // MSes filled from Miriad data feature multiple windows of differing shapes.
69 // Performance during casacore::MS reads can be aided by collecting together casacore::MS table
70 // records of the same shape (e.g. of the same window). MirFiller accoplishes
71 // this by reading all baselines from a single timestamp at once, so that
72 // they written out in order of spectral window. This class provides a
73 // container for holding the data from different baselines.
74 //
75 // Access Performance is aided when the data from a Miriad dataset is filled
76 // in a particular order. This class provides a container so that the data
77 // can be buffered for "sorting" prior to filling into the output MS.
78 // </motivation>
79 //
80 // <synopsis>
81 // At the moment, this is intended for use only by the MirFiller class.
82 //
83 //
84 // </synopsis>
85 //
86 // <example>
87 //
88 //
89 // </example>
90 //
91 // <todo asof="2001/02/22">
92 //
93 // </todo>
94 //
103 
104 public:
105  MirDataRecord(casacore::Int nnarrow=0, casacore::Int nwide=0, casacore::Int npreamble=5);
106  ~MirDataRecord();
107 
108  // return the number of preamble elements
110 
111  // return the number of narrow band channels
113 
114  // return the number of wide band channels
116 
117  // return the address of the preamble buffer
119 
120  // return the address of the narrow channel data buffer
122 
123  // return the address of the wide channel data buffer
124  casacore::Float *wide() { return wide_p; }
125 
126  // return the address of the flags channel data buffer
127  casacore::Int *flags() { return flags_p; }
128 
129  // return the address of the wflags channel data buffer
131 
132  // return the polarization code
133  casacore::Int pol() { return pol_p; }
134 
135  // set the polarization code
136  void setPol(casacore::Int val) { pol_p = val; }
137 
138  // return true if this record is marked
140 
141  // set the mark
142  void setMarked(casacore::Bool val) { marked_p = val; }
143 
144  void copyFrom(const MirDataRecord& other);
145 };
146 
147 // <summary>
148 // a Miriad history reader
149 // </summary>
150 //
151 // <use visibility=export>
152 //
153 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
154 // </reviewed>
155 //
156 // <etymology>
157 // Class name is short for Miriad history reader.
158 // </etymology>
159 //
160 // <motivation>
161 // Miriad history is read independently from the visibility data; thus,
162 // an independent class is in order. This class hides the details of how
163 // to read Miriad history.
164 // </motivation>
165 //
166 // <synopsis>
167 // This class is used to extract history from a Miriad visibility dataset.
168 // Normally, an application does not create this class by itself, but rather
169 // via MirVisReader::openHistory();
170 // </synopsis>
171 //
172 // <example>
173 //
174 //
175 // </example>
176 //
177 // <todo asof="2001/05/15">
178 // </todo>
179 //
181 private:
184 
185 public:
186 
187  // create a History reader from a Miriad file handle
188  MirHisReader(casacore::Int mirhandle) : uv_handle_p(mirhandle), eof_p(0) {
189  hisopen_c(uv_handle_p, "read");
190  }
191 
192  // delete the reader
195  }
196 
197  // return true this reader there is no more history to read
198  casacore::Bool atEnd() { return (eof_p > 0); }
199 
200  // read the next available line into a String. true is returned
201  // if line was successfully loaded; false is returned
202  // if the last line had already been read.
204  if (atEnd()) return false;
205  hisread_c(uv_handle_p, hline, 256, &eof_p);
206  line = hline;
207  return true;
208  }
209 };
210 
211 // <summary>
212 // a Miriad visibility dataset reader
213 // </summary>
214 //
215 // <use visibility=export>
216 //
217 // <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
218 // </reviewed>
219 //
220 // <etymology>
221 // Class name is short for Miriad visibility reader.
222 // </etymology>
223 //
224 // <motivation>
225 // MSes filled from Miriad data feature multiple windows of differing shapes.
226 // Performance during casacore::MS reads can be aided by collecting together casacore::MS table
227 // records of the same shape (e.g. of the same window). MirFiller accomplishes
228 // this by reading all baselines from a single timestamp at once, so that
229 // they written out in order of spectral window. This class provides a
230 // container for holding the data from different baselines. It also
231 // encapsulates all the knowledge needed for reading Miriad data.
232 // </motivation>
233 //
234 // <synopsis>
235 // This class is used to extract data from a Miriad visibility dataset.
236 //
237 //
238 // </synopsis>
239 //
240 // <example>
241 //
242 //
243 // </example>
244 //
245 // <todo asof="2001/05/15">
246 // <li> deal with telescopes, correlator modes </li>
247 // <li> support multiple polarizations </li>
248 // <li> make handleVarChanges() a protected virtual function </li>
249 // </todo>
250 //
252 public:
254 
255 private:
256  // info that doesn't change during life of filler
258  casacore::Int uv_handle_p; // miriad file handle
261 
262  // variable information worth caching
263  casacore::List<MirFreqSetup*> fsetups_p; // the correlator setups found
264  casacore::List<MirSource*> sources_p; // the sources found
268  casacore::Int nobs_p, nscan_p; // These are indicative, not invarient
269  casacore::Int badnsyst_p, badwsyst_p; // # of recs with bad system temps
270  casacore::Int firstmode_p; // first correlator mode encountered
272  wideConventions wideconv_p; // apparent wide-channel convention
273 
274  // read state
277  casacore::Double time_p; // in AIPS++ frame
280 
281 public:
282  // construct a reader. mirfile is the name of Miriad dataset. If
283  // dopreview is false, the previewing of the dataset's contents will
284  // be delayed. If doscan is true (and dopreview is true), the entire
285  // input dataset will be read to take an accounting of its contents;
286  // set this to false to prevent this for a very large file (see also
287  // preview()). dbg is the default debug level to set; this value is
288  // passed to setDebugLevel().
289  MirVisReader(const casacore::String& mirfile, casacore::Bool doscan=true, casacore::Int dbg=0,
290  casacore::Bool dopreview=true);
291 
292  // destroy the reader
293  ~MirVisReader();
294 
295  // set the debugging level which controls the amount of debugging
296  // messages that are printed to the terminal (as opposed to the logger).
297  // A value of zero or less will cause no extra messages to be printed;
298  // increasing values will increase the amount of messages.
299  void setDebugLevel(casacore::Int level) { debug = (level < 0) ? 0 : (casacore::uInt) level; }
300 
301  // set the debugging level which controls the amount of debugging
302  // messages that are printed to the terminal. A value of zero or less
303  // means that no extra messages will be printed; increasing values will
304  // increase the amount of messages.
305  casacore::Int getDebugLevel() const { return debug; }
306 
307  // return true if the debugging level is at least as high as a given
308  // level.
309  casacore::Bool Debug(casacore::Int level) { return (level <= casacore::Int(debug)); }
310 
311  // return the Miriad dataset name
312  const casacore::String& getName() { return inname_p; }
313 
314  // rewind the input dataset and prepare for a new reading. filler is
315  // the object that will handle updates to variables; if NULL, no handler
316  // will be alerted when variables change. If dowide is true, the
317  // wideband data will be read in, too. maxrec is the
318  // maximum number of records to read per timestamp; if maxrec<=0,
319  // it will adjust dynamically to the number of baselines being processed.
320  void reset(MirVarHandler *filler=NULL, casacore::Bool verbose=false,
321  casacore::Bool dowide=true, casacore::Int maxrec=0);
322 
323  // read in the data for a single timestamp. fm is the container
324  // to use to store retrieved metadata.
326 
327  // return the (AIPS++-referenced) timestamp for the current buffered
328  // records. This is only correct after a call to readIntegration().
330 
331  // return the number of records buffered for the current integration
333 
334  // return the correlation data for the i-th buffered record.
336 
337  // set the marked data item for each MirDataRecord to false
338  void clearMarks() {
339  for(casacore::Int i=0; i < nintrec_p; i++) buf_p[i]->setMarked(false);
340  }
341 
342  // create and return a new pointer to a history reader. The caller
343  // should delete the reader when finished with it.
345 
346  // return the basic characteristics of the input dataset as a Record.
347  // If scan is true, the entire file will be scanned (if necessary) to
348  // all the information; otherwise, an incomplete description may be given
349  // based on just the first record. If verbose is true, a summary is
350  // sent to the logger. Note that this function may force a call to
351  // preview() if it has not already been called.
352  //PJT GlishRecord summary(casacore::Bool verbose=true, casacore::Bool scan=true);
353 
354  // return the basic characteristics of the input dataset as a Record.
355  // A scanning of the entire file will be forced so that the number of
356  // scans and observations can be counted with the given limits:
357  // scanlim is the maximum time gap in seconds allowed between records
358  // of the same scan; obslim is maximum gap in seconds between
359  // records of the same observation. If verbose is true, a summary is
360  // sent to the logger.
361  //PJT GlishRecord summary(casacore::Int scanlim, casacore::Int obslim, casacore::Bool verbose=true);
362 
363  // get the full list of polarization correlation types seen thus far
365 
366  // return the list of sources
368 
369 protected:
370  // peek into the contents of the dataset to cache important information.
371  // scanlim and obslim are used for counting the number of observations
372  // and scans in the dataset. scanlim is the maximum time gap in seconds
373  // allowed between records of the same scan; obslim is maximum gap
374  // in seconds between records of the same observation. If scan is true
375  // (the default), the dataset will be read through to gather the
376  // information; otherwise, limited information will be gleaned from the
377  // first record and scanlim and obslim will be ignored. One can set
378  // scan=false for very large datasets to avoid this overhead.
379  void preview(casacore::Int scanlim, casacore::Int obslim, casacore::Bool scan=true);
380 
381  // peek into the contents of the dataset to cache important
382  // information. If scan is true
383  // (the default), the dataset will be read through to gather the
384  // information; otherwise, limited information will be gleaned from the
385  // first record. One can set scan=false for very large datasets to avoid
386  // this overhead. Five minutes and four hours are used for the scan and
387  // observation gap limit (when scan=true).
388  void preview(casacore::Bool scan=true) { preview(300, 2400, scan); }
389 
390  // return true if this dataset has been previewed
392 
393  // return the basic characteristics of the input dataset as a Record.
394  // If verbose is true, a summary is
395  // sent to the logger.
396  // scan specifies the conditions under which the entire dataset may
397  // get read as a result of this request: if scan < 0, the dataset
398  // will not be read; if scan=0, it will only be read if it hasn't
399  // already (using scanlim and obslim if necessary; if scan > 0, the
400  // dataset will be read and scanlim and obslim will be used to count
401  // scans and observations.
402  // scanlim is the maximum time gap in seconds
403  // allowed between records of the same scan; obslim is maximum gap
404  // in seconds between records of the same observation.
405  //GlishRecord summary(casacore::Bool verbose, casacore::Int scan, casacore::Int scanlim, casacore::Int obslim);
406 
407  // return the contents of a MirPolSetup list as a GlishArray
408  //static GlishArray toGlishArray(ConstMirPolSetup &pol);
409 
410  // return the contents of a casacore::String casacore::List as a GlishArray
411  //static GlishArray toGlishArray(const casacore::List<casacore::String>& list);
412 
413 private:
414 
415  // return true if this reader should be verbose in its messages. This
416  // will be true if the verbose option is enabled or the debug level is
417  // greater than 1.
418  casacore::Bool verbose() { return (verbose_p || debug > 1); }
419 
420  // check to be sure that the given name points to a readable miriad
421  // dataset. If not, throw an exception.
423 
424  // resize the data buffer for a new read. Values less than or equal
425  // to zero mean keep previous value.
426  void resizeBufferFor(casacore::Int nrec=0, casacore::Int nnarrow=0, casacore::Int nwide=0);
427 
428  // full and brief scanning of the data--should only be called from preview()
429  void fullscan(casacore::Int scanlim, casacore::Int obslim);
430  void briefscan();
431 
432  // update the given FillMetadata container with updated variable values.
433  // If a VarHandler was provide via reset(), signal the changes to it.
434  // fm is the FillMetadata container to update, and time is the current
435  // timestamp.
437 
438  // add to a cached list of telescopes
441  for(li.toStart(); ! li.atEnd() && li.getRight() != name; ++li);
442  if (li.atEnd()) li.addRight(name);
443  }
444 };
445 
446 #endif
casacore::Double starttime_p
Definition: MirVisReader.h:271
t & getRight()
Returns the element to the right of the cursor.
Definition: List.h:679
casacore::Bool previewed()
return true if this dataset has been previewed
Definition: MirVisReader.h:391
int Int
Definition: aipstype.h:50
casacore::Bool verbose()
return the basic characteristics of the input dataset as a Record.
Definition: MirVisReader.h:418
casacore::Int pol()
return the polarization code
Definition: MirVisReader.h:133
void hisclose_c(int tno)
void clearMarks()
set the marked data item for each MirDataRecord to false
Definition: MirVisReader.h:338
casacore::Int nnarr_p
Definition: MirVisReader.h:276
casacore::LogIO log_p
Definition: MirVisReader.h:260
casacore::Int uv_handle_p
Definition: MirVisReader.h:182
a container for storing the Miriad metadata that must be tracked while filling
Definition: FillMetadata.h:886
casacore::Int uv_handle_p
Definition: MirVisReader.h:258
casacore::Bool scanned_p
Definition: MirVisReader.h:279
casacore::Int nobs_p
Definition: MirVisReader.h:268
casacore::String inname_p
info that doesn&#39;t change during life of filler
Definition: MirVisReader.h:257
casacore::Int * flags_p
Definition: MirVisReader.h:101
MirVarHandler * varhandler_p
Definition: MirVisReader.h:278
Bool atEnd() const
Definition: List.h:373
casacore::uInt debug
Definition: MirVisReader.h:259
casacore::Float * wide()
return the address of the wide channel data buffer
Definition: MirVisReader.h:124
void reset(MirVarHandler *filler=NULL, casacore::Bool verbose=false, casacore::Bool dowide=true, casacore::Int maxrec=0)
rewind the input dataset and prepare for a new reading.
wideConventions wideconv_p
Definition: MirVisReader.h:272
casacore::Int maxwide_p
Definition: MirVisReader.h:267
an editable container for a set of Miriad polarization correlation types
Definition: FillMetadata.h:498
casacore::Double * preamble()
return the address of the preamble buffer
Definition: MirVisReader.h:118
void checkIsMiriadDataset(const casacore::String &name)
check to be sure that the given name points to a readable miriad dataset.
casacore::Double getTime()
return the (AIPS++-referenced) timestamp for the current buffered records.
Definition: MirVisReader.h:329
casacore::List< MirSource * > sources_p
Definition: MirVisReader.h:264
ABSTRACT TOOL CLASSES A PlotTool is a higher level event handler for a PlotCanvas The idea is to take common tasks which may require multiple events and put them in one place PlotTools also provide additional functionality in that they can be active and blocking non blocking The PlotCanvas will only send events to active and will not send events to later tools or event handlers if the latest tool was blocking In this way a single tool can be used to handle ALL user interaction via the GUI at one time
Definition: PlotTool.h:43
void fullscan(casacore::Int scanlim, casacore::Int obslim)
full and brief scanning of the data–should only be called from preview()
char Char
Definition: aipstype.h:46
void setPol(casacore::Int val)
set the polarization code
Definition: MirVisReader.h:136
casacore::Int badnsyst_p
Definition: MirVisReader.h:269
ostream-like interface to creating log messages.
Definition: LogIO.h:167
void hisread_c(int tno, char *text, size_t length, int *eof)
casacore::Bool previewed_p
Definition: MirVisReader.h:279
ABSTRACT CLASSES Abstract class for colors Any implementation of color should be able to provide a hexadecimal form of the if a human readable name(i.e."black").In many places throughout the plotter
void hisopen_c(int tno, Const char *status)
casacore::Int firstmode_p
Definition: MirVisReader.h:270
MirVisReader(const casacore::String &mirfile, casacore::Bool doscan=true, casacore::Int dbg=0, casacore::Bool dopreview=true)
construct a reader.
casacore::Bool readLine(casacore::String &line)
read the next available line into a String.
Definition: MirVisReader.h:203
casacore::Int pol_p
Definition: MirVisReader.h:96
casacore::uInt getPreambleCount()
return the number of preamble elements
Definition: MirVisReader.h:109
casacore::Int getDebugLevel() const
set the debugging level which controls the amount of debugging messages that are printed to the termi...
Definition: MirVisReader.h:305
a container for a data record read in from a Miriad datatset
Definition: MirVisReader.h:95
void briefscan()
casacore::Int nwide_p
Definition: MirVisReader.h:276
a base for classes that rely on assumptions regarding privitive type sizes.
casacore::Int np_p
Definition: MirVisReader.h:96
casacore::List< casacore::String > telescopes_p
Definition: MirVisReader.h:265
casacore::Int nrec_p
Definition: MirVisReader.h:267
casacore::Bool atEnd()
return true this reader there is no more history to read
Definition: MirVisReader.h:198
casacore::uInt getWideCount()
return the number of wide band channels
Definition: MirVisReader.h:115
casacore::uInt getNarrowCount()
return the number of narrow band channels
Definition: MirVisReader.h:112
casacore::Double * preamble_p
Definition: MirVisReader.h:98
casacore::Int getNumRecs()
return the number of records buffered for the current integration
Definition: MirVisReader.h:332
void preview(casacore::Bool scan=true)
peek into the contents of the dataset to cache important information.
Definition: MirVisReader.h:388
void setDebugLevel(casacore::Int level)
set the debugging level which controls the amount of debugging messages that are printed to the termi...
Definition: MirVisReader.h:299
void preview(casacore::Int scanlim, casacore::Int obslim, casacore::Bool scan=true)
peek into the contents of the dataset to cache important information.
MirHisReader * openHistory()
create and return a new pointer to a history reader.
Definition: MirVisReader.h:344
casacore::Float * narrow_p
Definition: MirVisReader.h:99
casacore::Bool verbose_p
Definition: MirVisReader.h:279
casacore::Char hline[256]
Definition: MirVisReader.h:183
~MirHisReader()
delete the reader
Definition: MirVisReader.h:193
double Double
Definition: aipstype.h:55
casacore::Int maxrec_p
Definition: MirVisReader.h:276
casacore::Int nscan_p
Definition: MirVisReader.h:268
a Miriad visibility dataset reader
Definition: MirVisReader.h:251
casacore::Bool hasmore_p
Definition: MirVisReader.h:279
casacore::Int narray_p
Definition: MirVisReader.h:267
casacore::Int * flags()
return the address of the flags channel data buffer
Definition: MirVisReader.h:127
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
casacore::Int maxchan_p
Definition: MirVisReader.h:267
a Miriad history reader
Definition: MirVisReader.h:180
casacore::Double endtime_p
Definition: MirVisReader.h:271
float Float
Definition: aipstype.h:54
casacore::List< MirFreqSetup * > fsetups_p
variable information worth caching
Definition: MirVisReader.h:263
casacore::Float * wide_p
Definition: MirVisReader.h:100
casacore::Bool marked_p
Definition: MirVisReader.h:97
casacore::Int nn_p
Definition: MirVisReader.h:96
casacore::Float * narrow()
return the address of the narrow channel data buffer
Definition: MirVisReader.h:121
void handleVarChanges(::FillMetadata &fm, casacore::Double time)
update the given FillMetadata container with updated variable values.
MirHisReader(casacore::Int mirhandle)
create a History reader from a Miriad file handle
Definition: MirVisReader.h:188
void addRight(t e)
This function adds the element to the right of the current cursor position.
Definition: List.h:647
casacore::Int * wflags_p
Definition: MirVisReader.h:102
MirPolSetup pol_p
Definition: MirVisReader.h:266
void copyFrom(const MirDataRecord &other)
~MirVisReader()
destroy the reader
const casacore::List< MirSource * > & getSourceList()
return the list of sources
Definition: MirVisReader.h:367
const casacore::String & getName()
return the Miriad dataset name
Definition: MirVisReader.h:312
Base class for all Casacore library errors.
Definition: Error.h:134
casacore::Int nintrec_p
Definition: MirVisReader.h:276
ConstMirPolSetup & getDefaultPolSetup()
return the basic characteristics of the input dataset as a Record.
Definition: MirVisReader.h:364
Doubly linked non-constant list iterator The List class above only provides for the list framework...
Definition: List.h:53
casacore::Int eof_p
Definition: MirVisReader.h:182
a static container for a set of Miriad polarization correlation types
Definition: FillMetadata.h:416
String: the storage and methods of handling collections of characters.
Definition: String.h:223
casacore::Int nw_p
Definition: MirVisReader.h:96
casacore::Int badwsyst_p
Definition: MirVisReader.h:269
void setTelescope(casacore::String name)
add to a cached list of telescopes
Definition: MirVisReader.h:439
void setMarked(casacore::Bool val)
set the mark
Definition: MirVisReader.h:142
MirDataRecord(casacore::Int nnarrow=0, casacore::Int nwide=0, casacore::Int npreamble=5)
casacore::Bool Debug(casacore::Int level)
return true if the debugging level is at least as high as a given level.
Definition: MirVisReader.h:309
casacore::Bool varupd_p
Definition: MirVisReader.h:279
casacore::Block< MirDataRecord * > buf_p
read state
Definition: MirVisReader.h:275
casacore::Int maxspect_p
Definition: MirVisReader.h:267
void toStart()
This function moves the cursor to the beginning of the list.
Definition: List.h:492
casacore::Double time_p
Definition: MirVisReader.h:277
casacore::Int readIntegration(::FillMetadata &fm)
read in the data for a single timestamp.
casacore::Bool isMarked()
return true if this record is marked
Definition: MirVisReader.h:139
void resizeBufferFor(casacore::Int nrec=0, casacore::Int nnarrow=0, casacore::Int nwide=0)
resize the data buffer for a new read.
casacore::Int * wflags()
return the address of the wflags channel data buffer
Definition: MirVisReader.h:130
unsigned int uInt
Definition: aipstype.h:51
casacore::Bool dowide_p
Definition: MirVisReader.h:279
MirDataRecord * getRecord(casacore::Int i)
return the correlation data for the i-th buffered record.
Definition: MirVisReader.h:335
#define casacore
&lt;X11/Intrinsic.h&gt; #defines true, false, casacore::Bool, and String.
Definition: X11Intrinsic.h:42