; docformat = 'rst' ;+ ; Represents a file. ;- ;+ ; Get properties. ;- pro mgfffile::getProperty, filename=filename, exists=exists, read=read, write=write, $ execute=execute, regular=regular, $ directory=directory, block_special=blockSpecial, $ character_special=characterSpecial, $ named_pipe=namedPipe, $ setgid=setgid, setuid=setuid, $ socket=socket, sticky_bit=stickyBit, $ symlink=symlink, dangling_symlink=danglingSymlink, $ atime=atime, ctime=ctime, mtime=mtime, size=size compile_opt strictarr if (arg_present(filename)) then filename = self.filename if (arg_present(exists)) then exists = self.exists if (arg_present(read)) then read = self.read if (arg_present(write)) then write = self.write if (arg_present(execute)) then execute = self.execute if (arg_present(regular)) then regular = self.regular if (arg_present(directory)) then directory = self.directory if (arg_present(blockSpecial)) then blockSpecial = self.blockSpecial if (arg_present(characterSpecial)) then characterSpecial = self.characterSpecial if (arg_present(namedPipe)) then namedPipe = self.namedPipe if (arg_present(setgid)) then setgid = self.setgid if (arg_present(setuid)) then setuid = self.setuid if (arg_present(socket)) then socket = self.socket if (arg_present(stickyBit)) then stickyBit = self.stickyBit if (arg_present(symlink)) then symlink = self.symlink if (arg_present(danglingSymlink)) then danglingSymlink = self.danglingSymlink if (arg_present(atime)) then atime = self.atime if (arg_present(ctime)) then ctime = self.ctime if (arg_present(mtime)) then mtime = self.mtime if (arg_present(size)) then size = self.size end function mgfffile::readu, type=type, dimension=dimension compile_opt strictarr _type = n_elements(type) eq 0L ? 1L : type info = self->info() _dimension = n_elements(dimension) eq 0L $ ? info.size / mg_typesize(_type) $ : dimension data = make_array(dimension=_dimension, type=_type) openr, lun, self.filename, /get_lun readu, lun, data free_lun, lun return, data end function mgfffile::readf compile_opt strictarr nlines = file_lines(self.filename) result = strarr(nlines) openr, lun, self.filename, /get_lun readf, lun, result free_lun, lun return, result end ;+ ; Create a file object. ; ; :Returns: ; 1 if successful, 0 if failure ; ; :Params: ; filename : in, required, type=string ; filename of file ;- function mgfffile::init, filename compile_opt strictarr self.filename = filename struct_assign, file_info(self.filename), self, /nozero return, 1 end ;+ ; Define instance variables. ; ; :Fields: ; filename ; full filename ;- pro mgfffile__define compile_opt strictarr define = { MGffFile, inherits file_info, filename: '' } end