1 /******************************************************************************
2 3 Map numbers to easier distinguishable names
4 5 Copyright:
6 Copyright (c) 2009-2016 dunnhumby Germany GmbH.
7 All rights reserved.
8 9 License:
10 Boost Software License Version 1.0. See LICENSE_BOOST.txt for details.
11 Alternatively, this file may be distributed under the terms of the Tango
12 3-Clause BSD License (see LICENSE_BSD.txt for details).
13 14 *******************************************************************************/15 16 moduleocean.io.digest.FirstName;
17 18 19 20 importocean.meta.types.Qualifiers;
21 22 importocean.io.digest.Fnv1;
23 24 25 /*******************************************************************************
26 27 Class to provide number -> name translation
28 29 This class is useful for when you want to display a lot of numbers that
30 don't have an immediate meaning for a person (pointers, hashes, etc) but
31 where it still is helpful or important to easily see whether a number is
32 different from the other.
33 34 Usage Example:
35 ---
36 37 import ocean.io.digest.FirstName;
38 39 MyClass myArray[] = ... ;
40 41 42 foreach ( c; myArray )
43 {
44 Stdout.formatln("{}.property = {}", FirstName(cast(void*) c), c.property);
45 }
46 ---
47 48 *******************************************************************************/49 50 publicstaticclassFirstName51 {
52 /***************************************************************************
53 54 Static list of strings (preferably names) that a number can be mapped to
55 56 ***************************************************************************/57 58 staticprivateistring[] names =
59 ["Sarah",
60 "David",
61 "Gavin",
62 "Mathias",
63 "Hans",
64 "Ben",
65 "Tom",
66 "Hatem",
67 "Donald",
68 "Luca",
69 "Lautaro",
70 "Anja",
71 "Marine",
72 "Coco",
73 "Robert",
74 "Federico",
75 "Lars",
76 "Julia",
77 "Sanne",
78 "Aylin",
79 "Tomsen",
80 "Dylan",
81 "Margit",
82 "Daniel",
83 "Diana",
84 "Jessica",
85 "Francisco",
86 "Josh",
87 "Karin",
88 "Anke",
89 "Linus",
90 "BillGates",
91 "Superman",
92 "Batman",
93 "Joker",
94 "Katniss",
95 "Spiderman",
96 "Storm",
97 "Walter",
98 "Fawfzi"];
99 100 /***************************************************************************
101 102 Function to map an abitrary integer to a string for easier distinction
103 104 Params:
105 T = integer type, should be Fnv1a compatible
106 value = an integer value to map
107 108 Returns:
109 a string matching the hash of the given number
110 111 ***************************************************************************/112 113 publicstaticistringopCall ( T ) ( Tvalue )
114 {
115 returnnames[Fnv1a64(value) % names.length];
116 }
117 }
118