Paste number 47175: passing C arrays to ObjC methods (actually tested)

Index of paste annotations: 2 | 1 | 3

Paste number 47175: passing C arrays to ObjC methods (actually tested)
Pasted by: markd2
When:2 years, 6 months ago
Share:Tweet this! | http://paste.lisp.org/+10EF
Channel:#macdev
Paste contents:
Raw Source | XML | Display As
#import <Foundation/Foundation.h>

/*
gcc -g -Wall -framework Foundation -o array array.m
*/

@interface Snork : NSObject

- (void) ookie: (int *) snork;

- (void) ookie2: (int[]) snork;


@end

@implementation Snork

- (void) ookie: (int *) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie

- (void) ookie2: (int[]) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie2

@end // Snork


int main (void) {

    Snork *snork = [[Snork alloc] init];

    int flonk[] = { 1, 2, 3, 4 };

    [snork ookie: flonk];
    [snork ookie2: flonk];

    return (0);

} // main

Annotations for this paste:

Annotation number 2: now with resizing goodness
Pasted by: markd2
When:2 years, 6 months ago
Share:Tweet this! | http://paste.lisp.org/+10EF/2
Paste contents:
Raw Source | Display As
#import <Foundation/Foundation.h>

/*
gcc -g -Wall -framework Foundation -o array array.m
*/

@interface Snork : NSObject

- (void) ookie: (int *) snork;

- (void) ookie2: (int[]) snork;

- (void) ookie3: (int[17]) snork;

- (void) ookie4: (int**) snork
         growTo: (int) elements;


@end

@implementation Snork

- (void) ookie: (int *) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie

- (void) ookie2: (int[]) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie2


- (void) ookie3: (int[17]) snork {
    NSLog (@"(%d) %d %d %d", sizeof(snork), snork[0], snork[1], snork[2]);

} // ookie3

- (void) ookie4: (int**) snork
         growTo: (int) elements {

    *snork = realloc(*snork, sizeof(int) * elements);
    (*snork)[0] = 55;

    NSLog (@"(%d) %d %d %d", sizeof(snork), (*snork)[0], (*snork)[1], (*snork)[2]);

} // ookie4


@end // Snork


int main (void) {

    Snork *snork = [[Snork alloc] init];

    int flonk[] = { 1, 2, 3, 4 };

    [snork ookie: flonk];
    [snork ookie2: flonk];
    [snork ookie3: flonk];

    int *snorgle = malloc(sizeof(int) * 3);
    snorgle[0] = 1;      snorgle[1] = 2;      snorgle[2] = 3;

    [snork ookie4: &snorgle
           growTo: 23];
    NSLog(@"%d", snorgle[0]);

    return (0);

} // main


/* sample run

% ./array
2007-09-03 17:45:03.707 array[10602:807] 1 2 3
2007-09-03 17:45:03.708 array[10602:807] 1 2 3
2007-09-03 17:45:03.709 array[10602:807] (4) 1 2 3
2007-09-03 17:45:03.710 array[10602:807] (4) 55 2 3
2007-09-03 17:45:03.710 array[10602:807] 55

*/


Annotation number 1: ookie3
Pasted by: markd2
When:2 years, 6 months ago
Share:Tweet this! | http://paste.lisp.org/+10EF/1
Paste contents:
Raw Source | Display As
#import <Foundation/Foundation.h>

/*
gcc -g -Wall -framework Foundation -o array array.m
*/

@interface Snork : NSObject

- (void) ookie: (int *) snork;

- (void) ookie2: (int[]) snork;

- (void) ookie3: (int[17]) snork;


@end

@implementation Snork

- (void) ookie: (int *) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie

- (void) ookie2: (int[]) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie2


- (void) ookie3: (int[17]) snork {
    NSLog (@"(%d) %d %d %d", sizeof(snork), snork[0], snork[1], snork[2]);

} // ookie3

@end // Snork


int main (void) {

    Snork *snork = [[Snork alloc] init];

    int flonk[] = { 1, 2, 3, 4 };

    [snork ookie: flonk];
    [snork ookie2: flonk];
    [snork ookie3: flonk];

    return (0);

} // main


/* and a sample run:
% ./array
2007-09-03 17:38:41.162 array[10551:807] 1 2 3
2007-09-03 17:38:41.164 array[10551:807] 1 2 3
2007-09-03 17:38:41.165 array[10551:807] (4) 1 2 3

*/


Annotation number 3: i was more thinking about sometinh like that
Pasted by: valisystem
When:2 years, 6 months ago
Share:Tweet this! | http://paste.lisp.org/+10EF/3
Paste contents:
Raw Source | Display As
@interface Snork : NSObject

- (void) ookie: (int *) snork;

- (void) ookie2: (int[]) snork;

- (void) ookie3: (int[17]) snork;

- (void) ookie4: (int**) snork
         growTo: (int) elements;


@end

@implementation Snork

- (void) ookie: (int *) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie

- (void) ookie2: (int[]) snork {
    NSLog (@"%d %d %d", snork[0], snork[1], snork[2]);

} // ookie2


- (void) ookie3: (int[17]) snork {
    NSLog (@"(%d) %d %d %d", sizeof(snork), snork[0], snork[1], snork[2]);

} // ookie3

- (void) ookie4: (int**) snork
         growTo: (int) elements {

    *snork = realloc(*snork, sizeof(int) * elements);
    (*snork)[0] = 55;

    NSLog (@"(%d) %d %d %d", sizeof(snork), (*snork)[0], (*snork)[1], (*snork)[2]);

} // ookie4

- (void) gorkie: (int*) snork withLength:(*int) length andLimit:(int) limit {
   if (*length < limit) {
      snork[*length] = 42;
      *length++;
   } else {
     // haha put an exception here 
   }
} // gorkie

@end // Snork




int main (void) {

    Snork *snork = [[Snork alloc] init];
    
    int *snorgle = malloc(sizeof(int) * 5);
    snorgle[0] = 45;
    snorgle[0] = 54;
    int length = 2;

    [snork gorkie: snorgle withLength:&length andLimit:5];
    return (0);

} // main


Colorize as:
Show Line Numbers
Index of paste annotations: 2 | 1 | 3

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.