@@ -51,37 +51,58 @@ module Crystal
51
51
@size = 0
52
52
end
53
53
54
- def write (bytes : Bytes ) : Nil
54
+ def write (value : Bytes ) : Nil
55
55
pos = @size
56
56
remaining = N - pos
57
57
return if remaining == 0
58
58
59
- n = bytes .size.clamp(..remaining)
60
- bytes .to_unsafe.copy_to(@buf .to_unsafe + pos, n)
59
+ n = value .size.clamp(..remaining)
60
+ value .to_unsafe.copy_to(@buf .to_unsafe + pos, n)
61
61
@size = pos + n
62
62
end
63
63
64
- def write (string : String ) : Nil
65
- write string .to_slice
64
+ def write (value : String ) : Nil
65
+ write value .to_slice
66
66
end
67
67
68
- def write (fiber : Fiber ) : Nil
69
- write fiber.as(Void * )
70
- write " :"
71
- write fiber.name || " ?"
68
+ def write (value : Char ) : Nil
69
+ chars = uninitialized UInt8 [4 ]
70
+ i = 0
71
+ value.each_byte do |byte |
72
+ chars[i] = byte
73
+ i += 1
74
+ end
75
+ write chars.to_slice[0 , i]
76
+ end
77
+
78
+ def write (value : Fiber ) : Nil
79
+ write value.as(Void * )
80
+ write ':'
81
+ write value.name || '?'
72
82
end
73
83
74
- def write (ptr : Pointer ) : Nil
84
+ def write (value : Pointer ) : Nil
75
85
write " 0x"
76
- System .to_int_slice(ptr.address, 16 , true , 2 ) { |bytes | write(bytes) }
86
+ System .to_int_slice(value.address, 16 , true , 2 ) { |bytes | write(bytes) }
87
+ end
88
+
89
+ def write (value : Int ::Signed ) : Nil
90
+ System .to_int_slice(value, 10 , true , 2 ) { |bytes | write(bytes) }
91
+ end
92
+
93
+ def write (value : Int ::Unsigned ) : Nil
94
+ System .to_int_slice(value, 10 , false , 2 ) { |bytes | write(bytes) }
95
+ end
96
+
97
+ def write (value : Time ::Span ) : Nil
98
+ write(value.seconds * Time ::NANOSECONDS_PER_SECOND + value.nanoseconds)
77
99
end
78
100
79
- def write (int : Int :: Signed ) : Nil
80
- System .to_int_slice(int, 10 , true , 2 ) { | bytes | write(bytes) }
101
+ def write (value : Bool ) : Nil
102
+ write value ? '1' : '0'
81
103
end
82
104
83
- def write (uint : Int ::Unsigned ) : Nil
84
- System .to_int_slice(uint, 10 , false , 2 ) { |bytes | write(bytes) }
105
+ def write (value : Nil ) : Nil
85
106
end
86
107
87
108
def to_slice : Bytes
0 commit comments