Collection C-Macros to PB-Macros

Share your advanced PureBasic knowledge/code with the community.
User avatar
mk-soft
Always Here
Always Here
Posts: 6411
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Collection C-Macros to PB-Macros

Post by mk-soft »

I was looking for constants for macOS again and found them as macros.
Whoever has macos for it (all OS) please add it here.
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
mk-soft
Always Here
Always Here
Posts: 6411
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Collection C-Macros to PB-Macros

Post by mk-soft »

macOS ioccom.h, filio.h

Code: Select all

;-TOP by mk-soft

;- ioccom.h

#IOCPARM_MASK = $1fff ;/* parameter length, at most 13 bits */
#IOCPARM_MAX = #IOCPARM_MASK + 1

Macro IOCPARM_LEN(x)
  (((x) >> 16) & IOCPARM_MASK)
EndMacro

Macro IOCBASECMD(x)
  ((x) & ~(IOCPARM_MASK << 16))
EndMacro

Macro IOCGROUP(x)
  (((x) >> 8) & $ff)
EndMacro

;/* no parameters */
#IOC_VOID = $20000000
;/* copy parameters out */
#IOC_OUT = $40000000
;/* copy parameters in */
#IOC_IN = $80000000
;/* copy parameters in And out */
#IOC_INOUT = (#IOC_IN | #IOC_OUT)
;/* mask For IN/OUT/VOID */
#IOC_DIRMASK = $e0000000

Macro _IOC(inout, group, num, len)
  (inout | ((len & #IOCPARM_MASK) << 16) | ((group) << 8) | (num))
EndMacro

Macro _IO(g, n)
  _IOC(#IOC_VOID,	(g), (n), 0)
EndMacro

Macro _IOR(g, n, t)
  _IOC(#IOC_OUT, (g), (n), SizeOf(t))
EndMacro

Macro _IOW(g, n, t)
  _IOC(#IOC_IN,	(g), (n), SizeOf(t))
EndMacro

;/* this should be _IORW, but stdio got there first */
Macro _IOWR(g, n, t)
  _IOC(IOC_INOUT,	(g), (n), SizeOf(t))
EndMacro

; ****

; filio.h

#FIOCLEX   =      _IO('f', 1)            ;/* set close on exec on fd */
#FIONCLEX  =      _IO('f', 2)            ;/* remove close on exec */
#FIONREAD  =     _IOR('f', 127, long)     ;/* get # bytes To Read */
#FIONBIO   =     _IOW('f', 126, long)     ;/* set/clear non-blocking i/o */
#FIOASYNC  =     _IOW('f', 125, long)     ;/* set/clear async i/o */
#FIOSETOWN =     _IOW('f', 124, long)     ;/* set owner */
#FIOGETOWN =     _IOR('f', 123, long)     ;/* get owner */
#FIODTYPE  =     _IOR('f', 122, long)     ;/* get d_type */

Debug Hex(#FIONREAD)
Debug Hex(#FIONBIO)

My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
Post Reply