USING: formatting words classes.mixin kernel fry compiler.units accessors classes classes.tuple ; IN: mongodb.persistent MIXIN: persistent-tuple SLOT: _p_oid SLOT: _p_info TUPLE: oid { a initial: 0 } { b initial: 0 } ; TUPLE: persistent-info type vocab collection dirty? mt ; GENERIC: persistent-tuple-class ( tuple -- class ) M: tuple persistent-tuple-class ( tuple -- class ) class persistent-tuple-class ; M: tuple-class persistent-tuple-class ( class -- class' ) [ [ vocabulary>> ] [ name>> ] bi ] keep ! name vocab class [ "%s_%s" sprintf ] dip swap dup ! class new_name new_name P_VOCAB lookup dup ! class new_name vo/f vo/f [ [ drop drop ] dip ] [ drop define-persistent-tuple ] if ;