<commit_before>USING: alien.syntax alien.c-types alien.data core-foundation
core-foundation.bundles core-foundation.dictionaries system
combinators kernel sequences io accessors unix.types ;
IN: iokit

<<
    os macosx?
    [ "/System/Library/Frameworks/IOKit.framework" load-framework ]
    when
>>

CONSTANT: kIOKitBuildVersionKey   "IOKitBuildVersion"
CONSTANT: kIOKitDiagnosticsKey   "IOKitDiagnostics"
 
CONSTANT: kIORegistryPlanesKey   "IORegistryPlanes"
CONSTANT: kIOCatalogueKey    "IOCatalogue"

CONSTANT: kIOServicePlane    "IOService"
CONSTANT: kIOPowerPlane    "IOPower"
CONSTANT: kIODeviceTreePlane   "IODeviceTree"
CONSTANT: kIOAudioPlane    "IOAudio"
CONSTANT: kIOFireWirePlane   "IOFireWire"
CONSTANT: kIOUSBPlane    "IOUSB"

CONSTANT: kIOServiceClass    "IOService"

CONSTANT: kIOResourcesClass   "IOResources"

CONSTANT: kIOClassKey    "IOClass"
CONSTANT: kIOProbeScoreKey   "IOProbeScore"
CONSTANT: kIOKitDebugKey    "IOKitDebug"

CONSTANT: kIOProviderClassKey   "IOProviderClass"
CONSTANT: kIONameMatchKey    "IONameMatch"
CONSTANT: kIOPropertyMatchKey   "IOPropertyMatch"
CONSTANT: kIOPathMatchKey    "IOPathMatch"
CONSTANT: kIOLocationMatchKey   "IOLocationMatch"
CONSTANT: kIOParentMatchKey   "IOParentMatch"
CONSTANT: kIOResourceMatchKey   "IOResourceMatch"
CONSTANT: kIOMatchedServiceCountKey  "IOMatchedServiceCountMatch"

CONSTANT: kIONameMatchedKey   "IONameMatched"

CONSTANT: kIOMatchCategoryKey   "IOMatchCategory"
CONSTANT: kIODefaultMatchCategoryKey  "IODefaultMatchCategory"

CONSTANT: kIOUserClientClassKey   "IOUserClientClass"

CONSTANT: kIOUserClientCrossEndianKey   "IOUserClientCrossEndian"
CONSTANT: kIOUserClientCrossEndianCompatibleKey  "IOUserClientCrossEndianCompatible"
CONSTANT: kIOUserClientSharedInstanceKey   "IOUserClientSharedInstance"

CONSTANT: kIOPublishNotification   "IOServicePublish"
CONSTANT: kIOFirstPublishNotification  "IOServiceFirstPublish"
CONSTANT: kIOMatchedNotification   "IOServiceMatched"
CONSTANT: kIOFirstMatchNotification  "IOServiceFirstMatch"
CONSTANT: kIOTerminatedNotification  "IOServiceTerminate"

CONSTANT: kIOGeneralInterest   "IOGeneralInterest"
CONSTANT: kIOBusyInterest    "IOBusyInterest"
CONSTANT: kIOAppPowerStateInterest  "IOAppPowerStateInterest"
CONSTANT: kIOPriorityPowerStateInterest  "IOPriorityPowerStateInterest"

CONSTANT: kIOPlatformDeviceMessageKey "IOPlatformDeviceMessage"

CONSTANT: kIOCFPlugInTypesKey   "IOCFPlugInTypes"

CONSTANT: kIOCommandPoolSizeKey         "IOCommandPoolSize"

CONSTANT: kIOMaximumBlockCountReadKey "IOMaximumBlockCountRead"
CONSTANT: kIOMaximumBlockCountWriteKey "IOMaximumBlockCountWrite"
CONSTANT: kIOMaximumByteCountReadKey "IOMaximumByteCountRead"
CONSTANT: kIOMaximumByteCountWriteKey "IOMaximumByteCountWrite"
CONSTANT: kIOMaximumSegmentCountReadKey "IOMaximumSegmentCountRead"
CONSTANT: kIOMaximumSegmentCountWriteKey "IOMaximumSegmentCountWrite"
CONSTANT: kIOMaximumSegmentByteCountReadKey "IOMaximumSegmentByteCountRead"
CONSTANT: kIOMaximumSegmentByteCountWriteKey "IOMaximumSegmentByteCountWrite"
CONSTANT: kIOMinimumSegmentAlignmentByteCountKey "IOMinimumSegmentAlignmentByteCount"
CONSTANT: kIOMaximumSegmentAddressableBitCountKey "IOMaximumSegmentAddressableBitCount"

CONSTANT: kIOIconKey "IOIcon"
CONSTANT: kIOBundleResourceFileKey "IOBundleResourceFile"

CONSTANT: kIOBusBadgeKey "IOBusBadge"
CONSTANT: kIODeviceIconKey "IODeviceIcon"

CONSTANT: kIOPlatformSerialNumberKey  "IOPlatformSerialNumber" 

CONSTANT: kIOPlatformUUIDKey  "IOPlatformUUID" 

CONSTANT: kIONVRAMDeletePropertyKey  "IONVRAM-DELETE-PROPERTY"
CONSTANT: kIODTNVRAMPanicInfoKey   "aapl,panic-info"

CONSTANT: kIOBootDeviceKey "IOBootDevice"  
CONSTANT: kIOBootDevicePathKey "IOBootDevicePath" 
CONSTANT: kIOBootDeviceSizeKey "IOBootDeviceSize" 

CONSTANT: kOSBuildVersionKey   "OS Build Version"

CONSTANT: kNilOptions 0

CONSTANT: MACH_PORT_NULL 0
CONSTANT: KERN_SUCCESS 0

FUNCTION: IOReturn IOMasterPort ( mach_port_t bootstrap, mach_port_t* master ) ;

FUNCTION: CFDictionaryRef IOServiceMatching ( c-string name ) ;
FUNCTION: CFDictionaryRef IOServiceNameMatching ( c-string name ) ;
FUNCTION: CFDictionaryRef IOBSDNameMatching ( c-string name ) ;

FUNCTION: IOReturn IOObjectRetain ( io_object_t o ) ;
FUNCTION: IOReturn IOObjectRelease ( io_object_t o ) ;

FUNCTION: IOReturn IOServiceGetMatchingServices ( mach_port_t master, CFDictionaryRef matchingDict, io_iterator_t* iterator ) ;

FUNCTION: io_object_t IOIteratorNext ( io_iterator_t i ) ;
FUNCTION: void IOIteratorReset ( io_iterator_t i ) ;
FUNCTION: boolean_t IOIteratorIsValid ( io_iterator_t i ) ;

FUNCTION: IOReturn IORegistryEntryGetPath ( io_registry_entry_t entry, io_name_t plane, io_string_t path ) ;

FUNCTION: IOReturn IORegistryEntryCreateCFProperties ( io_registry_entry_t entry, CFMutableDictionaryRef properties, CFAllocatorRef allocator, IOOptionBits options ) ;

FUNCTION: c-string mach_error_string ( IOReturn error ) ;

TUPLE: mach-error error-code error-string ;
: <mach-error> ( code -- error )
    dup mach_error_string \ mach-error boa ;

: mach-error ( return -- )
    dup KERN_SUCCESS = [ drop ] [ <mach-error> throw ] if ;

: master-port ( -- port )
    MACH_PORT_NULL { uint } [ IOMasterPort mach-error ] with-out-parameters ;

: io-services-matching-dictionary ( nsdictionary -- iterator )
    master-port swap
    { uint } [ IOServiceGetMatchingServices mach-error ] with-out-parameters ;

: io-services-matching-service ( service -- iterator )
    IOServiceMatching io-services-matching-dictionary ;
: io-services-matching-service-name ( service-name -- iterator )
    IOServiceNameMatching io-services-matching-dictionary ;
: io-services-matching-bsd-name ( bsd-name -- iterator )
    IOBSDNameMatching io-services-matching-dictionary ;

: retain-io-object ( o -- o )
    [ IOObjectRetain mach-error ] keep ;
: release-io-object ( o -- )
    IOObjectRelease mach-error ;

: io-objects-from-iterator* ( i -- i array )
    [ dup IOIteratorNext dup MACH_PORT_NULL = not ] [ ] produce nip ;

: io-objects-from-iterator ( i -- array )
    io-objects-from-iterator* [ release-io-object ] dip ;
    
: properties-from-io-object ( o -- o nsdictionary )<commit_msg>iokit: Rename<commit_after>USING: alien.syntax alien.c-types alien.data core-foundation
core-foundation.bundles core-foundation.dictionaries system
combinators kernel sequences io accessors unix.types ;
IN: iokit

<<
    os macosx?
    [ "/System/Library/Frameworks/IOKit.framework" load-framework ]
    when
>>

CONSTANT: kIOKitBuildVersionKey   "IOKitBuildVersion"
CONSTANT: kIOKitDiagnosticsKey   "IOKitDiagnostics"
 
CONSTANT: kIORegistryPlanesKey   "IORegistryPlanes"
CONSTANT: kIOCatalogueKey    "IOCatalogue"

CONSTANT: kIOServicePlane    "IOService"
CONSTANT: kIOPowerPlane    "IOPower"
CONSTANT: kIODeviceTreePlane   "IODeviceTree"
CONSTANT: kIOAudioPlane    "IOAudio"
CONSTANT: kIOFireWirePlane   "IOFireWire"
CONSTANT: kIOUSBPlane    "IOUSB"

CONSTANT: kIOServiceClass    "IOService"

CONSTANT: kIOResourcesClass   "IOResources"

CONSTANT: kIOClassKey    "IOClass"
CONSTANT: kIOProbeScoreKey   "IOProbeScore"
CONSTANT: kIOKitDebugKey    "IOKitDebug"

CONSTANT: kIOProviderClassKey   "IOProviderClass"
CONSTANT: kIONameMatchKey    "IONameMatch"
CONSTANT: kIOPropertyMatchKey   "IOPropertyMatch"
CONSTANT: kIOPathMatchKey    "IOPathMatch"
CONSTANT: kIOLocationMatchKey   "IOLocationMatch"
CONSTANT: kIOParentMatchKey   "IOParentMatch"
CONSTANT: kIOResourceMatchKey   "IOResourceMatch"
CONSTANT: kIOMatchedServiceCountKey  "IOMatchedServiceCountMatch"

CONSTANT: kIONameMatchedKey   "IONameMatched"

CONSTANT: kIOMatchCategoryKey   "IOMatchCategory"
CONSTANT: kIODefaultMatchCategoryKey  "IODefaultMatchCategory"

CONSTANT: kIOUserClientClassKey   "IOUserClientClass"

CONSTANT: kIOUserClientCrossEndianKey   "IOUserClientCrossEndian"
CONSTANT: kIOUserClientCrossEndianCompatibleKey  "IOUserClientCrossEndianCompatible"
CONSTANT: kIOUserClientSharedInstanceKey   "IOUserClientSharedInstance"

CONSTANT: kIOPublishNotification   "IOServicePublish"
CONSTANT: kIOFirstPublishNotification  "IOServiceFirstPublish"
CONSTANT: kIOMatchedNotification   "IOServiceMatched"
CONSTANT: kIOFirstMatchNotification  "IOServiceFirstMatch"
CONSTANT: kIOTerminatedNotification  "IOServiceTerminate"

CONSTANT: kIOGeneralInterest   "IOGeneralInterest"
CONSTANT: kIOBusyInterest    "IOBusyInterest"
CONSTANT: kIOAppPowerStateInterest  "IOAppPowerStateInterest"
CONSTANT: kIOPriorityPowerStateInterest  "IOPriorityPowerStateInterest"

CONSTANT: kIOPlatformDeviceMessageKey "IOPlatformDeviceMessage"

CONSTANT: kIOCFPlugInTypesKey   "IOCFPlugInTypes"

CONSTANT: kIOCommandPoolSizeKey         "IOCommandPoolSize"

CONSTANT: kIOMaximumBlockCountReadKey "IOMaximumBlockCountRead"
CONSTANT: kIOMaximumBlockCountWriteKey "IOMaximumBlockCountWrite"
CONSTANT: kIOMaximumByteCountReadKey "IOMaximumByteCountRead"
CONSTANT: kIOMaximumByteCountWriteKey "IOMaximumByteCountWrite"
CONSTANT: kIOMaximumSegmentCountReadKey "IOMaximumSegmentCountRead"
CONSTANT: kIOMaximumSegmentCountWriteKey "IOMaximumSegmentCountWrite"
CONSTANT: kIOMaximumSegmentByteCountReadKey "IOMaximumSegmentByteCountRead"
CONSTANT: kIOMaximumSegmentByteCountWriteKey "IOMaximumSegmentByteCountWrite"
CONSTANT: kIOMinimumSegmentAlignmentByteCountKey "IOMinimumSegmentAlignmentByteCount"
CONSTANT: kIOMaximumSegmentAddressableBitCountKey "IOMaximumSegmentAddressableBitCount"

CONSTANT: kIOIconKey "IOIcon"
CONSTANT: kIOBundleResourceFileKey "IOBundleResourceFile"

CONSTANT: kIOBusBadgeKey "IOBusBadge"
CONSTANT: kIODeviceIconKey "IODeviceIcon"

CONSTANT: kIOPlatformSerialNumberKey  "IOPlatformSerialNumber" 

CONSTANT: kIOPlatformUUIDKey  "IOPlatformUUID" 

CONSTANT: kIONVRAMDeletePropertyKey  "IONVRAM-DELETE-PROPERTY"
CONSTANT: kIODTNVRAMPanicInfoKey   "aapl,panic-info"

CONSTANT: kIOBootDeviceKey "IOBootDevice"  
CONSTANT: kIOBootDevicePathKey "IOBootDevicePath" 
CONSTANT: kIOBootDeviceSizeKey "IOBootDeviceSize" 

CONSTANT: kOSBuildVersionKey   "OS Build Version"

CONSTANT: kNilOptions 0

CONSTANT: MACH_PORT_NULL 0
CONSTANT: KERN_SUCCESS 0

FUNCTION: IOReturn IOMasterPort ( mach_port_t bootstrap, mach_port_t* master ) ;

FUNCTION: CFDictionaryRef IOServiceMatching ( c-string name ) ;
FUNCTION: CFDictionaryRef IOServiceNameMatching ( c-string name ) ;
FUNCTION: CFDictionaryRef IOBSDNameMatching ( c-string name ) ;

FUNCTION: IOReturn IOObjectRetain ( io_object_t o ) ;
FUNCTION: IOReturn IOObjectRelease ( io_object_t o ) ;

FUNCTION: IOReturn IOServiceGetMatchingServices ( mach_port_t master, CFDictionaryRef matchingDict, io_iterator_t* iterator ) ;

FUNCTION: io_object_t IOIteratorNext ( io_iterator_t i ) ;
FUNCTION: void IOIteratorReset ( io_iterator_t i ) ;
FUNCTION: boolean_t IOIteratorIsValid ( io_iterator_t i ) ;

FUNCTION: IOReturn IORegistryEntryGetPath ( io_registry_entry_t entry, io_name_t plane, io_string_t path ) ;

FUNCTION: IOReturn IORegistryEntryCreateCFProperties ( io_registry_entry_t entry, CFMutableDictionaryRef properties, CFAllocatorRef allocator, IOOptionBits options ) ;

FUNCTION: c-string mach_error_string ( IOReturn error ) ;

TUPLE: mach-error-state error-code error-string ;
: <mach-error> ( code -- error )
    dup mach_error_string \ mach-error-state boa ;

: mach-error ( return -- )
    dup KERN_SUCCESS = [ drop ] [ <mach-error> throw ] if ;

: master-port ( -- port )
    MACH_PORT_NULL { uint } [ IOMasterPort mach-error ] with-out-parameters ;

: io-services-matching-dictionary ( nsdictionary -- iterator )
    master-port swap
    { uint } [ IOServiceGetMatchingServices mach-error ] with-out-parameters ;

: io-services-matching-service ( service -- iterator )
    IOServiceMatching io-services-matching-dictionary ;
: io-services-matching-service-name ( service-name -- iterator )
    IOServiceNameMatching io-services-matching-dictionary ;
: io-services-matching-bsd-name ( bsd-name -- iterator )
    IOBSDNameMatching io-services-matching-dictionary ;

: retain-io-object ( o -- o )
    [ IOObjectRetain mach-error ] keep ;
: release-io-object ( o -- )
    IOObjectRelease mach-error ;

: io-objects-from-iterator* ( i -- i array )
    [ dup IOIteratorNext dup MACH_PORT_NULL = not ] [ ] produce nip ;

: io-objects-from-iterator ( i -- array )
    io-objects-from-iterator* [ release-io-object ] dip ;
    
: properties-from-io-object ( o -- o nsdictionary )
{'fraction_non_alphanumeric': 0.07447325769854132, 'fraction_numerical': 0.00048622366288492705, 'mean_word_length': 6.389820359281437, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3360582', 'n_tokens_mistral': 4080, 'n_tokens_neox': 4119, 'n_words': 773}