diff --git a/basis/classes/struct/prettyprint/prettyprint.factor b/basis/classes/struct/prettyprint/prettyprint.factor index 85c6f1d0a2..349303d113 100644 --- a/basis/classes/struct/prettyprint/prettyprint.factor +++ b/basis/classes/struct/prettyprint/prettyprint.factor @@ -12,7 +12,7 @@ IN: classes.struct.prettyprint [ drop \ STRUCT: ] if ; : struct>assoc ( struct -- assoc ) - [ class struct-slots ] [ struct-slot-values ] bi zip filter-tuple-assoc ; + [ class struct-slots ] [ struct-slot-values ] bi zip ; : pprint-struct-slot ( slot -- ) ; M: vector make-mirror ; M: quotation make-mirror ; M: object make-mirror ; + +M: struct make-mirror + [ + [ drop "underlying" ] [ (underlying)>> ] bi 2array 1array + ] [ + '[ + _ struct>assoc + [ [ [ name>> ] [ c-type>> ] bi 2array ] dip ] assoc-map + ] [ drop { } ] recover + ] bi append ; diff --git a/basis/summary/summary.factor b/basis/summary/summary.factor index 44e5374dc5..d8542c7f83 100644 --- a/basis/summary/summary.factor +++ b/basis/summary/summary.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors classes sequences kernel namespaces -make words math math.parser assocs ; +make words math math.parser assocs classes.struct +alien.c-types ; IN: summary GENERIC: summary ( object -- string ) @@ -31,3 +32,11 @@ M: assoc summary M: f summary object-summary ; M: integer summary object-summary ; + +M: struct summary + [ + dup class name>> % + " struct of " % + byte-length # + " bytes " % + ] "" make ;