C++ IOS Library - Register Callback


Advertisements

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
ios.htm
Advertisements