Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 9th, 2012  |  syntax: None  |  size: 0.84 KB  |  hits: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. typedef int init_callback_t(void);
  2. typedef void term_callback_t(void);
  3.  
  4. typedef struct init_and_term_s
  5. {
  6.         init_callback_t *init;
  7.         term_callback_t *term;
  8. } init_and_term_t;
  9.  
  10. int init_chain(const init_and_term_t *chain, int count)
  11. {
  12.         int i;
  13.         const init_and_term_t *entry;
  14.  
  15.         for (i = 0; i < count; ++i)
  16.         {
  17.                 entry = &chain[i];
  18.  
  19.                 if (!(*entry->init)())
  20.                 {
  21.                         term_chain(chain, i);
  22.  
  23.                         return 0;
  24.                 }
  25.         }
  26.  
  27.         return 1;
  28. }
  29.  
  30. void term_chain(const init_and_term_t *chain, int count)
  31. {
  32.         int i;
  33.         const init_and_term_t *entry;
  34.  
  35.         for (i = count - 1; i >= 0; --i)
  36.         {
  37.                 entry = &chain[i];
  38.  
  39.                 (*entry->term)();
  40.         }
  41. }