Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
Oct 16, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Function Wrappers - The First Step toward Gaining OO Advantages

In large-scale projects different teams use API functions developed by another team or a third-party vendor. For example:
int retrievePerson (int key, Person& recordToBefilled); // original version; used by all teams
A problem can arise when the interface of an API is modified by the implementer; all of its users have to track down every reference to it, and modify the code accordingly.
int retrievePerson (const char * key, Person& recordToBefilled); // string key instead of int
To avoid such dependencies, you should wrap the API by a wrapper, rather than call it directly. A wrapper is a simple function that calls the third party's API and returns its result. (Don't worry about the overhead of an additional function call—most compilers will inline it anyway):
int WrapRetrievePerson(int key, Person& recordToBefilled) 
retrurn retrievePerson (int key, Person& recordToBefilled); // call the API 
This is very similar to "getters" and "setters" in a C++ class. A wrapper provides a stable interface to an API that is vulnerable to modifications. When an API's interface is changed, only the implementation of its corresponding wrapper has to be modified accordingly, without affecting the programs that call the wrapper:
int WrapRetrievePerson(int key, Person& recordToBefilled) //wrapper interface remains intact

{	//wrapper's implementation modified according to API's modification
char strkey[100];
itoa (key, strkey); //convert ant int to its corresponding  decimal string
return retrievePerson (strkey, Person& recordToBefilled); 
Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date