Quickies

[categories] [index] [all (527)] [latest]

Cocoa AppKit
  1. Download an Xcode demo project: CocoaPython.zip.

    #import
    #import

    int main (int argc, const char * argv[]) {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        
        /* initialization */
        
        Py_Initialize();
        
        PyObject *sysModule = PyImport_ImportModule("sys");
        PyObject *sysModuleDict = PyModule_GetDict(sysModule);
        PyObject *pathObject = PyDict_GetItemString(sysModuleDict, "path");
        PyObject_CallMethod(pathObject, "insert", "(is)", 0, "../../");
        
        Py_DECREF(sysModule); // borrowed reference
        
        /* import and instantiate Cat */
        
        // from Cat import *
        PyObject *CatModule = PyImport_ImportModule("Cat");
        
        // c = Cat()
        PyObject *Cat = PyDict_GetItemString(PyModule_GetDict(CatModule), "Cat");
        PyObject *cat = PyObject_CallObject(Cat, NULL);
        
        Py_DECREF(CatModule);
        Py_DECREF(Cat);
        
        /* use Cat instance methods */
        
        // c.scream()
        // c.set_name("charly")
        // c.print_family("jack", "cathy", 4)
        
        PyObject_CallMethod(cat,"scream",NULL);
        PyObject_CallMethod(cat,"set_name", "(s)", "charly");
        PyObject_CallMethod(cat,"print_family", "(ssi)", "jack", "cathy", 4);
        
        // c.is_asleep()
        PyObject *is_asleep = PyObject_CallMethod(cat,"is_asleep",NULL);
        BOOL isAsleep = (Py_True == is_asleep);
        Py_DECREF(is_asleep);
        NSLog(@"%d", isAsleep);
        
        // c.name()
        PyObject *name = PyObject_CallMethod(cat,"name",NULL);
        NSString *catName = [NSString stringWithCString: PyString_AsString(name)];
        Py_DECREF(name);
        NSLog(@"%@", catName);
        
        /* termination */
        
        Py_DECREF(cat);
        Py_Finalize();
        
        [pool release];
        return 0;
    }