Paste: FFI for Smalltalk
        
	
	
	
		| Author: | littledan | 
|---|
		| Mode: | factor | 
|---|
		| Date: | Wed, 1 Apr 2009 18:36:17 | 
|---|
	
	Plain Text |
	
	ERROR: bad-ffi factor-word-name ;
: string>word ( string -- word )
    dup ":" split1 swap vocab-words at
    [ ]
    [ bad-ffi ] ?if ;
M: string selector-value string>word execute( -- result ) ;
M: string selector-value: string>word execute( input -- result ) ;
M: string selector-value:value: string>word execute( input input -- result ) ;
M: string selector-value:value:value: string>word execute( input input input -- result ) ;
M: string selector-value:value:value:value: string>word execute( input input input input -- result ) ;
----
example of use:
class String extends Object [
    |underlying|
    method underlying [ ^underlying ].
    method underlying: value [ underlying := value ].
    method length [ ^'sequences:length' value: underlying ].
].
(String new underlying: 'foo') length
	
		
		
			| Author: | basti | 
|---|
			| Mode: | smalltalk | 
|---|
			| Date: | Thu, 28 May 2009 08:36:04 | 
|---|
		
		Plain Text |
		
		fixture
	
	semester := DLSemester new
		semesterName: 'Winter';
		year: 2009;
		save.
	
	lecture := DLLecture new
		lectureName: 'Softwaretechnik I';
		lectureDescription: 'An introduction to techniques in software development';
		semester: semester;
		save.
	
	user := DLUser new
		userName: 'john';
		save.
	
	DLUser createUserName: 'jack' email: 'jack@student.hpi.uni-potsdam.de'.
	DLUser createFrom: {#userName->'john'. #email->'john@hpi.uni-potsdam.de'. #isAdmin->true}.
	
	
	membership := DLLectureMembership new
		user: user;
		lecture: lecture;
		role: #student;
		save.
	group := DLGroup new
		groupName: 'Roundup pornös';
		groupDescription: 'Roundup in awesome';
		lecture: lecture;
		users: ( {user} as: OrderedCollection );
		save.
	
	
		New Annotation