ornladios/ADIOS — pull request #22 by chuckatkins (2014-05-17 20:08:12+00:00)
Title: Enable forward declarations by naming anonymous structs.

This branch creates explicit naming for all of the anonymous structs in the read v2 API as well as breaking out the typedefs into their own header. This allows the structs to be forward declared and used in the public interface for libraries that may need ADIOS structures in their interface (as private data members for instance). For instance, prior to this branch, the following code was not possible without including the ADIOS headers:
```
struct ADIOS_FILE; // ERROR, cannot fwd declare anonymous structs or typedefs

class Foo
{
public:
Foo(void);
void Bar(void);
private:
ADIOS_FILE *f;
};
```
Now you can do the following without need to have the ADIOS API headers available in a public interface:
```
struct _ADIOS_FILE;
typedef struct _ADIOS_FILE ADIOS_FILE;

class Foo
{
public:
Foo(void);
void Bar(void);
private:
ADIOS_FILE *f;
};
```
Or if you need more of the structures:
```
#include "adios_read_v2_fwd.h" // Can be separated from the ADIOS code base and
// shipped with the libraries public interface
class Foo
{
public:
Foo(void);
void Bar(void);
private:
ADIOS_FILE *f;
ADIOS_VARINFO *v;
};
```
This is the initial branch. Soon to follow will be a similar change for the write API.