summaryrefslogtreecommitdiff
path: root/Lisp/policy.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2008-02-12 16:25:03 +0100
committerMatthias Benkard <code@mail.matthias.benkard.de>2008-02-12 16:25:03 +0100
commita138a2b2921d7fc0329a21d2dbabe4211ff4ef3e (patch)
treea048bae191486ab698c96acf5cefe3f56dd03117 /Lisp/policy.lisp
parentfc097fadb088e6c563f339d2b2090cee45295194 (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.lisp43
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