]> git.lyx.org Git - lyx.git/blobdiff - src/Author.h
Avoid full metrics computation with Update:FitCursor
[lyx.git] / src / Author.h
index 6842cf35caa217ca9ce05cdb5511fa62f8c49f61..798cfd80433499f236c2462645ab42e33cbc705e 100644 (file)
 
 #include "support/docstring.h"
 
-#include <map>
-#include <iosfwd>
+#include <vector>
 
 
 namespace lyx {
 
-
 class Author {
 public:
-       Author() {}
-
-       Author(docstring const & name, docstring const & email)
-               : name_(name), email_(email), used_(true) {}
-
-       docstring const name() const {
-               return name_;
-       }
-
-       docstring const email() const {
-               return email_;
-       }
-
-       void used(bool u) const {
-               used_ = u;
-       }
-
-       bool used() const {
-               return used_;
-       }
-
+       ///
+       Author() : used_(false), buffer_id_(0) {}
+       ///
+       Author(docstring const & name, docstring const & email,
+              docstring const & initials);
+       /// For when the \author line is missing (#9854)
+       Author(int buffer_id);
+       ///
+       docstring name() const { return name_; }
+       ///
+       docstring email() const { return email_; }
+       ///
+       docstring initials() const { return initials_; }
+       ///
+       docstring nameAndEmail() const;
+       ///
+       int bufferId() const { return buffer_id_; }
+       ///
+       void setBufferId(int buffer_id) const { buffer_id_ = buffer_id; }
+       ///
+       void setUsed(bool u) const { used_ = u; }
+       ///
+       bool used() const { return used_; }
+       /// Was the author line not missing?
+       bool valid() const;
+       ///
        friend std::istream & operator>>(std::istream & os, Author & a);
+       ///
+       friend std::ostream & operator<<(std::ostream & os, Author const & a);
 
 private:
+       /// The author's name
        docstring name_;
-
+       /// The author's email address
        docstring email_;
-
+       /// The author's initials
+       docstring initials_;
+       ///
        mutable bool used_;
+       /// The id of the author in the lyx-file
+       mutable int buffer_id_;
 };
 
 
 class AuthorList {
 public:
+       ///
        AuthorList();
-
+       ///
        int record(Author const & a);
-
+       ///
        void record(int id, Author const & a);
-
+       ///
+       void recordCurrentAuthor(Author const & a);
+       ///
        Author const & get(int id) const;
-
-       typedef std::map<int, Author> Authors;
-
+       ///
+       void sort();
+       ///
+       typedef std::vector<Author> Authors;
+       ///
        Authors::const_iterator begin() const;
-
+       ///
        Authors::const_iterator end() const;
-
+       ///
+       friend
+       std::ostream & operator<<(std::ostream & os, AuthorList const & a);
 private:
-       int last_id_;
-
+       ///
        Authors authors_;
 };