C++ IOS Library - Register Callback
Description
It is used to register event callback function. Registers fn as a callback function to be called automatically with index as argument when a stream event occurs.
If more than one callback function is registered, they are all called, in the inverse order of registration.
The callback function shall be of a type convertible to event_callback. And it is called by an expression equivalent to shown below −
void register_callback (event_callback fn, int index);
Declaration
Following is the declaration for ios_base::register_callback function.
void*& pword (int idx);
Parameters
fn − Pointer to the function to be called.
index − Integer value passed as parameter to the callback function.
Return Value
none
Exceptions
Basic guarantee − if an exception is thrown, the stream is in a valid state.
Data races
It modifies the stream object.
Example
In below example explains about ios_base::register_callback function.
#include <iostream>
#include <fstream>
void testfn (std::ios::event ev, std::ios_base& stream, int index) {
switch (ev){
case stream.copyfmt_event:
std::cout << "copyfmt_event\n"; break;
case stream.imbue_event:
std::cout << "imbue_event\n"; break;
case stream.erase_event:
std::cout << "erase_event\n"; break;
}
}
int main () {
std::ofstream filestr;
filestr.register_callback (testfn,0);
filestr.imbue (std::cout.getloc());
return 0;
}
Let us compile and run the above program, this will produce the following result −
imbue_event erase_event