Advertisement
imk0tter

Untitled

Sep 18th, 2017
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 10.58 KB | None | 0 0
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ; Description: This is the base class, which every   ;
  3. ; class inherits from...                             ;
  4. ;                                                    ;
  5. ; Usage: $Class(<uID>,<Params>,...).<Member>         ;
  6. ; Example: var %x $Class                             ;
  7. ; Example: $Class.Delete(%x)                         ;
  8. ; Example: $Class(%x,Name,Some Text).setv            ;
  9. ; Example: $Class(%x,Name).getv                      ;
  10. ; Example: $Class(%x,Name).removev                   ;
  11. ; Example: $Class.Delete(%x)                         ;
  12. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13. ; Public Declarations ;
  14. ;;;;;;;;;;;;;;;;;;;;;;;
  15. alias Class.DELETE.Public
  16. alias Class.GETV.Public
  17. alias Class.SETV.Public
  18. alias Class.REMOVEV.Public
  19.  
  20. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  21. ; Exception Declarations ;
  22. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  23. alias Class.EXCEPTION.Null
  24.  
  25. ;;;;;;;;;;;;;;;
  26. ; Class Alias ;
  27. ;;;;;;;;;;;;;;;
  28. alias Class {
  29.   if (!$prop) goto init
  30.   if ($IsPublic(Class,$prop)) goto $prop
  31.   return $catch(0,MemberErr,$qt($prop) is not a public member of Class)
  32.   :init
  33.   hinc -m Objects ClassObjects
  34.   return $Class.INIT($md5($hget(Objects,ClassObjects)),Class)
  35.   :delete
  36.   return $Class.DELETE($1)
  37.   :getv
  38.   return $Class.GETV($1,$2)
  39.   :setv
  40.   return $Class.SETV($1,$2,$3,$4)
  41.   :removev
  42.   return $Class.REMOVEV($1,$2,$3)
  43. }
  44. ;;;;;;;;;;;;;;;;;
  45. ; Class Methods ;
  46. ;;;;;;;;;;;;;;;;;
  47. alias Class.INIT {
  48.   hadd -m Objects $1.INIT $2
  49.   return $1
  50. }
  51. alias Class.SETV {
  52.   var %x $hget($1,$2)
  53.   hadd -m $1 $2 $3
  54.   if $4 { $Object(%x).delete }
  55.   return %x
  56. }
  57. alias Class.GETV {
  58.   return $hget($1,$2)
  59. }
  60. alias Class.REMOVEV {
  61.   var %x $hget($1,$2)
  62.   hdel $1 $2
  63.   if $3 {
  64.     $Object(%x).delete
  65.   }
  66. }
  67. alias Class.DELETE {
  68.   ;;;;;;;;;;;;;;;;;;;;;;
  69.   ; Do Destroying here ;
  70.   ;;;;;;;;;;;;;;;;;;;;;;
  71.   var %x 1
  72.   while $hget($1,%x).data {
  73.     var %y $v1
  74.     if $isinstance(%y) { $Object(%y).delete }
  75.     inc %x
  76.   }
  77.   if $hget($1) { hfree $1 }
  78.   hdel -w Objects $1*
  79.   return
  80. }
  81. ;;;;;;;;;;;;;
  82. ; End Class ;
  83. ;;;;;;;;;;;;;
  84. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  85. ; Description: Returns whether or not a class member ;
  86. ; is public.                                         ;
  87. ;                                                    ;
  88. ; Usage: $IsPublic(<Class>,<Member>)                 ;
  89. ; Example: if ($IsInstanceOf(%Player,Player)) ..     ;
  90. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  91. alias IsPublic return $isalias($+($1.,$2.,Public))
  92.  
  93. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  94. ; Description: Called from the class constructor to  ;
  95. ; let the object know that the specified object      ;
  96. ; inherits from the specified class                  ;
  97. ;                                                    ;
  98. ; Usage: $InheritsFrom(<Object>,<Class>)             ;
  99. ; Example: $InheritsFrom(%instance,Player)           ;
  100. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  101. alias InheritsFrom hadd -m Objects $+($1.,INIT) $2 $hget(Objects,$+($1.,INIT))
  102.  
  103. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  104. ; Description: Returns whether or not an instance is ;
  105. ; an instance of the specified class                 ;
  106. ;                                                    ;
  107. ; Usage: $IsInstanceOf(<Instance>,<Class>)           ;
  108. ; Example: if ($IsInstanceOf(%Player,Player)) ..     ;
  109. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  110. alias IsInstanceOf return $findtok($hget(Objects,$1.INIT),$2,0,32)
  111.  
  112.  
  113. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  114. ; Description: Returns whether or not an instance    ;
  115. ; exists in memory                                   ;
  116. ;                                                    ;
  117. ; Usage: $IsInstance(<Instance>)                     ;
  118. ; Example: if (!$IsInstance(%x)) %x = $Player        ;
  119. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  120. alias IsInstance return $token($hget(Objects, $1.INIT),1,32)
  121.  
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  123. ; Description: Called when ever an error is caught   ;
  124. ;                                                    ;
  125. ; Usage: $catch(<Instance>,<Error>,<Message>)        ;
  126. ; Example: if (!$IsInstanceOf(%Player,Player)) {     ;
  127. ; $catch(%Player,InstanceErr,Object %player is not   ;
  128. ;  an instance of class Player)                      ;
  129. ; }                                                  ;
  130. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  131. alias Catch {
  132.   var %error $2,%message $3,%instance $1
  133.   if $window(@Debug) { echo @Debug Caught $qt(%error) exception: %message }
  134.   if %instance {
  135.     var %x 1
  136.     while $token($hget(Objects,$+(%instance,.INIT)),%x,32) {
  137.       var %y $+($v1,.Exception.,%error)
  138.       if $isalias(%y) {
  139.         return $($+($,%y,$chr(40),%instance,$chr(44),%message,$chr(41)),2)
  140.       }
  141.       inc %x
  142.     }
  143.   }
  144. }
  145. ;;;;;;;;;;;;;
  146. ; End Catch ;
  147. ;;;;;;;;;;;;;
  148.  
  149. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  150. ; Description: Used to call the first found method   ;
  151. ; associated with an objects inheritance tree...     ;
  152. ;                                                    ;
  153. ; Usage: $Object(<Instance>,..).<Method>             ;
  154. ; Example: $Object(%stack,$2).add                    ;
  155. ; Equivelent: $List(%stack,$2).add                   ;
  156. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  157. alias Object {
  158.   var %x 1,%y $hget(Objects,$1.INIT)
  159.   while $token(%y,%x,32) {
  160.     var %z $v1
  161.     if $isalias(%z $+ . $+ $prop $+ .Public) {
  162.       return $($+($,%z,( $regsubex($mid($str($chr(44),$0),2),//g,$\n) ).,$prop),2)
  163.  
  164.     }
  165.     inc %x
  166.   }
  167.   return $catch($1,MemberErr,$prop is not a public member of $isinstance($1))
  168. }
  169.  
  170. ;;;;;;;;;;;;;;
  171. ; End Object ;
  172. ;;;;;;;;;;;;;;
  173.  
  174.  
  175.  
  176. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  177. ; Description: This is a Socket class which contains   ;
  178. ; the basic structure of a class                       ;
  179. ; Usage: $Socket(<Instance>,<Params>,..).<Method>      ;
  180. ; Example: var %x $Socket(127.0.0.1,1337,LocalSock)    ;
  181. ; Example: $Socket(%x,SockOpenAlias).sockopen          ;
  182. ; Example: $Socket(%x,SockReadAlias).sockread          ;
  183. ; Example: $Socket(%x).connect                         ;
  184. ; Example: $Socket(%x).close                           ;
  185. ; Example: $Socket(%x).delete                          ;
  186. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  187. ; Public Declarations ;
  188. ;;;;;;;;;;;;;;;;;;;;;;;
  189. alias Socket.DELETE.Public
  190. alias Socket.PORT.Public
  191. alias Socket.IP.Public
  192. alias Socket.OPEN.Public
  193. alias Socket.CONNECT.Public
  194. alias Socket.LISTEN.Public
  195. alias Socket.CLOSE.Public
  196. alias Socket.SOCKREAD.Public
  197. alias Socket.SOCKOPEN.Public
  198. alias Socket.SOCKCLOSE.Public
  199. alias Socket.SOCKACCEPT.Public
  200. alias Socket.TAG.Public
  201. alias Socket.SETTAG.Public
  202. alias Socket.SETIP.Public
  203. alias Socket.SETPORT.Public
  204. alias Socket.WRITE.Public
  205. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  206. ; Exception Declarations ;
  207. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  208. alias Socket.EXCEPTION.SockErr {
  209.   $Class($1,SockErr).getv $1-
  210.   return $iif($bvar(&SockErr,0),$bvar(&SockErr,1-).text)
  211. }
  212. ;;;;;;;;;;;;;;;;
  213. ; Socket Alias ;
  214. ;;;;;;;;;;;;;;;;
  215. alias Socket {
  216.   if (!$prop) goto init
  217.   if ($IsPublic(Socket,$prop)) goto $prop
  218.   return $catch($1,MemberErr, $qt($prop) is not a public member of Socket)
  219.   :init
  220.   return $Socket.INIT($1,$2,$3)
  221.   :delete
  222.   return $Socket.DELETE($1)
  223.   :open
  224.   :connect
  225.   if ($sock($1).status) $catch($1,SockOpenErr,Socket $1 is already open)
  226.   sockopen $1 $Class($1,IP).getv $Class($1,PORT).getv
  227.   return
  228.   :close
  229.   if ($sock($1).status) sockclose $1
  230.   else return $catch($1,SockCloseErr,Sock $1 was not open)
  231.   return
  232.   :listen
  233.   if ($sock($1).status) $catch($1,SockOpenErr,Socket $1 is already open)
  234.   var %x $iif($Class($1,IP).getv,$v1),%y $iif(%x != $null,-d)
  235.   socklisten %y %x $1 $Class($1,PORT).getv
  236.   return
  237.   :sockclose
  238.   return $Class($1,CLOSE,$2).setv
  239.   :sockopen
  240.   return $Class($1,OPEN,$2).setv
  241.   :sockaccept
  242.   return $Class($1,ACCEPT,$2).setv
  243.   :sockread
  244.   return $Class($1,READ,$2).setv
  245.   :settag
  246.   $Class($1,Tag,$2).setv
  247.   :tag
  248.   return $Class($1,Tag).getv
  249.   :setip
  250.   return $Class($1,IP,$2).setv
  251.   :setport
  252.   return $Class($1,PORT,$2).setv
  253.   :ip
  254.   return $Class($1,IP).getv
  255.   :port
  256.   return $Class($1,PORT).getv
  257.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  258.   ; Put your own method handlers here ;
  259.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  260.   :write
  261.   if ($sock($1).status != active) return $catch($1,SockErr,Socket $1 is not connected)
  262.   sockwrite $1 $2
  263.   return
  264.   :MethodHandler
  265. }
  266.  
  267. ;;;;;;;;;;;;;;;;;;
  268. ; Socket Methods ;
  269. ;;;;;;;;;;;;;;;;;;
  270. alias Socket.INIT {
  271.   var %instance $Class
  272.   $inheritsFrom(%instance,Socket)
  273.   $Class(%instance,IP,$1).setv
  274.   $Class(%instance,PORT,$2).setv
  275.   $Class(%instance,OPEN,Socket.DefaultSockOpen).setv
  276.   $Class(%instance,CLOSE,Socket.DefaultSockClose).setv
  277.   $Class(%instance,ACCEPT,Socket.DefaultSockAccept).setv
  278.   $Class(%instance,READ,Socket.DefaultSockRead).setv
  279.   $Class(%instance,SockErr,Socket.DefaultSockErr).setv
  280.   $Class(%instance,Tag,$iif($isinstance($3),$3,$3)).setv
  281.   ;;;;;;;;;;;;;;;;;;;;;;;;
  282.   ; Do Initializing here ;
  283.   ;;;;;;;;;;;;;;;;;;;;;;;;
  284.   return %instance
  285. }
  286. alias Socket.DELETE {
  287.   ;;;;;;;;;;;;;;;;;;;;;;
  288.   ; Do Destroying here ;
  289.   ;;;;;;;;;;;;;;;;;;;;;;
  290.   if ($sock($1).status) sockclose $1
  291.   return $Class($1).DELETE
  292. }
  293. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  294. ; Default Event Handlers ;
  295. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  296. alias Socket.DefaultSockOpen {
  297.   if ($Window(@Debug)) echo @Debug Successfully $iif($sock($sockname).status != Active,dis) $+ connected to $sock($sockname).ip $+ : $+ $sock($sockname).port
  298. }
  299. alias Socket.DefaultSockClose {
  300.   if ($Window(@Debug)) echo @Debug Successfully disconnected from $sock($sockname).ip $+ : $+ $sock($sockname).port
  301.   $Socket($1).delete
  302. }
  303. alias Socket.DefaultSockRead {
  304.   sockread %temp
  305.   if ($window(@Debug)) echo @Debug %temp
  306. }
  307. alias Socket.DefaultSockAccept {
  308.   var %x $sockname $+ 
  309.   /sockaccept %x
  310.   var %y $sock(%x).ip,%z $sock(%x).port, %a $socket(%y,%x)
  311.   sockrename %x %a $+ 
  312.   if ($window(@Debug)) echo @Debug Socket accepted from  $+ %y $+  on port  $+ %z $+ : Handle = %a
  313. }
  314. alias Socket.DefaultSockErr {
  315.   sockclose $1
  316. }
  317. alias SockErr {
  318.   bset -t &SockErr $1-
  319. }
  320. ;;;;;;;;;;;;;;;;;;;;
  321. ; Trigger Handlers ;
  322. ;;;;;;;;;;;;;;;;;;;;
  323. on 1:sockopen:*: $Class($left($sockname,-1),OPEN).getv $left($sockname,-1)
  324. on 1:sockclose:*: $Class($left($sockname,-1),CLOSE).getv $left($sockname,-1)
  325. on 1:socklisten:*: $Class($left($sockname,-1),ACCEPT).getv $left($sockname,-1)
  326. on 1:sockread:*: $Class($left($sockname,-1),READ).getv $left($sockname,-1)
  327. ;;;;;;;;;;;;;;
  328. ; End Socket ;
  329. ;;;;;;;;;;;;;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement