14#include <Cocoa/Cocoa.h> 
   31#ifdef MAC_OS_X_VERSION_10_12 
   64                         location : NSMakePoint(0., 0.) modifierFlags : 0 timestamp : 0.
 
   65                                 windowNumber : 0 context : nil subtype: 0 data1 : 0 data2 : 0];
 
   66   [
NSApp postEvent : stopEvent atStart : true];
 
   79#   define HOWMANY(x, y)   (((x)+((y)-1))/(y)) 
   92   ULong_t fds_bits[HOWMANY(kFDSETSIZE, kNFDBITS)];
 
  107         fds_bits[n/kNFDBITS] |= (1UL << (
n % 
kNFDBITS));
 
 
  115         fds_bits[n/kNFDBITS] &= ~(1UL << (
n % 
kNFDBITS));
 
 
 
  141   void InitializeCocoa();
 
  145   void CloseFileDescriptors();
 
  153   void SetFileDescriptor(
int fd, DescriptorType 
fdType);
 
 
  174   assert(MacOSXSystem::fgInstance != 0 && 
"TMacOSXSystem_ReadCallback, MacOSXSystem's singleton is null");
 
  181                       location : NSMakePoint(0, 0) modifierFlags : 0
 
  182                       timestamp: 0. windowNumber : 0 context : nil
 
  183                       subtype : 0 data1 : nativeFD data2 : 0];
 
  184   [
NSApp postEvent : fdEvent atStart : NO];
 
 
  194   assert(MacOSXSystem::fgInstance != 0 && 
"TMacOSXSystem_WriteCallback, MacOSXSystem's singleton is null");
 
  201                       location : NSMakePoint(0, 0) modifierFlags : 0
 
  202                       timestamp: 0. windowNumber : 0 context : nil
 
  203                       subtype : 0 data1 : nativeFD data2 : 0];
 
  204   [
NSApp postEvent : fdEvent atStart : NO];
 
 
  210MacOSXSystem::MacOSXSystem()
 
  212                  fCocoaInitialized(
false)
 
  214   assert(
fgInstance == 0 && 
"MacOSXSystem, fgInstance was initialized already");
 
 
  251         assert(handler->GetFd() != -1 && 
"SetFileDescriptors, invalid file descriptor");
 
  253         if (handler->HasReadInterest())
 
  256         if (handler->HasWriteInterest())
 
  259   } 
catch (
const std::exception &) {
 
 
  300   assert(fd != -1 && 
"SetFileDescriptor, invalid file descriptor");
 
  307      throw std::runtime_error(
"MacOSXSystem::SetFileDescriptors: CFFileDescriptorCreate failed");
 
  314      throw std::runtime_error(
"MacOSXSystem::SetFileDescriptors: CFFileDescriptorCreateRunLoopSource failed");
 
 
  333                    fCocoaInitialized(
false),
 
 
  446   fPimpl->InitializeCocoa();
 
  460   [
stopper.Get() performSelector : @selector(stopRun) withObject : nil afterDelay : 0.05];
 
 
  474      [
NSApp sendEvent : event];
 
 
  489      Fatal(
"WaitForAllEvents", 
"SetFileDesciptors failed");
 
  502   NSEvent *
event = [
NSApp nextEventMatchingMask : Private::kEventMaskAny
 
  503                     untilDate : untilDate inMode : NSDefaultRunLoopMode dequeue : YES];
 
  508         [
NSApp sendEvent : event];
 
  517         [
NSApp sendEvent : event];
 
  520   fPimpl->CloseFileDescriptors();
 
 
  530      if (fh->
GetFd() == -1)
 
  531         Error(
"AddFileHandler", 
"invalid file descriptor");
 
 
  553          "ProcessApplicationDefinedEvent, called while Cocoa was not initialized");
 
  557          "ProcessApplicationDefinedEvent, event parameter is nil");
 
  559          "ProcessApplicationDefinedEvent, event parameter has wrong type");
 
  574      Error(
"ProcessApplicationDefinedEvent", 
"file descriptor %d was not found", 
int(event.data1));
 
 
int Int_t
Signed integer 4 bytes (int)
 
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
 
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Fatal(const char *location, const char *msgfmt,...)
Use this function in case of a fatal error. It will abort the program.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t org
 
R__EXTERN TFileHandler * gXDisplay
 
void SetFileDescriptor(int fd, DescriptorType fdType)
 
void UnregisterFileDescriptor(CFFileDescriptorRef fd)
 
std::set< CFFileDescriptorRef > fCFFileDescriptors
 
ROOT::MacOSX::Util::AutoreleasePool fPool
 
bool SetFileDescriptors(const TSeqCollection *fileHandlers)
 
void CloseFileDescriptors()
 
static MacOSXSystem * fgInstance
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
TFdSet & operator=(const TFdSet &rhs)
 
TFdSet(const TFdSet &org)
 
Bool_t Notify() override
Notify when event occurred on descriptor associated with this handler.
 
bool ProcessPendingEvents()
 
void AddFileHandler(TFileHandler *fh)
Add a file handler to the list of system file handlers.
 
void WaitEvents(Long_t nextto)
 
bool CocoaInitialized() const
 
void DispatchOneEvent(Bool_t pendingOnly)
Dispatch a single event.
 
TFileHandler * RemoveFileHandler(TFileHandler *fh)
Remove a file handler from the list of file handlers.
 
void ProcessApplicationDefinedEvent(void *event)
 
std::unique_ptr< ROOT::MacOSX::Details::MacOSXSystem > fPimpl
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
Sequenceable collection abstract base class.
 
TSeqCollection * fFileHandler
 
virtual Long_t NextTimeOut(Bool_t mode)
Time when next timer of mode (synchronous=kTRUE or asynchronous=kFALSE) will time-out (in ms).
 
TFdSet * fWritemask
Files that should be checked for read events.
 
TFdSet * fSignals
Files with writes waiting.
 
TFdSet * fWriteready
Files with reads waiting.
 
TSeqCollection * fSignalHandler
 
TFdSet * fReadready
Files that should be checked for write events.
 
Int_t fNfd
Signals that were trapped.
 
Bool_t CheckSignals(Bool_t sync)
Check if some signals were raised and call their Notify() member.
 
void DispatchOneEvent(Bool_t pendingOnly=kFALSE) override
Dispatch a single event.
 
Bool_t DispatchTimers(Bool_t mode)
Handle and dispatch timers.
 
TFileHandler * RemoveFileHandler(TFileHandler *fh) override
Remove a file handler from the list of file handlers.
 
void AddFileHandler(TFileHandler *fh) override
Add a file handler to the list of system file handlers.
 
Bool_t CheckDescriptors()
Check if there is activity on some file descriptors and call their Notify() member.
 
const NSEventType kApplicationDefined
 
void TMacOSXSystem_ReadCallback(CFFileDescriptorRef fdref, CFOptionFlags, void *)
 
const NSUInteger kEventMaskAny
 
void TMacOSXSystem_WriteCallback(CFFileDescriptorRef fdref, CFOptionFlags, void *)