]> git.lyx.org Git - lyx.git/blobdiff - src/BiblioInfo.h
Routines for calculating numerical labels for BibTeX citations.
[lyx.git] / src / BiblioInfo.h
index e0f8f645887fc94ab62fd436f35e4fffeb500f1e..658a4ad02731da25504714e90a3eb009a56827a6 100644 (file)
@@ -91,7 +91,13 @@ public:
        ///
        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
@@ -112,6 +118,9 @@ private:
        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_;
 };
@@ -168,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(); }
        ///
@@ -193,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