// ---------------------------------------------------------------------------
// - 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);
}
}
syntax highlighted by Code2HTML, v. 0.9.1