// --------------------------------------------------------------------------- // - Libsio.cpp - // - afnix:sio module - declaration & implementation - // --------------------------------------------------------------------------- // - This program is free software; you can redistribute it and/or modify - // - it provided that this copyright notice is kept intact. - // - - // - This program is distributed in the hope that it will be useful, but - // - without any warranty; without even the implied warranty of - // - merchantability or fitness for a particular purpose. In no event shall - // - the copyright holder be liable for any direct, indirect, incidental or - // - special damages arising in any way out of the use of this software. - // --------------------------------------------------------------------------- // - copyright (c) 1999-2007 amaury darsch - // --------------------------------------------------------------------------- #include "Meta.hpp" #include "Libsio.hpp" #include "Logtee.hpp" #include "Predsio.hpp" #include "SioCalls.hpp" #include "Pathname.hpp" #include "Selector.hpp" #include "Terminal.hpp" #include "Function.hpp" #include "Directory.hpp" #include "InputFile.hpp" #include "OutputFile.hpp" #include "InputMapped.hpp" #include "InputString.hpp" #include "OutputString.hpp" namespace afnix { // initialize the afnix:sio module Object* init_afnix_sio (Interp* interp, Vector* argv) { // make sure we are not called from something crazy if (interp == nilp) return nilp; // create the afnix:sio nameset Nameset* aset = interp->mknset ("afnix"); Nameset* nset = aset->mknset ("sio"); // bind all symbols in the afnix:sio nameset nset->symcst ("Logtee", new Meta (Logtee::mknew)); nset->symcst ("Pathname", new Meta (Pathname::mknew)); nset->symcst ("Selector", new Meta (Selector::mknew)); nset->symcst ("Terminal", new Meta (Terminal::mknew)); nset->symcst ("Directory", new Meta (Directory::mknew)); nset->symcst ("InputFile", new Meta (InputFile::mknew)); nset->symcst ("InputTerm", new Meta (InputTerm::mknew)); nset->symcst ("ErrorTerm", new Meta (OutputTerm::mkerr)); nset->symcst ("Transcoder", new Meta (Transcoder::mknew)); nset->symcst ("OutputFile", new Meta (OutputFile::mknew)); nset->symcst ("OutputTerm", new Meta (OutputTerm::mkout)); nset->symcst ("InputMapped", new Meta (InputMapped::mknew)); nset->symcst ("InputString", new Meta (InputString::mknew)); nset->symcst ("OutputString", new Meta (OutputString::mknew)); // bind the predicates nset->symcst ("dir-p", new Function (sio_dirp)); nset->symcst ("file-p", new Function (sio_filep)); nset->symcst ("input-p", new Function (sio_inputp)); nset->symcst ("stream-p", new Function (sio_strmp)); nset->symcst ("output-p", new Function (sio_outputp)); nset->symcst ("logtee-p", new Function (sio_logtp)); nset->symcst ("pathname-p", new Function (sio_pathp)); nset->symcst ("selector-p", new Function (sio_selectp)); nset->symcst ("terminal-p", new Function (sio_termp)); nset->symcst ("directory-p", new Function (sio_odirp)); nset->symcst ("input-file-p", new Function (sio_ifilep)); nset->symcst ("input-term-p", new Function (sio_itermp)); nset->symcst ("transcoder-p", new Function (sio_trscp)); nset->symcst ("output-file-p", new Function (sio_ofilep)); nset->symcst ("output-term-p", new Function (sio_otermp)); nset->symcst ("input-string-p", new Function (sio_inpstrp)); nset->symcst ("input-mapped-p", new Function (sio_inpmapp)); nset->symcst ("output-string-p", new Function (sio_outstrp)); // bind other functions nset->symcst ("mkdir", new Function (sio_mkdir)); nset->symcst ("mhdir", new Function (sio_mhdir)); nset->symcst ("rmdir", new Function (sio_rmdir)); nset->symcst ("rmfile", new Function (sio_rmfile)); nset->symcst ("tmp-name", new Function (sio_tmp_name)); nset->symcst ("tmp-path", new Function (sio_tmp_path)); nset->symcst ("get-base-name", new Function (sio_xname)); nset->symcst ("get-base-path", new Function (sio_xdir)); nset->symcst ("get-extension", new Function (sio_xext)); nset->symcst ("absolute-path", new Function (sio_abs_path)); nset->symcst ("relative-path", new Function (sio_rel_path)); nset->symcst ("remove-extension", new Function (sio_rmext)); // not used but needed return nilp; } } extern "C" { afnix::Object* dli_afnix_sio (afnix::Interp* interp, afnix::Vector* argv) { return init_afnix_sio (interp, argv); } }