gestalt vocab for mac.
							parent
							
								
									5f2f2c7582
								
							
						
					
					
						commit
						b1c1ca0e74
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
John Benediktsson
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
! Copyright (C) 2011 John Benediktsson
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license
 | 
			
		||||
 | 
			
		||||
USING: alien.data alien.syntax combinators core-foundation
 | 
			
		||||
formatting io.binary kernel math ;
 | 
			
		||||
 | 
			
		||||
IN: gestalt
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
TYPEDEF: SInt16 OSErr
 | 
			
		||||
 | 
			
		||||
TYPEDEF: UInt32 OSType
 | 
			
		||||
 | 
			
		||||
FUNCTION: OSErr Gestalt ( OSType selector, SInt32* response ) ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
: gestalt ( selector -- response )
 | 
			
		||||
    0 SInt32 <ref> [ Gestalt ] keep
 | 
			
		||||
    swap [ throw ] unless-zero le> ;
 | 
			
		||||
 | 
			
		||||
: system-version ( -- n )
 | 
			
		||||
    "sysv" be> gestalt ;
 | 
			
		||||
 | 
			
		||||
: system-version-major ( -- n )
 | 
			
		||||
    "sys1" be> gestalt ;
 | 
			
		||||
 | 
			
		||||
: system-version-minor ( -- n )
 | 
			
		||||
    "sys2" be> gestalt ;
 | 
			
		||||
 | 
			
		||||
: system-version-bugfix ( -- n )
 | 
			
		||||
    "sys3" be> gestalt ;
 | 
			
		||||
 | 
			
		||||
: system-version-string ( -- str )
 | 
			
		||||
    system-version-major
 | 
			
		||||
    system-version-minor
 | 
			
		||||
    system-version-bugfix
 | 
			
		||||
    "%s.%s.%s" sprintf ;
 | 
			
		||||
 | 
			
		||||
: system-code-name ( -- str )
 | 
			
		||||
    system-version HEX: FFF0 bitand {
 | 
			
		||||
        { HEX: 1070 [ "Lion"         ] }
 | 
			
		||||
        { HEX: 1060 [ "Snow Leopard" ] }
 | 
			
		||||
        { HEX: 1050 [ "Leopard"      ] }
 | 
			
		||||
        { HEX: 1040 [ "Tiger"        ] }
 | 
			
		||||
        { HEX: 1030 [ "Panther"      ] }
 | 
			
		||||
        { HEX: 1020 [ "Jaguar"       ] }
 | 
			
		||||
        { HEX: 1010 [ "Puma"         ] }
 | 
			
		||||
        { HEX: 1000 [ "Cheetah"      ] }
 | 
			
		||||
        [ drop "Unknown" ]
 | 
			
		||||
    } case ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
macosx
 | 
			
		||||
		Loading…
	
		Reference in New Issue