// ---------------------------------------------------------------------------
// - Predtxt.cpp -
// - afnix:txt module - predicates 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 "Aes.hpp"
#include "Md5.hpp"
#include "Sha1.hpp"
#include "Cons.hpp"
#include "Trie.hpp"
#include "Worder.hpp"
#include "Sha256.hpp"
#include "Sha384.hpp"
#include "Sha512.hpp"
#include "Hasher.hpp"
#include "Predtxt.hpp"
#include "Scanner.hpp"
#include "Boolean.hpp"
#include "Lexicon.hpp"
#include "Literate.hpp"
#include "Exception.hpp"
#include "InputCipher.hpp"
namespace afnix {
// this procedure checks that we have one argument only and returns
// the evaluated object
static inline Object* get_obj (Runnable* robj, Nameset* nset, Cons* args,
const String& pname) {
Object* car = nilp;
if ((args == nilp) || (args->length () != 1))
throw Exception ("argument-error", "illegal arguments with predicate",
pname);
car = args->getcar ();
return (car == nilp) ? nilp : car->eval (robj,nset);
}
// patp: pattern object predicate
Object* txt_patp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "pattern-p");
bool result = (dynamic_cast <Pattern*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// lexp: lexeme object predicate
Object* txt_lexp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "lexeme-p");
bool result = (dynamic_cast <Lexeme*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// tlitp: (trans)literate object predicate
Object* txt_tlitp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "literate-p");
bool result = (dynamic_cast <Literate*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// scanp: scanner object predicate
Object* txt_scanp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "scanner-p");
bool result = (dynamic_cast <Scanner*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// triep: trie object predicate
Object* txt_triep (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "trie-p");
bool result = (dynamic_cast <Trie*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// tlexp: lexicon object predicate
Object* txt_tlexp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "lexicon-p");
bool result = (dynamic_cast <Lexicon*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// wordp: worder object predicate
Object* txt_wordp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "worder-p");
bool result = (dynamic_cast <Worder*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// hashp: hasher object predicate
Object* txt_hashp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "digest-p");
bool result = (dynamic_cast <Hasher*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// keyp: key object predicate
Object* txt_keyp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "key-p");
bool result = (dynamic_cast <Key*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// md5p: MD-5 object predicate
Object* txt_md5p (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "md5-p");
bool result = (dynamic_cast <Md5*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// sha1p: SHA-1 object predicate
Object* txt_sha1p (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "sha1-p");
bool result = (dynamic_cast <Sha1*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// sha256p: SHA-256 object predicate
Object* txt_sha256p (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "sha256-p");
bool result = (dynamic_cast <Sha256*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// sha384p: SHA-384 object predicate
Object* txt_sha384p (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "sha384-p");
bool result = (dynamic_cast <Sha384*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// sha512p: SHA-512 object predicate
Object* txt_sha512p (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "sha512-p");
bool result = (dynamic_cast <Sha512*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// aesp: aes object predicate
Object* txt_aesp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "aes-p");
bool result = (dynamic_cast <Aes*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// cifrp: cipher object predicate
Object* txt_cifrp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "cipher-p");
bool result = (dynamic_cast <Cipher*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
// icfrp: input cipher object predicate
Object* txt_icfrp (Runnable* robj, Nameset* nset, Cons* args) {
Object* obj = get_obj (robj, nset, args, "input-cipher-p");
bool result = (dynamic_cast <InputCipher*> (obj) == nilp) ? false : true;
Object::cref (obj);
return new Boolean (result);
}
}
syntax highlighted by Code2HTML, v. 0.9.1