tuple-class


Vocabulary
classes.tuple

Class description
The class of tuple class words.

Examples
USING: classes.tuple prettyprint ; IN: scratchpad TUPLE: name title first last ; name tuple-class? .
t


See also
define-tuple-class, TUPLE:

Definition
USING: classes kernel words ;

IN: classes.tuple

PREDICATE: tuple-class < class
"metaclass" word-prop tuple-class eq? ;


Methods
USING: classes.algebra classes.algebra.private classes.builtin
classes.tuple combinators kernel ;

M: tuple-class (classes-intersect?)
{
{ [ over builtin-class? ] [ drop tuple eq? ] }
{
[ over tuple-class? ]
[ [ class<= ] [ swap class<= ] 2bi or ]
}
} cond ;


USING: classes.private classes.tuple classes.tuple.private
kernel ;

M: tuple-class (define-tuple-class)
pick reset-final 3dup tuple-class-unchanged?
[ 2drop ?define-symbol ] [ redefine-tuple-class ] if ;


USING: classes.algebra.private classes.tuple kernel make ;

M: tuple-class (flatten-class) dup ,, ;


USING: classes.tuple classes.tuple.private kernel words ;

M: tuple-class boa
[ "boa-check" word-prop [ call ] when* ] [ tuple-layout ]
bi <tuple-boa> ;


USING: classes.tuple classes.tuple.parser kernel sequences ;

M: tuple-class boa>object swap prefix >tuple ;


USING: classes.tuple html.templates.chloe.compiler
html.templates.chloe.components html.templates.chloe.syntax
kernel ;

M: tuple-class component-tag
[ drop "name" required-attr compile-attr ]
[ compile-component-attrs ] 2bi render-quot [code] ;


USING: classes.tuple words ;

M: tuple-class final-class? "final" word-prop ;


USING: classes.tuple delegate.private ;

M: tuple-class group-words all-slots slot-group-words ;


USING: classes.tuple kernel slots ;

M: tuple-class initial-value* new t ;


USING: classes classes.tuple classes.tuple.private kernel ;

M: tuple-class instance?
dup echelon-of layout-class-offset tuple-instance? ;


USING: classes classes.private classes.tuple kernel words ;

M: tuple-class make-final
[ dup class-usage ?metaclass-changed ]
[ t "final" set-word-prop ] bi ;


USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;

M: tuple-class mdb-index-map (mdb-index-map) ;


USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;

M: tuple-class mdb-slot-map (mdb-slot-map) ;


USING: classes.private classes.tuple kernel words ;

M: tuple-class metaclass-changed
nip tuple over "slots" word-prop define-tuple-class ;


USING: classes.tuple classes.tuple.private kernel words ;

M: tuple-class new
dup "prototype" word-prop
[ (clone) ] [ tuple-layout <tuple> ] ?if ;


USING: classes.private classes.tuple kernel ;

M: tuple-class rank-class drop 1 ;


USING: classes.private classes.tuple generic kernel words ;

M: tuple-class reset-class
[ dup "slots" word-prop forget-slot-accessors ] [
[ M\ tuple-class reset-class (call-next-method) ] [
{
"layout"
"slots"
"boa-check"
"prototype"
"final"
} reset-props
] bi
] bi ;


USING: classes.tuple combinators prettyprint.backend
prettyprint.sections see.private sequences words ;

M: tuple-class see-class*
<colon \ TUPLE: pprint-word {
[ pprint-word ]
[ superclass. ]
[
<block "slots" word-prop [ pprint-slot ] each
block> pprint-;
]
[ tuple-declarations. ]
} cleave block> ;


USING: classes.tuple classes.tuple.private kernel sequences
sequences.private ;

M: tuple-class slots>tuple
check-slots pad-slots tuple-layout <tuple> [
[ tuple-size iota ] [ [ set-array-nth ] curry ] bi
2each
] keep ;


USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;

M: tuple-class tuple-collection (mdb-collection) ;


USING: classes.private classes.tuple classes.tuple.private
combinators ;

M: tuple-class update-class
{
[ define-boa-check ]
[ define-tuple-layout ]
[ define-tuple-slots ]
[ define-tuple-predicate ]
[ define-tuple-prototype ]
} cleave ;