/*
 * Copyright (c) 2004-2008 Derelict Developers
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 * * Neither the names 'Derelict', 'DerelictSDL', nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
module derelict.sdl.macinit.selectors;

version (darwin):

import derelict.sdl.macinit.runtime;
import derelict.sdl.macinit.string;

package:
version = SDL_USE_NIB_FILE;
// Classes
const id class_NSApplication;
const id class_NSAutoreleasePool;
const id class_NSDictionary;
const id class_NSEnumerator;
const id class_NSGeometry;
const id class_NSMenu;
const id class_NSMenuItem;
const id class_NSNotification;
const id class_NSObject;
const id class_NSProcessInfo;
const id class_NSString;
id class_SDLApplication;

// Selectors
const string sel_stringWithCharacters_length;
const string sel_addItem;
const string sel_addItemWithTitle_action_keyEquivalent;
const string sel_alloc;
const string sel_class;
const string sel_getCharacters_range;
const string sel_hasSubmenu;
const string sel_init;
const string sel_initWithTitle;
const string sel_itemArray;
const string sel_length;
const string sel_mainMenu;
const string sel_nextObject;
const string sel_objectEnumerator;
const string sel_objectForKey;
const string sel_poseAsClass;
const string sel_processInfo;
const string sel_processName;
const string sel_rangeOfString;
const string sel_release;
const string sel_run;
const string sel_setAppleMenu;
const string sel_setDelegate;
const string sel_setKeyEquivalentModifierMask;
const string sel_setMainMenu;
const string sel_setSubmenu;
const string sel_setTitle;
const string sel_setWindowsMenu;
const string sel_sharedApplication;
const string sel_sizeToFit;
const string sel_stringByAppendingString;
const string sel_submenu;
const string sel_title;
const string sel_UTF8String;
const string sel_separatorItem;
const string sel_stop;
const string sel_terminate;
const string sel_setupWorkingDirectory;
version (SDL_USE_NIB_FILE) const string sel_fixMenu;
const string sel_application;
const string sel_applicationDidFinishLaunching;
const string sel_initWithTitle_action_keyEquivalent;

static this ()
{
    class_NSApplication = objc_getClass("NSApplication");
    class_NSAutoreleasePool = objc_getClass("NSAutoreleasePool");
    class_NSDictionary = objc_getClass("NSDictionary");
    class_NSEnumerator = objc_getClass("NSEnumerator");
    class_NSGeometry = objc_getClass("NSGeometry");
    class_NSMenu = objc_getClass("NSMenu");
    class_NSMenuItem = objc_getClass("NSMenuItem");
    class_NSNotification = objc_getClass("NSNotification");
    class_NSObject = objc_getClass("NSObject");
    class_NSProcessInfo = objc_getClass("NSProcessInfo");
    class_NSString = objc_getClass("NSString");

    sel_stringWithCharacters_length = sel_registerName("stringWithCharacters:length:");
    sel_addItem = sel_registerName("addItem:");
    sel_addItemWithTitle_action_keyEquivalent = sel_registerName("addItemWithTitle:action:keyEquivalent:");
    sel_alloc = sel_registerName("alloc");
    sel_class = sel_registerName("class");
    sel_getCharacters_range = sel_registerName("getCharacters:range:");
    sel_hasSubmenu = sel_registerName("hasSubmenu");
    sel_init = sel_registerName("init");
    sel_initWithTitle = sel_registerName("initWithTitle:");
    sel_itemArray = sel_registerName("itemArray");
    sel_length = sel_registerName("length");
    sel_mainMenu = sel_registerName("mainMenu");
    sel_nextObject = sel_registerName("nextObject");
    sel_objectEnumerator = sel_registerName("objectEnumerator");
    sel_objectForKey = sel_registerName("objectForKey:");
    sel_poseAsClass = sel_registerName("poseAsClass:");
    sel_processInfo = sel_registerName("processInfo");
    sel_processName = sel_registerName("processName");
    sel_rangeOfString = sel_registerName("rangeOfString");
    sel_release = sel_registerName("release");
    sel_run = sel_registerName("run");
    sel_setAppleMenu = sel_registerName("setAppleMenu:");
    sel_setDelegate = sel_registerName("setDelegate:");
    sel_setKeyEquivalentModifierMask = sel_registerName("setKeyEquivalentModifierMask:");
    sel_setMainMenu = sel_registerName("setMainMenu:");
    sel_setSubmenu = sel_registerName("setSubmenu:");
    sel_setTitle = sel_registerName("setTitle:");
    sel_setWindowsMenu = sel_registerName("setWindowsMenu:");
    sel_sharedApplication = sel_registerName("sharedApplication");
    sel_sizeToFit = sel_registerName("sizeToFit");
    sel_stringByAppendingString = sel_registerName("stringByAppendingString:");
    sel_submenu = sel_registerName("submenu");
    sel_title = sel_registerName("title");
    sel_UTF8String = sel_registerName("UTF8String");
    sel_separatorItem = sel_registerName("separatorItem");
    sel_stop = sel_registerName("stop:");
    sel_terminate = sel_registerName("terminate:");
    sel_setupWorkingDirectory = sel_registerName("setupWorkingDirectory");
    version (SDL_USE_NIB_FILE) sel_fixMenu = sel_registerName("fixMenu");
    sel_application = sel_registerName("application:openFile:");
    sel_applicationDidFinishLaunching = sel_registerName("applicationDidFinishLaunching:");
    sel_initWithTitle_action_keyEquivalent = sel_registerName("initWithTitle:action:keyEquivalent:");
}