1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # This file is free software, which comes along with NIT. This software is
4 # distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
5 # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
6 # PARTICULAR PURPOSE. You can modify it is you want, provided this header
7 # is kept unaltered, and a notification of the changes is added.
8 # You are allowed to redistribute it and sell it, alone or is a part of
11 # Implementation of Array::to_s with manual management of the String
13 # To be used as a Mixin at compile-time for benchmarking purposes.
14 module array_to_s_manual
16 intrude import standard
::text
::flat
17 intrude import standard
::collection
::array
19 redef class NativeArray[E
]
20 new(length
: Int) is intern
24 redef fun to_s
: String do
27 var na
= new NativeArray[String](l
)
36 var ns
= new CString(sl
+ 1)
43 if tmp
isa FlatString then
44 tmp
.items
.copy_to
(ns
, tpl
, tmp
.index_from
, off
)
47 for j
in tmp
.substrings
do
48 var s
= j
.as(FlatString)
49 s
.items
.copy_to
(ns
, tpl
, s
.index_from
, off
)
55 return ns
.to_s_unsafe
(sl
, copy
=false)