(include "sci.sh")
(use "Obj")
(script 993)



(class File of Obj
    (properties
        handle 0
    )

    (method (dispose)
        (self:close())
        (super:dispose())
    )


    (method (showStr param1)
        Format(param1 "File: %s" name)
    )


    (method (open param1)
        = handle 
            (switch (paramTotal)
                (case 0
                    (FileIO(0 name 0)  )
                )
                (case 1
                    (FileIO(0 name param1)  )
                )
                (default 
                    (0 )
                )
            )
        (if (== handle -1)
            = handle 0
        )
        return 
            (if (handle)
                self
            )(else
                0
            )
    )


    (method (readString param1 param2)
        (if (<> paramTotal 2)
            return 0
        )
        (if (not handle)
            (self:open(1))
        )
        return 
            (if (handle)
                FileIO(5 param1 param2 handle)
            )(else
                0
            )
    )


    (method (writeString param1)
        (var temp0)
        (if (not handle)
            (self:open())
        )
        (if (handle)
            = temp0 0
            (while (< temp0 paramTotal)
                (if (not FileIO(6 handle param1[temp0]))
                    return 0
                )
                ++temp0
            )
        )
        return 1
    )


    (method (write param1 param2)
        (var temp0)
        (if (not handle)
            (self:open())
        )
        return 
            (if (handle)
                FileIO(3 handle param1 param2)
            )(else
                0
            )
    )


    (method (read param1 param2)
        (if (<> paramTotal 2)
            return 0
        )
        (if (not handle)
            (self:open(1))
        )
        return 
            (if (handle)
                FileIO(2 handle param1 param2)
            )(else
                0
            )
    )


    (method (seek param1 param2)
        (var temp0)
        = temp0 
            (if (>= paramTotal 2)
                param2
            )(else
                0
            )
        (if (not handle)
            (self:open(1))
        )
        return 
            (if (handle)
                FileIO(7 handle param1 temp0)
            )(else
                0
            )
    )


    (method (close)
        (if (handle)
            FileIO(1 handle)
            = handle 0
        )
    )


    (method (delete)
        (if (handle)
            (self:close())
        )
        FileIO(4 name)
    )

)
