X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBiblioInfo.h;h=658a4ad02731da25504714e90a3eb009a56827a6;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=9ebc866ec6df84d2dda218f4ccc39a2fba1a074c;hpb=32950f6c6ca3b556357fd70ae0a3edbad443f86e;p=lyx.git diff --git a/src/BiblioInfo.h b/src/BiblioInfo.h index 9ebc866ec6..658a4ad027 100644 --- a/src/BiblioInfo.h +++ b/src/BiblioInfo.h @@ -63,7 +63,7 @@ public: docstring const getXRef() const; /// \return formatted BibTeX data suitable for framing. /// \param pointer to crossref information - docstring const getInfo(BibTeXInfo const * const xref = 0) const; + docstring const & getInfo(BibTeXInfo const * const xref = 0) const; /// int count(docstring const & f) const { return bimap_.count(f); } /// @@ -85,21 +85,42 @@ 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 it will also check the given xref + /// like operator[], except, if the field is empty, it will attempt + /// to get the data from xref BibTeXInfo object, which would normally + /// be the one referenced in the crossref field. docstring getValueForKey(std::string const & key, BibTeXInfo const * const xref = 0) const; /// true if from BibTeX; false if from bibliography environment 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: std::map bimap_; }; @@ -156,6 +177,13 @@ public: */ std::vector 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 const & citedEntries() const { return cited_entries_; } + /// + void makeCitationLabels(Buffer const & buf); /// const_iterator begin() const { return bimap_.begin(); } /// @@ -181,6 +209,10 @@ private: std::set entry_types_; /// our map: keys --> BibTeXInfo std::map bimap_; + /// a possibly sorted list of entries cited in our Buffer. + /// do not try to make this a vector or anything of + /// the sort, because reloads will invalidate those pointers. + std::vector cited_entries_; }; } // namespace lyx