Advertisement
imk0tter

Untitled

Apr 14th, 2011
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 19.45 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.GETB.Public
  19. alias Class.SETB.Public
  20. alias Class.REMV.Public
  21. alias Class.REMB.Public
  22. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  23. ; Exception Declarations ;
  24. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  25. alias Class.EXCEPTION.Null
  26.  
  27. ;;;;;;;;;;;;;;;
  28. ; Class Alias ;
  29. ;;;;;;;;;;;;;;;
  30. alias Class {
  31.   if (!$prop) goto init
  32.   if ($IsPublic(Class,$prop)) goto $prop
  33.   return $catch(0,MemberErr,$qt($prop) is not a public member of Class)
  34.   :init
  35.   inc %oop
  36.   return $Class.INIT($md5($ctime $+ $ticks $+ %oop),Class)
  37.   :delete
  38.   return $Class.DELETE($1)
  39.   :getv
  40.   return $Class.GETV($1,$2)
  41.   :setv
  42.   return $Class.SETV($1,$2,$3,$4)
  43.   :setb
  44.   if $bvar($3,0) { return $Class.SETV($1,$2,$3,0,1) }
  45.   else { $catch($1,ParamErr,You have specified insufficent parameters) }
  46.   return
  47.   :getb
  48.   if $3 { return $Class.GETV($1,$2,$3) }
  49.   else { return $Catch($1,ParamErr,You have specified insufficent parameters) }
  50.   :remv
  51.   :remb
  52.   return $Class.REMOVEV($1,$2,$3)
  53. }
  54.  
  55. ;;;;;;;;;;;;;;;;;
  56. ; Class Methods ;
  57. ;;;;;;;;;;;;;;;;;
  58. alias Class.IMPORT {
  59.   if !$exists(object/) { mkdir object }
  60.   if $hget($1,INIT) { return }
  61.   hmake $1
  62.   hload -b $1 $+(object/,$1.obj)
  63.   if $hget($1,INIT) { return $v1 }
  64.   return
  65. }
  66. alias Class.EXPORT {
  67.   if !$exists(object/) { mkdir object }
  68.   hsave -b $1 $+(object/,$1.obj)
  69.   return
  70. }
  71. alias Class.COPY {
  72.   if !$exists(object/) { mkdir object }
  73.   if $IsInstance($1) {
  74.     var %x $Class
  75.     hsave -b $1 $+(object/,$1.cpy)
  76.     hload -b %x $+(object/,$1.cpy)
  77.     .remove $+(object/,$1.cpy)
  78.     return %x
  79.   }
  80.   return
  81. }
  82.  
  83. alias Class.INIT {
  84.   hadd -m $1 INIT $2
  85.   return $1
  86. }
  87. alias Class.SETV {
  88.   var %x $hget($1,$2)
  89.   hadd $iif($5,-mb,-m) $1 $2 $3
  90.   if $4 { $Object(%x).delete }
  91.   return %x
  92. }
  93. alias Class.GETV {
  94.   return $iif($3,$hget($1,$2,$3),$hget($1,$2))
  95. }
  96. alias Class.REMOVEV {
  97.   var %x $hget($1,$2)
  98.   hdel $1 $2
  99.   if $3 {
  100.     $Object(%x).delete
  101.   }
  102. }
  103. alias Class.DELETE {
  104.   ;;;;;;;;;;;;;;;;;;;;;;
  105.   ; Do Destroying here ;
  106.   ;;;;;;;;;;;;;;;;;;;;;;
  107.   var %x 1
  108.   while $hget($1,%x).data {
  109.     var %y $v1
  110.     if $isinstance(%y) && $2 { $Object(%y).delete }
  111.     inc %x
  112.   }
  113.   .hfree $1
  114.   return
  115. }
  116. ;;;;;;;;;;;;;
  117. ; End Class ;
  118. ;;;;;;;;;;;;;
  119. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  120. ; Description: Returns whether or not a class member ;
  121. ; is public.                                         ;
  122. ;                                                    ;
  123. ; Usage: $IsPublic(<Class>,<Member>)                 ;
  124. ; Example: if ($IsInstanceOf(%Player,Player)) ..     ;
  125. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  126. alias IsPublic return $isalias($+($1.,$2.,Public))
  127.  
  128. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  129. ; Description: Called from the class constructor to  ;
  130. ; let the object know that the specified object      ;
  131. ; inherits from the specified class                  ;
  132. ;                                                    ;
  133. ; Usage: $InheritsFrom(<Object>,<Class>)             ;
  134. ; Example: $InheritsFrom(%instance,Player)           ;
  135. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  136. alias InheritsFrom hadd -m $1 INIT $2 $hget($1,INIT)
  137.  
  138. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  139. ; Description: Returns whether or not an instance is ;
  140. ; an instance of the specified class                 ;
  141. ;                                                    ;
  142. ; Usage: $IsInstanceOf(<Instance>,<Class>)           ;
  143. ; Example: if ($IsInstanceOf(%Player,Player)) ..     ;
  144. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  145. alias IsInstanceOf return $findtok($hget($1,INIT),$2,0,32)
  146.  
  147.  
  148. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  149. ; Description: Returns whether or not an instance    ;
  150. ; exists in memory                                   ;
  151. ;                                                    ;
  152. ; Usage: $IsInstance(<Instance>)                     ;
  153. ; Example: if (!$IsInstance(%x)) %x = $Player        ;
  154. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  155. alias IsInstance { return $token($hget($1,INIT),1,32) }
  156.  
  157. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  158. ; Description: Called when ever an error is caught   ;
  159. ;                                                    ;
  160. ; Usage: $catch(<Instance>,<Error>,<Message>)        ;
  161. ; Example: if (!$IsInstanceOf(%Player,Player)) {     ;
  162. ; $catch(%Player,InstanceErr,Object %player is not   ;
  163. ;  an instance of class Player)                      ;
  164. ; }                                                  ;
  165. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  166. alias Catch {
  167.   var %error $2,%message $3,%instance $1
  168.   + Caught $qt(%error) exception: %message
  169.   if %instance {
  170.     var %x 1
  171.     while $token($hget($1,INIT),%x,32) {
  172.       var %y $+($v1,.Exception.,%error)
  173.       if $isalias(%y) {
  174.         return $($+($,%y,$chr(40),%instance,$chr(44),%message,$chr(41),$chr(32),),2)
  175.       }
  176.       inc %x
  177.     }
  178.   }
  179. }
  180. ;;;;;;;;;;;;;
  181. ; End Catch ;
  182. ;;;;;;;;;;;;;
  183.  
  184. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  185. ; Description: Used to call the first found method   ;
  186. ; associated with an objects inheritance tree...     ;
  187. ;                                                    ;
  188. ; Usage: $Object(<Instance>,..).<Method>             ;
  189. ; Example: $Object(%stack,$2).add                    ;
  190. ; Equivelent: $List(%stack,$2).add                   ;
  191. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  192. alias Object {
  193.   var %x 1,%y $hget($1,INIT),%a ,,
  194.   while $token(%y,%x,32) {
  195.     var %z $v1
  196.     if $isalias(%z $+ . $+ $prop $+ .Public) {
  197.       return $($ $+ %z $+ $chr(40) $+ $1 %a $2 %a $3 %a $4 %a $5 %a $6 %a $7 %a $8 %a $9 %a $+ $chr(41) $+ . $+ $prop,2)
  198.     }
  199.     inc %x
  200.   }
  201.   return $catch($1,MemberErr,$prop is not a public member of $isinstance($1))
  202. }
  203. ;;;;;;;;;;;;;;
  204. ; End Object ;
  205. ;;;;;;;;;;;;;;
  206.  
  207. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  208. ; Description: Exports and object to the hard-drive  ;
  209. ; to later be loaded with $ImportObject()            ;
  210. ;                                                    ;
  211. ; Usage: $ExportObject(<Instance>)                   ;
  212. ; Example: - $ExportObject(%instance)                ;
  213. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  214. alias ExportObject {
  215.   var %x $hget($1,INIT),%y 1
  216.   while $token(%x,%y,32) {
  217.     var %z $v1 $+ .EXPORT
  218.     if $isalias(%z) {
  219.       %z $1
  220.     }
  221.     inc %y
  222.   }
  223.   if %x { return 1 }
  224. }
  225.  
  226. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  227. ; Description: Imports an exported object into memory     ;
  228. ; and returns whether or not the operation has completed  ;
  229. ; successfully                                            ;
  230. ;                                                         ;
  231. ; Usage: $ImportObject(%StoredHandleToExportedObj)        ;
  232. ; Example: var %imported $ImportObject(%handle)           ;
  233. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  234. alias ImportObject {
  235.   var %x $Class.Import($1)
  236.   var %y $numtok(%x,32) - 1
  237.   if %x {
  238.     while %y  {
  239.       var %z $token(%x,%y,32) $+ .IMPORT
  240.       if $isalias(%z) {
  241.         %z $1
  242.       }
  243.       dec %y
  244.     }
  245.     return $token(%x,1,32)
  246.   }
  247.   $Catch(0,ImportErr,Failed to import object $qt($1))
  248. }
  249.  
  250. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  251. ; Description: Exports and object to the hard-drive  ;
  252. ; to later be loaded with $ImportObject()            ;
  253. ;                                                    ;
  254. ; Usage: $CopyObject(<Instance>)                     ;
  255. ; Example: var %newInstance $CopyObject(%instance)   ;
  256. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  257. alias CopyObject {
  258.   var %a $Class.Copy($1)
  259.   var %x $hget(%a,INIT)
  260.   var %y $numtok(%x,32) - 1
  261.   if %a {
  262.     while %y {
  263.       var %z $token(%x,%y,32) $+ .COPY
  264.       if $isalias(%z) {
  265.         %z $1
  266.       }
  267.       dec %y
  268.     }
  269.     return %a
  270.   }
  271.   return $Catch(0,CopyErr,Failed to copy object $qt($1))
  272. }
  273.  
  274. alias - { !noop $1- }
  275. alias + { $iif($Window(@Debug),echo @Debug,!noop) $1- }
  276.  
  277. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  278. ; Description: This class can be used as a dynamically sized      ;
  279. ; List to store any data type                                     ;
  280. ;                                                                 ;
  281. ; Usage: $List(<ListPtr>,<Params>,...).<Member>                   ;
  282. ; Example: var %x = $List                                         ;
  283. ; Example: var %itemID = $List(%x,$long(500)).add                 ;
  284. ; Example: $List(%x,%itemID,$long(499)).set                       ;
  285. ; Example: $List(%x,%ItemID).remdel                               ;
  286. ; Example: $List(%x).delete                                       ;
  287. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  288. ;;;;;;;;;;;;;;;;;;;;;;;
  289. ; Public Declarations ;
  290. ;;;;;;;;;;;;;;;;;;;;;;;
  291. alias List.DELETE.Public
  292. alias List.Add.PUBLIC
  293. alias List.Remove.PUBLIC
  294. alias List.Get.PUBLIC
  295. alias List.Count.PUBLIC
  296. alias List.Set.PUBLIC
  297. alias List.Remdel.PUBLIC
  298.  
  299. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  300. ; Exception Declarations ;
  301. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  302.  
  303. ;;;;;;;;;;;;;;
  304. ; List Alias ;
  305. ;;;;;;;;;;;;;;
  306. alias List {
  307.   if (!$prop) goto init
  308.   if ($IsPublic(List,$prop)) goto $prop
  309.   return $catch($1,MemberErr, $qt($prop) is not a public member of List)
  310.   :init
  311.   return $List.INIT($1)
  312.   :delete
  313.   return $List.DELETE($1,$2)
  314.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  315.   ; Put your own method handlers here ;
  316.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  317.   :MethodHandler
  318.   :add
  319.   return $List.Add($1,$2)
  320.   :Remdel
  321.   :Remove
  322.   return $List.Remove($1,$2)
  323.   :get
  324.   return $List.Get($1,$2)
  325.   :count
  326.   return $hget($1,COUNT)
  327.   :set
  328.   return $List.Set($1,$2,$3)
  329. }
  330.  
  331. ;;;;;;;;;;;;;;;;
  332. ; List Methods ;
  333. ;;;;;;;;;;;;;;;;
  334. alias List.INIT {
  335.   var %instance $Class
  336.   $inheritsFrom(%instance,List)
  337.   ;;;;;;;;;;;;;;;;;;;;;;;;
  338.   ; Do Initializing here ;
  339.   ;;;;;;;;;;;;;;;;;;;;;;;;
  340.   return %instance
  341. }
  342. alias List.REMOVE {
  343.   if $2 !isnum 1- $+ $hget($1,COUNT) { return $catch($1,RangeErr,$qt($2) is not a valid list index for object $qt($1)) }
  344.   hdec $1 COUNT
  345.   - $Class($1,ITEMS,&items).getb
  346.   var %x $calc(1 + (($2 - 1) * 32)),%y %x + 32,%z $bvar(&items,%x,32).text
  347.   if %y > $bvar(&items,0) { dec %y }
  348.   var %var $bvar(&items,%x,32).text
  349.   bcopy -c &items %x &items %y -1
  350.   - $Class($1,%var).remv
  351.   - $Class($1,ITEMS,&items).setb
  352. }
  353. alias List.ADD {
  354.   hinc $1 COUNT
  355.   hinc $1 TOTAL
  356.   var %x $md5($hget($1,TOTAL))
  357.   - $Class($1,ITEMS,&items).getb
  358.   bset -t &items $calc(1 + (($hget($1,COUNT) - 1) * 32)) %x
  359.   - $Class($1,ITEMS,&items).setb
  360.   - $iif($bvar($2,0),$Class($1,%x,$2).setb,$Class($1,%x,$2).setv)
  361.   return $hget($1,Count)
  362. }
  363. alias List.GET {
  364.   if $2 !isnum 0- $+ $hget($1,COUNT) { return $catch($1,RangeErr,$qt($2) is not a valid list index for object $qt($1) $chr(40) $+ Valid Ranges: 1- $+ $hget($1,COUNT) $+ $chr(41)) }
  365.   $iif($2 == 0,return $hget($1,COUNT))
  366.   - $hget($1,ITEMS,&items)
  367.   var %var2 $bvar(&items,$calc(1 + (($2 - 1) * 32)),32).text
  368.   return $hget($1,%var2)
  369. }
  370. alias List.SET {
  371.   var %z $bvar(&items,$calc(1 + (($2 - 1) * 32)),32).text
  372.   var %x $Class($1,%z).getv
  373.   if $IsInstance(%x) { noop $Object(%x).delete }
  374.   - $Class($1,%z,$3).setv
  375. }
  376. alias List.IMPORT {
  377.   var %x $List($1).count
  378.   while %x {
  379.     if $ImportObject($List($1,%x).get) {
  380.       + Loaded object $qt($List($1,%x).get) of type $qt($IsInstance($List($1,%x).get))
  381.     }
  382.     dec %x
  383.   }
  384.   if $exists($+(object/,$1.bvr)) {
  385.     bread $+(object/,$1.bvr) 1 $file($+(object/,$1.bvr)).size &data
  386.     - $Class($1,ITEMS,&data).setb
  387.   }
  388. }
  389.  
  390. alias List.EXPORT {
  391.   var %x $List($1).count
  392.   while %x {
  393.     var %y $List($1,%x).get
  394.     if $IsInstance(%y) {
  395.       - $ExportObject(%y)
  396.       + Saved object $qt($List($1,%x).get)
  397.     }
  398.     dec %x
  399.   }
  400.   - $Class($1,ITEMS,&data).getb
  401.   if $exists($+(object/,$1.bvr)) {
  402.     .remove $+(object/,$1.bvr)
  403.   }
  404.   bwrite $+(object/,$1.bvr) 1 -1 &data
  405. }
  406. alias List.DELETE {
  407.   ;;;;;;;;;;;;;;;;;;;;;;
  408.   ; Do Destroying here ;
  409.   ;;;;;;;;;;;;;;;;;;;;;;
  410.   - $Class($1,ITEMS).remv
  411.   - $Class($1,TOTAL).remv
  412.   - $Class($1,COUNT).remv
  413.   if $2 {
  414.     while $hget($1,1).item {
  415.       var %y $v1
  416.       var %x $hget($1,%y)
  417.       if $IsInstance(%x) {
  418.         - $Object(%x).delete
  419.         + Removed object: $qt(%x) from list $qt($1)
  420.       }
  421.       - $Class($1,%y).remv
  422.     }
  423.   }
  424.   return $Class($1).DELETE
  425. }
  426. ;;;;;;;;;;;;
  427. ; End List ;
  428. ;;;;;;;;;;;;
  429.  
  430. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  431. ; Description: This is a Socket class which contains   ;
  432. ; the basic structure of a class                       ;
  433. ; Usage: $Socket(<Instance>,<Params>,..).<Method>      ;
  434. ; Example: var %x $Socket(127.0.0.1,1337,LocalSock)    ;
  435. ; Example: $Socket(%x,SockOpenAlias).sockopen          ;
  436. ; Example: $Socket(%x,SockReadAlias).sockread          ;
  437. ; Example: $Socket(%x).connect                         ;
  438. ; Example: $Socket(%x).close                           ;
  439. ; Example: $Socket(%x).delete                          ;
  440. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  441. ; Public Declarations ;
  442. ;;;;;;;;;;;;;;;;;;;;;;;
  443. alias Socket.DELETE.Public
  444. alias Socket.PORT.Public
  445. alias Socket.IP.Public
  446. alias Socket.OPEN.Public
  447. alias Socket.CONNECT.Public
  448. alias Socket.LISTEN.Public
  449. alias Socket.CLOSE.Public
  450. alias Socket.SOCKREAD.Public
  451. alias Socket.SOCKOPEN.Public
  452. alias Socket.SOCKCLOSE.Public
  453. alias Socket.SOCKACCEPT.Public
  454. alias Socket.TAG.Public
  455. alias Socket.SETTAG.Public
  456. alias Socket.SETIP.Public
  457. alias Socket.SETPORT.Public
  458. alias Socket.WRITE.Public
  459. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  460. ; Exception Declarations ;
  461. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  462. alias Socket.EXCEPTION.SockErr {
  463.   $Class($1,SockErr).getv $1-
  464.   return $iif($bvar(&SockErr,0),$bvar(&SockErr,1-).text)
  465. }
  466. ;;;;;;;;;;;;;;;;
  467. ; Socket Alias ;
  468. ;;;;;;;;;;;;;;;;
  469. alias Socket {
  470.   if (!$prop) goto init
  471.   if ($IsPublic(Socket,$prop)) goto $prop
  472.   return $catch($1,MemberErr, $qt($prop) is not a public member of Socket)
  473.   :init
  474.   return $Socket.INIT($1,$2,$3)
  475.   :delete
  476.   return $Socket.DELETE($1)
  477.   :open
  478.   :connect
  479.   if ($sock($1).status) $catch($1,SockOpenErr,Socket $1 is already open)
  480.   sockopen $1 $Class($1,IP).getv $Class($1,PORT).getv
  481.   return
  482.   :close
  483.   if ($sock($1).status) sockclose $1
  484.   else return $catch($1,SockCloseErr,Sock $1 was not open)
  485.   return
  486.   :listen
  487.   if ($sock($1).status) $catch($1,SockOpenErr,Socket $1 is already open)
  488.   var %x $iif($Class($1,IP).getv,$v1,127.0.0.1),%y $iif(%x != $null,-d)
  489.   socklisten %y %x $1 $Class($1,PORT).getv
  490.   ;socklisten $1 $Class($1,PORT).getv
  491.   return
  492.   :sockclose
  493.   return $Class($1,CLOSE,$2).setv
  494.   :sockopen
  495.   return $Class($1,OPEN,$2).setv
  496.   :sockaccept
  497.   return $Class($1,ACCEPT,$2).setv
  498.   :sockread
  499.   return $Class($1,READ,$2).setv
  500.   :settag
  501.   $Class($1,Tag,$2).setv
  502.   :tag
  503.   return $Class($1,Tag).getv
  504.   :setip
  505.   return $Class($1,IP,$2).setv
  506.   :setport
  507.   return $Class($1,PORT,$2).setv
  508.   :ip
  509.   return $Class($1,IP).getv
  510.   :port
  511.   return $Class($1,PORT).getv
  512.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  513.   ; Put your own method handlers here ;
  514.   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  515.   :write
  516.   if ($sock($1).status != active) return $catch($1,SockErr,Socket $1 is not connected)
  517.   sockwrite $1 $2
  518.   return
  519.   :MethodHandler
  520. }
  521.  
  522. ;;;;;;;;;;;;;;;;;;
  523. ; Socket Methods ;
  524. ;;;;;;;;;;;;;;;;;;
  525. alias Socket.INIT {
  526.   var %instance $Class
  527.   $inheritsFrom(%instance,Socket)
  528.   $Class(%instance,IP,$1).setv
  529.   $Class(%instance,PORT,$2).setv
  530.   $Class(%instance,OPEN,Socket.DefaultSockOpen).setv
  531.   $Class(%instance,CLOSE,Socket.DefaultSockClose).setv
  532.   $Class(%instance,ACCEPT,Socket.DefaultSockAccept).setv
  533.   $Class(%instance,READ,Socket.DefaultSockRead).setv
  534.   $Class(%instance,SockErr,Socket.DefaultSockErr).setv
  535.   $Class(%instance,Tag,$iif($isinstance($3),$3,$3)).setv
  536.   ;;;;;;;;;;;;;;;;;;;;;;;;
  537.   ; Do Initializing here ;
  538.   ;;;;;;;;;;;;;;;;;;;;;;;;
  539.   return %instance
  540. }
  541. alias Socket.DELETE {
  542.   ;;;;;;;;;;;;;;;;;;;;;;
  543.   ; Do Destroying here ;
  544.   ;;;;;;;;;;;;;;;;;;;;;;
  545.   if ($sock($1).status) sockclose $1
  546.   return $Class($1).DELETE
  547. }
  548. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  549. ; Default Event Handlers ;
  550. ;;;;;;;;;;;;;;;;;;;;;;;;;;
  551. alias Socket.DefaultSockOpen {
  552.   + @Debug Successfully $iif($sock($sockname).status != Active,dis) $+ connected to $sock($sockname).ip $+ : $+ $sock($sockname).port
  553. }
  554. alias Socket.DefaultSockClose {
  555.   + Successfully disconnected from $sock($sockname).ip $+ : $+ $sock($sockname).port
  556.   $Socket($1).delete
  557. }
  558. alias Socket.DefaultSockRead {
  559.   sockread -f %temp
  560.   + Received data on socket: $1: %temp
  561. }
  562. alias Socket.DefaultSockAcceptW {
  563.   var %x $sockname $+ 
  564.   sockaccept %x
  565.   var %a $socket($sock(%x).ip,$sock(%x).port)
  566.   sockrename %x %a $+ 
  567.   $Class($left($sockname,-1),ACCEPT).getv $left($sockname,-1) %a
  568. }
  569. alias Socket.DefaultSockAccept {
  570.   var %socklistn $1
  571.   var %socknew $2
  572.   + Socket accepted from  $+ $socket($2).ip $+  on port  $+ $socket($2).port $+ : Handle = $2
  573. }
  574. alias Socket.DefaultSockErr {
  575.   sockclose $1
  576. }
  577. alias SockErr {
  578.   bset -t &SockErr $1-
  579. }
  580. ;;;;;;;;;;;;;;;;;;;;
  581. ; Trigger Handlers ;
  582. ;;;;;;;;;;;;;;;;;;;;
  583. on 1:sockopen:*: $Class($left($sockname,-1),OPEN).getv $left($sockname,-1)
  584. on 1:sockclose:*: $Class($left($sockname,-1),CLOSE).getv $left($sockname,-1)
  585. on 1:sockread:*: $Class($left($sockname,-1),READ).getv $left($sockname,-1)
  586. on 1:socklisten:*: Socket.DefaultSockAcceptW
  587. ;;;;;;;;;;;;;;
  588. ; End Socket ;
  589. ;;;;;;;;;;;;;;
  590.  
  591. alias ListTest {
  592.   var %k echo @Debug2
  593.   if !$window(@Debug) { window -e @Debug }
  594.   if !$window(@Debug2) { window -e @Debug2 }
  595.   clear @Debug2
  596.   var %x 100
  597.   var %list $List
  598.   %k Adding 100 items to list $qt(%list)
  599.   while %x {
  600.     var %obj $Class
  601.     - $Class(%obj,VAR,This is a fucking test: %x).setv
  602.     - $list(%list,%obj).add
  603.     dec %x
  604.   }
  605.   var %x 1
  606.   %k List count: $List(%list).count - Listing Items
  607.   while $List(%list,%x).get {
  608.     var %y $v1
  609.     %k Class(List(%list, $+ %x $+ ),VAR).getv = $Class(%y,VAR).getv - Count: $List(%list).count
  610.     inc %x
  611.   }
  612.   var %x $CopyObject(%list)
  613.   if %x {
  614.     %k Copied object $qt(%list) to $qt(%x) - Count: $list(%x).count
  615.     - $List(%x).delete
  616.   }
  617.   %k Exporting Object: %list
  618.   %k $iif($ExportObject(%list),Successfully exported,Failed to export) object $qt(%list)
  619.   - $List(%list,1).delete
  620.  
  621.   %k $iif($IsInstance(%list),Failed to delete,Successfully deleted) object $qt(%list)
  622.   %k $iif($ImportObject(%list),Successfully imported,Failed to import) object $qt(%list)
  623.   var %x 1
  624.   %k List count: $List(%list).count - Listing Items...
  625.   while $List(%list,%x).get {
  626.     var %y $v1
  627.     %k $!Class($List(%list, $+ %x $+ ),VAR).getv = $Class(%y,VAR).getv - Count: $List(%list).count
  628.     inc %x
  629.   }
  630.   %k Deleting List..
  631.   - $List(%list,1).delete
  632.   %k $iif($IsInstance(%list),Failed to delete,Successfully deleted) Object: %list
  633.   %k Finished list test. Handle: %list $+($chr(40),$iif($IsInstance(%list),True,False),$chr(41))
  634. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement