+static int computeHash(docstring const & name,
+ docstring const & email)
+{
+ string const full_author_string = to_utf8(name + email);
+ // Bernstein's hash function
+ unsigned int hash = 5381;
+ for (unsigned int i = 0; i < full_author_string.length(); ++i)
+ hash = ((hash << 5) + hash) + (unsigned int)(full_author_string[i]);
+ return int(hash);
+}
+
+
+Author::Author(docstring const & name, docstring const & email)
+ : name_(name), email_(email), used_(true)
+{
+ buffer_id_ = computeHash(name_, email_);
+}