A GDS object contains 2 data structures:
-A interface data structure which contains the object's generic behaviors:
-Copy (Used for creating a hard copy of the object)
-Destroy (Used for freeing the memory occupied by the object)
-Compare (Used for comparing 2 objects)
-A generic pointer to another structure which should hold the object's attributes.
The implementation of the GDS object:
/*Contains the attributes and the behaviors of the object*/
typedef struct
{
/*Contains the object's data*/
void *data;
/*Contains pointers to the object's function*/
Interface *interface;
}Object;
The interface data structure is defined in the following way:/*Contains pointers to the object's functions*/
typedef struct
{
/*A pointer to a hard copy function*/
void* (*Copy)(const void*);
/*A pointer to a destructor-like function*/
void* (*Destroy)(void*);
/*A pointer to a compare function*/
int (*Compare)(const void*,const void*);
}Interface;
The object data structure uses the following functions:/* * Description: * Creates an Object structure * Parameters: * value - The value used for initializing an object * Returns: * A pointer to the object OR * NULL if there is not enough memory */ Object* Object_Create(void* value, void* interface); /* * Description: * Compares two objects * Parameters: * object1, object2 - the objects who are going to be compared * Returns: * The difference between the values of the objects * 0 - the objects are equal * >0 - object1 is greater than object2 * <0 - object2 is greater than object1 */ int Object_Compare(const Object* element1, const Object* element2); /* * Description: * Creates a hard copy of an object structure * Parameters: * value - A pointer to object who is going to be copied * Returns: * A pointer to the copy OR * NULL if there is not enough memory */ Object* Object_Copy(const Object* element); /* * Description: * Destroys an object structure * Parameters: * object - The object who is going to be destroyed * Returns: * NULL */ Object* Object_Destroy(Object* element);The interface data structure has the following functions:
/*
* Description:
* Creates an Interface structure
* Parameters:
* Copy - a pointer to the object copy function
* Destroy - a pointer to the object destructor
* Compare - a pointer to the object compare function
* GetType - reserved for further use
* Returns:
* NULL
*/
Interface* Interface_Create(void* (*Copy)(const void*),
void* (*Destroy)(void*),
int (*Compare)(const void*,const void*));
/*
* Description:
* Destroys an Interface structure
* Parameters:
* interface - a pointer to a interface structure
* Returns:
* NULL
*/
Interface* Interface_Destroy(Interface* interface);
No comments:
Post a Comment
Got a question regarding something in the article? Leave me a comment and I will get back at you as soon as I can!