1 module viva.types.collection; 2 3 import viva.collections; 4 import viva.types.string; 5 6 /++ 7 + 8 +/ 9 void forEach(T)(ref T[] arr, void delegate(ref T t) callback) 10 { 11 foreach (ref e; arr) 12 { 13 callback(e); 14 } 15 } 16 17 /++ 18 + 19 +/ 20 void forEach(T)(ref T[] arr, void delegate(T t) callback) 21 { 22 foreach (e; arr) 23 { 24 callback(e); 25 } 26 } 27 28 /++ 29 + 30 +/ 31 void forEach(ref HashTable table, void delegate(ref EntryValue value) callback) 32 { 33 foreach (ref entryValue; table.getAll()) 34 { 35 callback(entryValue); 36 } 37 } 38 39 /++ 40 + 41 +/ 42 void forEach(ref HashTable table, void delegate(EntryValue value) callback) 43 { 44 foreach (entryValue; table.getAll()) 45 { 46 callback(entryValue); 47 } 48 } 49 50 /++ 51 + 52 +/ 53 void forEach(T)(ref Cache!T cache, void delegate(ref EntryValue value) callback) 54 { 55 foreach (ref entryValue; cache.getAll()) 56 { 57 callback(entryValue); 58 } 59 } 60 61 /++ 62 + 63 +/ 64 void forEach(T)(ref Cache!T cache, void delegate(EntryValue value) callback) 65 { 66 foreach (entryValue; cache.getAll()) 67 { 68 callback(entryValue); 69 } 70 } 71 72 /++ 73 + 74 +/ 75 string join(T)(ref T[] arr, string joiner) 76 { 77 import std.conv : to; 78 79 string res = ""; 80 81 foreach (elem; arr) 82 { 83 res.append(elem.to!string); 84 res.append(joiner); 85 } 86 87 res = res[0..$ - joiner.length]; 88 89 return res; 90 }