2009-04-24 21:43:01 -04:00
|
|
|
! Copyright (C) 2009 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-04-30 04:37:07 -04:00
|
|
|
USING: accessors definitions generic generic.single
|
|
|
|
generic.single.private kernel namespaces words kernel.private
|
|
|
|
quotations sequences ;
|
2009-04-24 21:43:01 -04:00
|
|
|
IN: generic.hook
|
|
|
|
|
|
|
|
TUPLE: hook-combination < single-combination var ;
|
|
|
|
|
|
|
|
C: <hook-combination> hook-combination
|
|
|
|
|
|
|
|
PREDICATE: hook-generic < generic
|
|
|
|
"combination" word-prop hook-combination? ;
|
|
|
|
|
|
|
|
M: hook-combination picker
|
|
|
|
combination get var>> [ get ] curry ;
|
|
|
|
|
|
|
|
M: hook-combination dispatch# drop 0 ;
|
|
|
|
|
2009-04-30 04:37:07 -04:00
|
|
|
M: hook-combination mega-cache-quot
|
|
|
|
1quotation picker [ lookup-method (execute) ] surround ;
|
|
|
|
|
2009-04-24 21:43:01 -04:00
|
|
|
M: hook-generic definer drop \ HOOK: f ;
|
2009-04-25 20:41:27 -04:00
|
|
|
|
|
|
|
M: hook-generic effective-method
|
|
|
|
[ "combination" word-prop var>> get ] keep (effective-method) ;
|