#import <Foundation/Foundation.h>
#include <allegro5/internal/aintern_iphone.h>
#include <mach-o/dyld.h>

ALLEGRO_PATH *_al_iphone_get_path(int id)
{
   char str[PATH_MAX];
   NSString *string;
   NSArray *array;
   NSBundle *mainBundle;
   
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

   switch (id) {
      case ALLEGRO_USER_HOME_PATH:
         string = NSHomeDirectory();
         break;
      case ALLEGRO_TEMP_PATH:
         string = NSTemporaryDirectory();
         break;
      case ALLEGRO_RESOURCES_PATH:
         mainBundle = [NSBundle mainBundle];
         string = [mainBundle resourcePath];
         break;
      case ALLEGRO_USER_SETTINGS_PATH:
      case ALLEGRO_USER_DATA_PATH:
         array = NSSearchPathForDirectoriesInDomains(
            NSApplicationSupportDirectory,
            NSUserDomainMask,
            TRUE);
         string = (NSString *)[array objectAtIndex:0];
         break;

      case ALLEGRO_USER_DOCUMENTS_PATH:
         array = NSSearchPathForDirectoriesInDomains(
            NSDocumentDirectory,
            NSUserDomainMask,
            TRUE);
         string = (NSString *)[array objectAtIndex:0];
         break;
      case ALLEGRO_EXENAME_PATH: {
         uint32_t size = sizeof(str);
         if (_NSGetExecutablePath(str, &size) != 0) {
            [pool drain];
            return NULL;
         }
         [pool drain];
         return al_create_path(str);
      }
      default:
         [pool drain];
         return NULL;
   }

   sprintf(str, "%s", [string UTF8String]);
   
   [pool drain];

   return al_create_path_for_directory(str);
}