Logo Search packages:      
Sourcecode: afnix version File versions

Object * afnix::Object::apply ( class Runnable robj,
class Nameset nset,
const long  quark,
class Vector argv 
) [virtual, inherited]

apply an object with a vector of arguments by quark

Parameters:
robj the current runnable
nset the current nameset
quark the quark to apply these arguments
argv the vector arguments to apply

Reimplemented in afnix::Argument, afnix::Closure, afnix::Enum, afnix::Interp, afnix::Lexical, afnix::Librarian, afnix::Qualified, afnix::Resolver, afnix::Symbol, afnix::Cipher, afnix::Hasher, afnix::InputCipher, afnix::Key, afnix::BitSet, afnix::Boolean, afnix::Buffer, afnix::Byte, afnix::Character, afnix::Condvar, afnix::Cons, afnix::Date, afnix::HashTable, afnix::Heap, afnix::Input, afnix::InputFile, afnix::InputMapped, afnix::InputOutput, afnix::InputString, afnix::InputTerm, afnix::Integer, afnix::Item, afnix::Iterable, afnix::Iterator, afnix::Library, afnix::List, afnix::Literal, afnix::Loader, afnix::Logger, afnix::Nameable, afnix::Options, afnix::Output, afnix::OutputFile, afnix::OutputString, afnix::OutputTerm, afnix::Plist, afnix::PrintTable, afnix::Property, afnix::Queue, afnix::Real, afnix::Regex, afnix::Relatif, afnix::Set, afnix::Stream, afnix::String, afnix::Terminal, afnix::Thread, afnix::Time, afnix::Transcoder, afnix::Vector, afnix::Edge, afnix::Graph, afnix::Vertex, afnix::Address, afnix::Datagram, afnix::Mail, afnix::Socket, afnix::TcpSocket, afnix::UdpSocket, afnix::Mime, afnix::Uri, afnix::UriQuery, afnix::Appointer, afnix::Assistant, afnix::Slot, afnix::Directory, afnix::Logtee, afnix::Selector, afnix::Cell, afnix::Folio, afnix::Recording, afnix::Sheeting, afnix::Index, afnix::Persist, afnix::Record, afnix::Sheet, afnix::Xref, afnix::Lexeme, afnix::Literate, afnix::Pattern, afnix::Scanner, afnix::XmlAttlist, afnix::XmlComment, afnix::XmlCref, afnix::XmlData, afnix::XmlDoctype, afnix::XmlDocument, afnix::XmlElement, afnix::XmlEnd, afnix::XmlEntity, afnix::XmlGe, afnix::XmlNode, afnix::XmlPe, afnix::XmlPi, afnix::XmlReader, afnix::XmlRef, afnix::XmlSection, afnix::XmlTag, afnix::XmlText, afnix::Cookie, afnix::HttpReply, afnix::Session, afnix::XhtmlHead, afnix::XhtmlHtml, afnix::XhtmlImg, afnix::XhtmlRoot, afnix::XhtmlTable, afnix::XhtmlTelem, and afnix::XhtmlTr.

Definition at line 343 of file Object.cpp.

References afnix::Object::clone(), afnix::Vector::get(), afnix::Object::issho(), afnix::Vector::length(), afnix::Runnable::post(), afnix::String::qmap(), afnix::Object::rdlock(), afnix::Object::repr(), afnix::Object::unlock(), afnix::Object::vdef(), and afnix::Object::wrlock().

                                 {
    long argc = (argv == nilp) ? 0 : argv->length ();

    // dispatch 0 arguments
    if (argc == 0) {
      if (quark == QUARK_REPR)   return new String  (repr ());
      if (quark == QUARK_SHARED) return new Boolean (issho ());
      if (quark == QUARK_RDLOCK) {
      rdlock ();
      robj->post (this);
      return this;
      }
      if (quark == QUARK_WRLOCK) {
      wrlock ();
      robj->post (this);
      return this;
      }
      if (quark == QUARK_UNLOCK) {
      unlock ();
      robj->post (this);
      return this;
      }
      if (quark == QUARK_CLONE) {
      Object* result = clone ();
      robj->post (result);
      return result;
      }
    }

    // dispatch 1 argument
    if ((argc == 1) && (quark == QUARK_EQUL)) {
      Object* obj = argv->get (0);
      return this->vdef (robj, nset, obj);
    }

    // no way - error
    String mesg = "invalid call to apply with name ";
    mesg = mesg + String::qmap (quark);
    mesg = mesg + " from object type";
    throw Exception ("apply-error", mesg, repr ());
  }


Generated by  Doxygen 1.6.0   Back to index