]> git.lyx.org Git - lyx.git/blobdiff - src/BiblioInfo.h
Routines for calculating numerical labels for BibTeX citations.
[lyx.git] / src / BiblioInfo.h
index e265045ba03bb843be5076f0ba91c994648f76e9..658a4ad02731da25504714e90a3eb009a56827a6 100644 (file)
@@ -85,7 +85,19 @@ public:
        ///
        void setAllData(docstring const & d) { all_data_ = d; }
        ///
+       void label(docstring const & d) { label_= d; }
+       ///
+       docstring const & label() const { return label_; }
+       ///
+       docstring const & key() const { return bib_key_; }
+       ///
+       docstring citeKey() const { return cite_key_; }
+       ///
+       void setCiteKey(docstring const & k) { cite_key_ = k; }
+       ///
        docstring entryType() const { return entry_type_; }
+       /// 
+       bool isBibTeX() const { return is_bibtex_; }
 private:
        /// like operator[], except, if the field is empty, it will attempt
        /// to get the data from xref BibTeXInfo object, which would normally
@@ -96,12 +108,19 @@ private:
        bool is_bibtex_;
        /// the BibTeX key for this entry
        docstring bib_key_;
+       /// the label that will appear in citations
+       /// this is easily set from bibliography environments, but has
+       /// to be calculated for entries we get from BibTeX
+       docstring label_;
        /// a single string containing all BibTeX data associated with this key
        docstring all_data_;
        /// the BibTeX entry type (article, book, incollection, ...)
        docstring entry_type_;
        /// a cache for getInfo()
        mutable docstring info_;
+       /// key to use when citing this entry 
+       /// currently used only by XHTML output routines
+       docstring cite_key_;
        /// our map: <field, value>
        std::map <docstring, docstring> bimap_;
 };
@@ -158,6 +177,13 @@ public:
                */
        std::vector<docstring> const
                        getAuthorYearStrings(docstring const & key, Buffer const & buf) const;
+       /// Collects the cited entries from buf.
+       void collectCitedEntries(Buffer const & buf);
+       /// A list of BibTeX keys cited in the current document, sorted by
+       /// the last name of the author.
+       std::vector<docstring> const & citedEntries() const { return cited_entries_; }
+       ///
+       void makeCitationLabels(Buffer const & buf);
        ///
        const_iterator begin() const { return bimap_.begin(); }
        ///
@@ -183,6 +209,10 @@ private:
        std::set<docstring> entry_types_;
        /// our map: keys --> BibTeXInfo
        std::map<docstring, BibTeXInfo> bimap_;
+       /// a possibly sorted list of entries cited in our Buffer.
+       /// do not try to make this a vector<BibTeXInfo *> or anything of
+       /// the sort, because reloads will invalidate those pointers. 
+       std::vector<docstring> cited_entries_;
 };
 
 } // namespace lyx