Mac-SystemDirectory

 view release on metacpan or  search on metacpan

SystemDirectory.xs  view on Meta::CPAN

    HV *stash  = gv_stashpv("Mac::SystemDirectory", TRUE);
    AV *export = get_av("Mac::SystemDirectory::EXPORT_OK", TRUE);

    /* NSSearchPathDomainMask */
    const_uv(NSUserDomainMask);
    const_uv(NSLocalDomainMask);
    const_uv(NSNetworkDomainMask);
    const_uv(NSSystemDomainMask);
    const_uv(NSAllDomainsMask);

    /* NSSearchPathDirectory */
    const_uv(NSApplicationDirectory);
    const_uv(NSDemoApplicationDirectory);
    const_uv(NSDeveloperApplicationDirectory);
    const_uv(NSAdminApplicationDirectory);
    const_uv(NSLibraryDirectory);
    const_uv(NSDeveloperDirectory);
    const_uv(NSUserDirectory);
    const_uv(NSDocumentationDirectory);
#if defined(MAC_OS_X_VERSION_10_2)
    const_uv(NSDocumentDirectory);
#endif
#if defined(MAC_OS_X_VERSION_10_3)
    const_uv(NSCoreServiceDirectory);
#endif
#if defined(MAC_OS_X_VERSION_10_4)
    const_uv(NSDesktopDirectory);
    const_uv(NSCachesDirectory);
    const_uv(NSApplicationSupportDirectory);
#endif
#if (defined(MAC_OS_X_VERSION_10_5) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5))
    const_uv(NSDownloadsDirectory);
#endif
    const_uv(NSAllApplicationsDirectory);
    const_uv(NSAllLibrariesDirectory);
#if (defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6))
    const_uv(NSInputMethodsDirectory);
    const_uv(NSMoviesDirectory);
    const_uv(NSMusicDirectory);
    const_uv(NSPicturesDirectory);
    const_uv(NSPrinterDescriptionDirectory);
    const_uv(NSSharedPublicDirectory);
    const_uv(NSPreferencePanesDirectory);
    const_uv(NSItemReplacementDirectory);
#endif
}

void
FindDirectory(constant, mask=NSUserDomainMask)
   UV constant
   UV mask

  PREINIT:
     NSSearchPathDirectory directory;
     NSSearchPathDomainMask domainMask;

  INIT:
    directory = (NSSearchPathDirectory)constant;
    domainMask = (NSSearchPathDomainMask)mask;

  PPCODE:
    switch(directory) {
        case NSApplicationDirectory:
        case NSDemoApplicationDirectory:
        case NSAdminApplicationDirectory:
        case NSDeveloperApplicationDirectory:
        case NSLibraryDirectory:
        case NSDeveloperDirectory:
        case NSUserDirectory:
        case NSDocumentationDirectory:
#if defined(MAC_OS_X_VERSION_10_2)
        case NSDocumentDirectory:
#endif
#if defined(MAC_OS_X_VERSION_10_3)
        case NSCoreServiceDirectory:
#endif
#if defined(MAC_OS_X_VERSION_10_4)
        case NSDesktopDirectory:
        case NSCachesDirectory:
        case NSApplicationSupportDirectory:
#endif
#if (defined(MAC_OS_X_VERSION_10_5) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5))
        case NSDownloadsDirectory:
#endif
        case NSAllApplicationsDirectory:
        case NSAllLibrariesDirectory:
#if (defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6))
        case NSInputMethodsDirectory:
        case NSMoviesDirectory:
        case NSMusicDirectory:
        case NSPicturesDirectory:
        case NSPrinterDescriptionDirectory:
        case NSSharedPublicDirectory:
        case NSPreferencePanesDirectory:
        case NSItemReplacementDirectory:
#endif
        {
            NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
            NSArray *paths = NSSearchPathForDirectoriesInDomains(directory, domainMask, YES);
            int count = [paths count];

            if (count > 0) {
                NSString *path;

                if (count > 1 && GIMME_V == G_ARRAY) {
                    int i;
                    count = [paths count];

                    EXTEND(SP, count);
                    for (i=0; i < count; i++) {
                        path = [paths objectAtIndex:i];
                        PUSHs(sv_2mortal(newSV_NSString(path)));
                    }
                }
                else {
                    count = 1;
                    path = [paths objectAtIndex:0];
                    EXTEND(SP, 1);
                    PUSHs(sv_2mortal(newSV_NSString(path)));
                }
            }

            [pool release];

            if (count > 0)
                XSRETURN(count);
        }
        /* FALLTHROUGH */
    }
    XSRETURN_EMPTY;

void
HomeDirectory()

  ALIAS:
    Mac::SystemDirectory::HomeDirectory      = 0
    Mac::SystemDirectory::TemporaryDirectory = 1

  PREINIT:
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSString *path;

  PPCODE:
    switch (ix) {
        case 0:
            path = NSHomeDirectory();
            break;
        case 1:
            path = NSTemporaryDirectory();
            break;
        default:
            [pool release];
            croak("panic: unexpected ix: %d", (int)ix);
    }

    ST(0) = path ? sv_2mortal(newSV_NSString(path)) : &PL_sv_undef;

    [pool release];
    XSRETURN(1);



( run in 1.088 second using v1.01-cache-2.11-cpan-5511b514fd6 )