DD::Image::GeoDescription Class Reference

Inherits DD::Image::ReaderDescription.

List of all members.

Public Types

typedef GeoReader *(* Constructor )(ReadGeo *, int fd, const unsigned char *buf, int bufsize)
typedef bool(* Tester )(int fd, const unsigned char *buf, int bufsize)
typedef GeoReaderFormat *(* GeoReaderFormatConstructor )(ReadGeo *)

Public Member Functions

 GeoDescription (const char *n, const char *l, Constructor c, Tester t=0, License *f=0, bool needFd=true)
 GeoDescription (const char *n, Constructor c, Tester t=0, License *f=0, bool needFd=true)
 GeoDescription (const char *n, Constructor c, GeoReaderFormatConstructor fmtConstructor, Tester t=0, License *f=0, bool needFd=true)

Static Public Member Functions

static const GeoDescriptionfind (int i)
static const GeoDescriptionfind (const char *name)

Public Attributes

Constructor _constructor
GeoReaderFormatConstructor _format_constructor
Tester _test
bool _needFd

Static Public Attributes

static
DD::Image::Description::DescriptionList 
_collection

Detailed Description

This structure describes a subclass of GeoReader. The constructor builds these into a list that ReadGeo operators search to find a way to read a filename given to them.

Sample code for a plugin that defines a GeoReader:

   class MyReader : public GeoReader {
   static const Description d;
   ...
   };

   static GeoReader* build(int fd, const unsigned char* b, int n) {
   return new MyReader(fd, b, n);
   }

   static bool test(int fd, const unsigned char *block, int) {
   return (block[0] == MY_MAGIC_BYTE);
   }

   const GeoReader::Description MyReader::d("myf\0", "my file format", build, test);

Constructor & Destructor Documentation

DD::Image::GeoDescription::GeoDescription ( const char *  n,
const char *  l,
Constructor  c,
Tester  t = 0,
License f = 0,
bool  needFd = true 
) [inline]

Constructor that fills all fields and allows a license check.

DD::Image::GeoDescription::GeoDescription ( const char *  n,
Constructor  c,
Tester  t = 0,
License f = 0,
bool  needFd = true 
) [inline]

Simpler constructor that sets names and label to same value.

DD::Image::GeoDescription::GeoDescription ( const char *  n,
Constructor  c,
GeoReaderFormatConstructor  fmtConstructor,
Tester  t = 0,
License f = 0,
bool  needFd = true 
) [inline]

Simpler constructor that sets names and label to same value.


Member Data Documentation

DD::Image::Description::DescriptionList GeoDescription::_collection [static]

A list of pointers to all possible Descriptions to be used for instantiation of geo plugins.

Make an instance of the reader.

If test is not null then fd is an opened file, it is seeked to bufsize, and buf contains the first bufsize bytes of the file. You can use this data to store stuff into the info_ (however you cannot report error messages and filename() does not work yet).

If this pointer is non-null, it indicates a named Unix file is used to store the image. In this case Read will open the file and call this function. If it returns non-zero then the constructor will be called. This allows Read to poll all the Readers to see which one can read an unknown file format.

If this is null then zero is passed as the fd to the constructors.

buf points at the first bufsize characters of the file. bufsize is at least 512. If necessary you can mess with the fd, but be sure to seek it back to bufsize.

whether or not the file descriptor is really needed (defaults to true)

if false then any open FD on the file will be closed before build is called, and -1 passed in