SYNOPSIS
#include <agar/core.h>
DESCRIPTION
The
AG_Version structure represents a version number for an
AG_Object(3) (or any other type of data).
It is defined as follows:
The major version number is incremented whenever a change introduces any type of binary incompatibility with previous versions of the data file.
The minor number is incremented when a new feature is introduced which does not break binary compatibility with previous versions. A typical deserialization routine may test the minor number to determine the presence of new features (which do not break binary compatibility).
The cid field is a 32-bit numerical class ID (or 0).
The unicode field is an optional Unicode character value (or 0).
typedef struct ag_version {
Uint32 major; /* Major version number */
Uint32 minor; /* Minor version number */
Uint32 cid; /* Class ID */
Uint32 unicode; /* Icon (Unicode value) */
} AG_Version;
The major version number is incremented whenever a change introduces any type of binary incompatibility with previous versions of the data file.
The minor number is incremented when a new feature is introduced which does not break binary compatibility with previous versions. A typical deserialization routine may test the minor number to determine the presence of new features (which do not break binary compatibility).
The cid field is a 32-bit numerical class ID (or 0).
The unicode field is an optional Unicode character value (or 0).
VERSIONING ↑
int AG_ReadVersion (AG_DataSource *ds, const char *magic, const AG_Version *verRequired, AG_Version *verRead)
void AG_WriteVersion (AG_DataSource *ds, const char *magic, const AG_Version *ver)
int AG_ReadObjectVersion (AG_DataSource *ds, AG_Object *obj)
void AG_WriteObjectVersion (AG_DataSource *ds, const AG_Object *obj)
The AG_ReadVersion() function reads version information from ds and returns 0 if the following data is binary compatible against the version represented by verRequired, or -1 if the data is not compatible. If verRead is not NULL, it is set to the version information read from ds.
AG_WriteVersion() writes version information from ver to ds.
The AG_ReadObjectVersion() and AG_WriteObjectVersion() variants use the version number from the class description structure and sets the signature to the name of the class (see AG_ObjectClass(3)).
EXAMPLES ↑
The following code writes version information to a data stream:
The following code reads version information from a data stream:
AG_DataSource *ds; AG_Version ver; ver.major = 1; ver.minor = 1; AG_WriteVersion(ds, "My-Magic", &ver);
The following code reads version information from a data stream:
AG_DataSource *ds;
AG_Version verRequired, ver;
verRequired.major = 1;
verRequired.minor = 0;
if (AG_ReadVersion(ds, "My-Magic", &verRequired,
&ver) == 0) {
AG_Verbose("Version OK! (%u.%u)\n",
ver.major, ver.minor);
} else {
AG_Verbose("Version not OK!\n");
}
SEE ALSO ↑
HISTORY ↑
The
AG_Version interface first appeared in
Agar 1.0
