load_datafile_callback(3) Loads a datafile into memory, calling a hook per object. Allegro game programming library.


#include <allegro.h>

DATAFILE *load_datafile_callback(const char *filename, void (*callback)(DATAFILE *d));


Loads a datafile into memory, calling the specified hook function once for each object in the file, passing it a pointer to the object just read. You can use this to implement very simple loading screens where every time the hook is called, the screen is updated to let the user know your program is still loading from disk:

   void load_callback(DATAFILE *dat_obj)
      static const char indicator[] = "-\\|/-.oOXOo.";
      static int current = 0;
      /* Show a different character every time. */
      textprintf_ex(screen, font, 0, 0, makecol(0, 0, 0),
                    makecol(255, 255, 255), "%c Loading %c",
                    indicator[current], indicator[current]);
      /* Increase index and check if we need to reset it. */
      if (!indicator[current])
         current = 0;
      dat = load_datafile_callback("data.dat", load_callback);


Returns a pointer to the DATAFILE or NULL on error. Remember to free this DATAFILE later to avoid memory leaks.