X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBiblioInfo.h;h=ecff0ffbf2e38b1b2f0b8990df24b90d6827c0c7;hb=b271e3e06d778dbe7f20973c718f06d8aac0cf6f;hp=7f57a31c6b54de510b5ad12a61bcefb2c36f849a;hpb=e285d2a7d84cb372c6ec96a8dd422766ecadda7a;p=lyx.git diff --git a/src/BiblioInfo.h b/src/BiblioInfo.h index 7f57a31c6b..ecff0ffbf2 100644 --- a/src/BiblioInfo.h +++ b/src/BiblioInfo.h @@ -73,13 +73,18 @@ std::vector const getCiteStyles(CiteEngine const ); /// bibliography entry. /// The keys are BibTeX fields (e.g., author, title, etc), /// and the values are the associated field values. -class BibTeXInfo : public std::map { +class BibTeXInfo { public: /// - BibTeXInfo(); - ///Search for the given field and return the associated info. - ///The point of this is that BibTeXInfo::operator[] has no const - ///form. + typedef std::map::const_iterator const_iterator; + /// argument sets isBibTeX_, so should be false only if it's coming + /// from a bibliography environment + BibTeXInfo(bool ib = true); + /// constructor that sets the entryType + BibTeXInfo(docstring const & key, docstring const & type); + /// Search for the given field and return the associated info. + /// The point of this is that BibTeXInfo::operator[] has no const + /// form. docstring const & getValueForField(docstring const & field) const; /// docstring const & getValueForField(std::string const & field) const; @@ -91,14 +96,32 @@ public: docstring const getYear() const; /// Returns formatted BibTeX data suitable for framing. docstring const getInfo() const; + /// + int count(docstring const & f) const { return bimap_.count(f); } + /// + const_iterator find(docstring const & f) const { return bimap_.find(f); } + /// + const_iterator end() const { return bimap_.end(); } + /// + docstring & operator[](docstring const & f) + { return bimap_[f]; } + /// + docstring const & allData() const { return all_data_; } + /// + void setAllData(docstring const & d) { all_data_ = d; } + /// + docstring entryType() const { return entry_type_; } +private: + /// true if from BibTeX; false if from bibliography environment + bool is_bibtex_; /// the BibTeX key for this entry - docstring bibKey; + docstring bib_key_; /// a single string containing all BibTeX data associated with this key - docstring allData; + docstring all_data_; /// the BibTeX entry type (article, book, incollection, ...) - docstring entryType; - /// true if from BibTeX; false if from bibliography environment - bool isBibTeX; + docstring entry_type_; + /// our map: + std::map bimap_; }; @@ -106,8 +129,12 @@ public: /// from BibTeX or from bibliography environments. /// BiblioInfo.first is the bibliography key /// BiblioInfo.second is the data for that key -class BiblioInfo : public std::map { +class BiblioInfo { public: + /// + BiblioInfo() {} + /// + typedef std::map::const_iterator const_iterator; /// Returns a sorted vector of bibliography keys std::vector const getKeys() const; /// Returns a sorted vector of present BibTeX fields @@ -126,7 +153,7 @@ public: docstring const getInfo(docstring const & key) const; /** - * "Translates the available Citation Styles into strings for a given key, + * "Translates" the available Citation Styles into strings for a given key, * either numerical or author-year depending upon the active engine. (See * below for those methods.) */ @@ -154,9 +181,29 @@ public: */ std::vector const getAuthorYearStrings(docstring const & key, Buffer const & buf) const; - - std::set fieldNames; - std::set entryTypes; + /// + const_iterator begin() const { return bimap_.begin(); } + /// + void clear() { bimap_.clear(); } + /// + bool empty() const { return bimap_.empty(); } + /// + const_iterator end() const { return bimap_.end(); } + /// + const_iterator find(docstring const & f) const { return bimap_.find(f); } + /// + BibTeXInfo & operator[](docstring const & f) { return bimap_[f]; } + /// + void addFieldName(docstring const & f) { field_names_.insert(f); } + /// + void addEntryType(docstring const & f) { entry_types_.insert(f); } +private: + /// + std::set field_names_; + /// + std::set entry_types_; + /// our map: keys --> BibTeXInfo + std::map bimap_; }; } // namespace lyx