User:KennyTM~/std.cy

From iPhone Development Wiki
< User:KennyTM~
Revision as of 08:07, 8 November 2009 by KennyTM~ (talk | contribs)
// Standard C functions
function CGPointMake(x, y) { return {x:x, y:y}; }
function CGSizeMake(w, h) { return {width:w, height:h}; }
function CGRectMake(x, y, w, h) { return {origin:CGPointMake(x,y), size:CGSizeMake(w, h)}; }
function NSMakeRange(loc, len) { return {location:loc, length:len}; }
var CFRangeMake = NSMakeRange;

// Standard C types
var IMP = new Type("^?"), SEL = new Type(":"), unsigned = new Type("I");
var mach_port_t = int;
var int8_t = char, int16_t = short, int32_t = long, int64_t = new Type("q");
var uint8_t = new Type("C"), uint16_t = new Type("S"), uint32_t = new Type("L"), uint64_t = new Type("Q");
var SInt8 = int8_t, SInt16 = int16_t, SInt32 = int32_t, SInt64 = int64_t;
var UInt8 = uint8_t, UInt16 = uint16_t, UInt32 = uint32_t, UInt64 = uint64_t;
var unichar = int16_t, UniChar = int16_t, wchar_t = int32_t;
var size_t = NSUInteger, intptr_t = NSInteger;
var BOOL = char, bool = new Type("B");

// Usage: dlfun("notify_post", "I*")
function dlfun(fn, encoding) { return (this[fn] = new Functor(dlsym(RTLD_DEFAULT, fn), encoding)); }

// MobileSubstrate
dlfun("MSHookMessageEx", "v#:^?^^?");
dlfun("MSHookMessage", "^?#:^?*");
dlfun("MSHookFunction", "v^v^v^^v");

// Declare a struct
// e.g. var CGSize = struct(CGFloat, CGFloat);
function struct(n) {
  var typestr = ["{?="];
  for (var i = 0; i < arguments.length; ++ i) {
    var arg = arguments[i];
    typestr.push(arguments[i].toString());
  }
  typestr.push("}");
  return new Type(typestr.join(""));
}