diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-12 16:25:03 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-12 16:25:03 +0100 |
commit | a138a2b2921d7fc0329a21d2dbabe4211ff4ef3e (patch) | |
tree | a048bae191486ab698c96acf5cefe3f56dd03117 /Lisp/policy.lisp | |
parent | fc097fadb088e6c563f339d2b2090cee45295194 (diff) |
Add a policy for distinguishing between char and BOOL return values.
darcs-hash:09dbdf5e230a28071f1933a48077d562065df71f
Diffstat (limited to 'Lisp/policy.lisp')
-rw-r--r-- | Lisp/policy.lisp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Lisp/policy.lisp b/Lisp/policy.lisp new file mode 100644 index 0000000..41484fa --- /dev/null +++ b/Lisp/policy.lisp @@ -0,0 +1,43 @@ +;;;; Objective-CL, an Objective-C bridge for Common Lisp. +;;;; Copyright (C) 2007 Matthias Andreas Benkard. +;;;; +;;;; This program is free software: you can redistribute it and/or +;;;; modify it under the terms of the GNU Lesser General Public License +;;;; as published by the Free Software Foundation, either version 3 of +;;;; the License, or (at your option) any later version. +;;;; +;;;; 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. See the GNU +;;;; Lesser General Public License for more details. +;;;; +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with this program. If not, see +;;;; <http://www.gnu.org/licenses/>. + +(in-package #:mulk.objective-cl) + + +(defun define-returns-boolean-exception (selector-designator) + (let ((key (typecase selector-designator + (string selector-designator) + (t (selector-name (selector selector-designator)))))) + (setf (gethash key *boolean-return-exceptions*) t))) + + +(defun undefine-returns-boolean-exceptions (selector-designator) + (let ((key (typecase selector-designator + (string selector-designator) + (t (selector-name (selector selector-designator)))))) + (remhash key *boolean-return-exceptions*))) + + +(define-returns-boolean-exception "charValue") +(define-returns-boolean-exception "characterAtIndex:") + + +(defun objc-char->lisp-value (objc-char receiver selector) + (declare (ignore receiver)) + (if (gethash (selector-name selector) *boolean-return-exceptions* nil) + objc-char + (not (zerop objc-char))))
\ No newline at end of file |