Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: This is the base class, which every ;
- ; class inherits from... ;
- ; ;
- ; Usage: $Class(<uID>,<Params>,...).<Member> ;
- ; Example: var %x $Class ;
- ; Example: $Class.Delete(%x) ;
- ; Example: $Class(%x,Name,Some Text).setv ;
- ; Example: $Class(%x,Name).getv ;
- ; Example: $Class(%x,Name).removev ;
- ; Example: $Class.Delete(%x) ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;
- ; Triggers ;
- ;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; START ;
- ; ;
- ; Make sure all of the objects from the- ;
- ; previous instance of MIRC get loaded ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- on 1:start: {
- if (!$window(@DEBUG)) window -e @DEBUG
- var %objectsFile object/ $+ Objects.main
- if ($exists(%objectsFile)) {
- hmake Objects
- .hload -b Objects %objectsFile
- var %numberOfItems $hget(Objects, 0).item
- var %x 1
- while (%x <= %numberOfItems) {
- var %currentObject $hget(Objects, %x).item
- if ($right(%currentObject,5) == .INIT) {
- var %object $left(%currentObject,-5)
- if ($exists(object/Object. $+ %object $+ .obj)) {
- + $Object(%object).IMPORT
- }
- }
- inc %x
- }
- }
- .timerOOP 0 1 .ExportAllObjects
- }
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; EXIT ;
- ; ;
- ; Make sure all of the objects from memory ;
- ; get exported before mIRC closes ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- on 1:exit: {
- .ExportAllObjects
- }
- alias ExportAllObjects {
- if !$exists(object/) { mkdir object }
- if ($hget(Objects)) {
- .hsave -b Objects $+(object/,Objects $+ .main)
- var %numberOfItems $hget(Objects, 0).item
- var %x 1
- while (%x <= %numberOfItems) {
- var %currentObject $hget(Objects,%x).item
- if ($right(%currentObject,5) == .INIT) {
- var %object $hget(Object. $+ $left(%currentObject,-5))
- if (%object != $null) {
- var %object $right(%object,-7)
- - $Object(%object).EXPORT
- }
- }
- inc %x
- }
- }
- }
- ;;;;;;;;;;;;;;;;
- ; END TRIGGERS ;
- ;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;
- ; Public Declarations ;
- ;;;;;;;;;;;;;;;;;;;;;;;
- alias Class.DELETE.Public
- alias Class.GETV.Public
- alias Class.SETV.Public
- alias Class.REMV.Public
- alias Class.GETB.Public
- alias Class.SETB.Public
- alias Class.REMB.Public
- alias Class.EXPORT.Public
- alias Class.IMPORT.Public
- alias Class.CLONE.Public
- ;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Exception Declarations ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias Class.EXCEPTION.Null {
- var %object $1, %error $2, %message $5, %scriptLine $3, %scriptDir $4
- return Exception Caught on line $+($chr(40),%scriptLine,:,%scriptDir,$chr(41))from Object ( $+ %object $+ : $+ $IsInstance(%object) $+ ): %error $+ - %message
- }
- alias Class.EXCEPTION.MemberErr {
- var %object $1, %error $2, %message $5, %scriptLine $3, %scriptDir $4
- return Exception Caught on line $+($chr(40),%scriptLine,:,%scriptDir,$chr(41))from Object ( $+ %object $+ : $+ $IsInstance(%object) $+ ): %error $+ - %message
- }
- alias Class.EXCEPTION.ParamErr {
- var %object $1, %error $2, %message $5, %scriptLine $3, %scriptDir $4
- return Exception Caught on line $+($chr(40),%scriptLine,:,%scriptDir,$chr(41))from Object ( $+ %object $+ : $+ $IsInstance(%object) $+ ): %error $+ - %message
- }
- ;;;;;;;;;;;;;;;
- ; Class Alias ;
- ;;;;;;;;;;;;;;;
- alias Class {
- var %class Class
- if (!$prop) {
- if ($IsPrivate(%class,INIT)) {
- var %object $($+($,%class,.INIT,$chr(40),%object,$chr(44),$left($regsubex($str(.,$0),/(.)/g,$\n $+ $chr(44)),-1),$chr(41)),2)
- - $inheritsFrom(%object,%class)
- return %object
- }
- }
- if ($IsPublic(%class,$prop)) {
- return $($+($,%class,.,$prop,$chr(40),$left($regsubex($str(.,$0),/(.)/g,$\n $+ $chr(44)),-1),$chr(41)),2)
- }
- return $catch(0,MemberErr, $scriptline, $token($script,-1,92), $qt($prop) is not a public member of %Class)
- }
- ;;;;;;;;;;;;;;;;;
- ; Class Methods ;
- ;;;;;;;;;;;;;;;;;
- alias Class.INIT {
- hinc -m Objects ClassObjects
- var %object $hget(Objects,ClassObjects)
- hadd -m Objects $+(%object,.INIT)
- return %object
- }
- alias Class.SETV {
- var %object $1
- if ($isInstance($1)) {
- hadd $iif($4,-mb,-m) Object. $+ $1 $2 $$3
- return $3
- }
- return
- }
- alias Class.GETV {
- return $iif($3,$hget(Object. $+ $1,$$2,$3),$hget(Object. $+ $1,$$2))
- }
- alias Class.REMV {
- var %x $Class(%object, $$2).GetV
- hdel Object. $+ $1 $2
- if $3 {
- $Object(%x).delete
- }
- }
- alias Class.GETB {
- if $3 { return $Class($1,$2,$3).GETV }
- else { return $Catch($1,ParamErr,$scriptline, $token($script,-1,92),You have specified insufficent parameters) }
- }
- alias Class.SETB {
- if $bvar($3,0) { return $Class($1,$2,$3,1).SetV }
- else { $catch($1,ParamErr, $scriptline, $token($script,-1,92), You have specified insufficent parameters) }
- }
- alias Class.REMB {
- return $Class($1,$2,$3).REMV
- }
- alias Class.DELETE {
- ;;;;;;;;;;;;;;;;;;;;;;
- ; Do Destroying here ;
- ;;;;;;;;;;;;;;;;;;;;;;
- var %x 1
- if ($2) {
- while $hget(Object. $+ $1,%x).data {
- var %y $v1
- if $isinstance(%y) { $Object(%y).delete }
- inc %x
- }
- }
- - Deleting: Object ( $+ $1 $+ ): Object. $+ $1 INIT: $1.INIT
- if $hget(Objects, $1.INIT) { hfree Object. $+ $1 }
- hdel Objects $1.INIT
- return
- }
- ;;;;;;;;;;;;;;;;;
- ; Class Methods ;
- ;;;;;;;;;;;;;;;;;
- alias Class.IMPORT {
- var %objectName Object. $+ $1
- if !$exists(object/) { mkdir object }
- if $hget(%objectName) { return }
- hmake %objectName
- hload -b %objectName $+(object/,%objectName $+ .obj)
- if $hget(%objectName) { return $v1 }
- return
- }
- alias Class.EXPORT {
- var %objectName Object. $+ $1
- if !$exists(object/) { mkdir object }
- hsave -b %objectName $+(object/,%objectName $+ .obj)
- return
- }
- alias Class.CLONE {
- var %objectName Object. $+ $1
- if !$exists(object/) { mkdir object }
- if $IsInstance($1) {
- var %x $Class
- hsave -b %objectName $+(object/,%objectName $+ .cpy)
- hload -b %x $+(object/,%objectName $+ .cpy)
- .remove $+(object/,%objectName $+ .cpy)
- return %x
- }
- return
- }
- ;;;;;;;;;;;;;
- ; End Class ;
- ;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Returns whether or not a class member ;
- ; is public. ;
- ; ;
- ; Usage: $IsPublic(<Class>,<Member>) ;
- ; Example: if ($IsInstanceOf(%Player,Player)) .. ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias IsPublic return $isalias($+($1.,$2.,Public))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Returns whether or not a class member ;
- ; is private. ;
- ; ;
- ; Usage: $IsPrivate(<Class>,<Member>) ;
- ; Example: if ($IsInstanceOf(%Player,Player)) .. ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias IsPrivate return $isalias($+($1.,$2))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Called from the class constructor to ;
- ; let the object know that the specified object ;
- ; inherits from the specified class ;
- ; ;
- ; Usage: $InheritsFrom(<Object>,<Class>) ;
- ; Example: $InheritsFrom(%instance,Player) ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias InheritsFrom hadd -m Objects $+($1.,INIT) $2 $hget(Objects,$+($1.,INIT))
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Returns whether or not an instance is ;
- ; an instance of the specified class ;
- ; ;
- ; Usage: $IsInstanceOf(<Instance>,<Class>) ;
- ; Example: if ($IsInstanceOf(%Player,Player)) .. ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias IsInstanceOf return $findtok($hget(Objects,$1.INIT),$2,0,32)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Returns whether or not an instance ;
- ; exists in memory ;
- ; ;
- ; Usage: $IsInstance(<Instance>) ;
- ; Example: if (!$IsInstance(%x)) %x = $Player ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias IsInstance return $token($hget(Objects, $1.INIT),$iif($2 != $null,$2,1),32)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Called when ever an error is caught ;
- ; ;
- ; Usage: $catch(<Instance>,<Error>,<Message>) ;
- ; Example: if (!$IsInstanceOf(%Player,Player)) { ;
- ; $catch(%Player,InstanceErr,Object %player is not ;
- ; an instance of class Player) ;
- ; } ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias Catch {
- var %error $2,%message $5,%instance $1,%scriptLine $3, %scriptDir $4
- if %instance {
- var %x 1
- while $token($hget(Objects,$+(%instance,.INIT)),%x,32) {
- var %y $+($v1,.Exception.,%error)
- if $isalias(%y) {
- return $($+($,%y,$chr(40),%instance,$chr(44),%error,$chr(44),%scriptLine,$chr(44),%scriptDir,$chr(44),%message,$chr(41)),2)
- }
- inc %x
- }
- }
- }
- ;;;;;;;;;;;;;
- ; End Catch ;
- ;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Used to call the first found method ;
- ; associated with an objects inheritance tree... ;
- ; ;
- ; Usage: $Object(<Instance>,..).<Method> ;
- ; Example: $Object(%stack,$2).add ;
- ; Equivelent: $List(%stack,$2).add ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias Object {
- var %x 1,%y $hget(Objects,$1.INIT)
- while $token(%y,%x,32) {
- var %z $v1
- if $isalias(%z $+ . $+ $prop $+ .Public) {
- return $($+($,%z,( $regsubex($mid($str($chr(44),$0),2),//g,$\n) ).,$prop),2)
- }
- inc %x
- }
- return $catch($1,MemberErr,$scriptline, $token($script,-1,92),$prop is not a public member of $isinstance($1))
- }
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Exports and object to the hard-drive ;
- ; to later be loaded with $ImportObject() ;
- ; ;
- ; Usage: $ExportObject(<Instance>) ;
- ; Example: - $ExportObject(%instance) ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias ExportObject {
- var %x $hget($1,INIT),%y 1
- while $token(%x,%y,32) {
- var %z $v1 $+ .EXPORT
- if $isalias(%z) {
- %z $1
- }
- inc %y
- }
- if %x { return 1 }
- }
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Imports an exported object into memory ;
- ; and returns whether or not the operation has completed ;
- ; successfully ;
- ; ;
- ; Usage: $ImportObject(%StoredHandleToExportedObj) ;
- ; Example: var %imported $ImportObject(%handle) ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias ImportObject {
- var %x $Class.Import($1)
- var %y $numtok(%x,32) - 1
- if %x {
- while %y {
- var %z $token(%x,%y,32) $+ .IMPORT
- if $isalias(%z) {
- %z $1
- }
- dec %y
- }
- return $token(%x,1,32)
- }
- $Catch(0,ImportErr,$scriptline, $token($script,-1,92),Failed to import object $qt($1))
- }
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Description: Exports and object to the hard-drive ;
- ; to later be loaded with $ImportObject() ;
- ; ;
- ; Usage: $CopyObject(<Instance>) ;
- ; Example: var %newInstance $CopyObject(%instance) ;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- alias CopyObject {
- var %a $Class.Copy($1)
- var %x $hget(%a,INIT)
- var %y $numtok(%x,32) - 1
- if %a {
- while %y {
- var %z $token(%x,%y,32) $+ .COPY
- if $isalias(%z) {
- %z $1
- }
- dec %y
- }
- return %a
- }
- $Catch(0,CopyErr,$scriptline, $token($script,-1,92),Failed to copy object $qt($1))
- }
- ;;;;;;;;;;;;;;
- ; End Object ;
- ;;;;;;;;;;;;;;
- alias - { !noop $1- }
- alias + { $iif($Window(@Debug),echo @Debug,!noop) $iif($1-,$v1,$crlf) }
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement