]> git.lyx.org Git - features.git/commitdiff
fix bibkey writing, avoid a few copies, whitespace changes..
authorAndré Pönitz <poenitz@gmx.net>
Tue, 18 Feb 2003 13:25:18 +0000 (13:25 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Tue, 18 Feb 2003 13:25:18 +0000 (13:25 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6196 a592a061-630c-0410-9148-cb99ea01b6c8

src/BufferView.C
src/buffer.C
src/buffer.h
src/frontends/controllers/ControlCitation.C
src/insets/insetbib.C
src/insets/insetbib.h
src/insets/insetcite.C
src/insets/insetinclude.C
src/insets/insetinclude.h
src/text2.C

index dd3ab58ad9c1287f6a80298a81ed676cfea766dc..e654a63eaca2da582191f011037864509641021e 100644 (file)
@@ -865,12 +865,12 @@ bool BufferView::ChangeRefsIfUnique(string const & from, string const & to)
 }
 
 
-bool BufferView::ChangeCitationsIfUnique(string const & from,
-                                        string const & to)
+bool BufferView::ChangeCitationsIfUnique(string const & from, string const & to)
 {
        typedef pair<string, string> StringPair;
 
-       vector<StringPair> keys = buffer()->getBibkeyList();
+       vector<StringPair> keys;
+       buffer()->fillWithBibKeys(keys);
        if (count_if(keys.begin(), keys.end(),
                     lyx::equal_1st_in_pair<StringPair>(from))
            > 1)
index 26a813cd82f41757878c48081f522fa969dd8512..06ae1d838012c65f4511d27feb7d147de8552440 100644 (file)
@@ -130,7 +130,6 @@ using std::pair;
 using std::make_pair;
 using std::vector;
 using std::map;
-using std::max;
 using std::stack;
 using std::list;
 using std::for_each;
@@ -923,7 +922,8 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
                params.float_placement = lex.getString();
        } else if (token == "\\align") {
                int tmpret = lex.findToken(string_align);
-               if (tmpret == -1) ++tmpret;
+               if (tmpret == -1)
+                       ++tmpret;
                int const tmpret2 = int(pow(2.0, tmpret));
                par->params().align(LyXAlignment(tmpret2));
        } else if (token == "\\added_space_top") {
@@ -1586,7 +1586,7 @@ string const Buffer::asciiParagraph(Paragraph const & par,
 
        // this is to change the linebreak to do it by word a bit more
        // intelligent hopefully! (only in the case where we have a
-       // max linelenght!) (Jug)
+       // max linelength!) (Jug)
 
        string word;
 
@@ -2872,40 +2872,33 @@ vector<string> const Buffer::getLabelList() const
 
 
 // This is also a buffer property (ale)
-vector<pair<string, string> > const Buffer::getBibkeyList() const
+void Buffer::fillWithBibKeys(vector<pair<string, string> > & keys) const
 {
-       typedef pair<string, string> StringPair;
        /// if this is a child document and the parent is already loaded
-       /// Use the parent's list instead  [ale990412]
+       /// use the parent's list instead  [ale990412]
        if (!params.parentname.empty() && bufferlist.exists(params.parentname)) {
                Buffer const * tmp = bufferlist.getBuffer(params.parentname);
-               if (tmp)
-                       return tmp->getBibkeyList();
+               if (tmp) {
+                       tmp->fillWithBibKeys(keys);
+                       return;
+               }
        }
 
-       vector<StringPair> keys;
        for (inset_iterator it = inset_const_iterator_begin();
                it != inset_const_iterator_end(); ++it) {
-               // Search for Bibtex or Include inset
-               if (it->lyxCode() == Inset::BIBTEX_CODE) {
-                       vector<StringPair> tmp =
-                               static_cast<InsetBibtex &>(*it).getKeys(this);
-                       keys.insert(keys.end(), tmp.begin(), tmp.end());
-               } else if (it->lyxCode() == Inset::INCLUDE_CODE) {
-                       vector<StringPair> const tmp =
-                               static_cast<InsetInclude &>(*it).getKeys();
-                       keys.insert(keys.end(), tmp.begin(), tmp.end());
-               } else if (it->lyxCode() == Inset::BIBKEY_CODE) {
+               if (it->lyxCode() == Inset::BIBTEX_CODE)
+                       static_cast<InsetBibtex &>(*it).fillWithBibKeys(this, keys);
+               else if (it->lyxCode() == Inset::INCLUDE_CODE)
+                       static_cast<InsetInclude &>(*it).fillWithBibKeys(keys);
+               else if (it->lyxCode() == Inset::BIBKEY_CODE) {
                        InsetBibKey & bib = static_cast<InsetBibKey &>(*it);
                        string const key = bib.getContents();
                        string const opt = bib.getOptions();
                        string const ref; // = pit->asString(this, false);
                        string const info = opt + "TheBibliographyRef" + ref;
-                       keys.push_back(StringPair(key, info));
+                       keys.push_back(pair<string, string>(key, info));
                }
        }
-
-       return keys;
 }
 
 
index 19c6680a7ebe6676935ed6c54d2aacec3d780151..ad57b1ef39665fbd07d444b171cd06dea26340bf 100644 (file)
@@ -247,8 +247,8 @@ public:
        */
        void validate(LaTeXFeatures &) const;
 
-       ///
-       std::vector<std::pair<string, string> > const getBibkeyList() const;
+       /// return all bibkeys from buffer and its childs
+       void fillWithBibKeys(vector<pair<string, string> > & keys) const;
        ///
        std::vector<string> const getLabelList() const;
 
index b691ca8de2e796a3bfe57036d66ab6f4c04fdace..4d0f1c42bd128c821022ac24787995d456da38c8 100644 (file)
@@ -34,7 +34,8 @@ void ControlCitation::clearDaughterParams()
 
 void ControlCitation::setDaughterParams()
 {
-       vector<pair<string,string> > blist = buffer()->getBibkeyList();
+       vector<pair<string,string> > blist;
+       buffer()->fillWithBibKeys(blist);
 
        typedef std::map<string, string>::value_type InfoMapValue;
 
index 2fdee1a160b5b486c9c99e63396aa62eab3df72f..084deead79a8a3f2ff202aad73187663a21ddbd2 100644 (file)
@@ -71,11 +71,10 @@ void InsetBibKey::setCounter(int c)
 // of time cause LyX3 won't use lyxlex anyway.  (ale)
 void InsetBibKey::write(Buffer const *, ostream & os) const
 {
-       os << "\n\\layout Bibliography\n\\bibitem ";
-       if (! getOptions().empty())
+       os << "\n\\bibitem ";
+       if (!getOptions().empty())
                os << '[' << getOptions() << ']';
-       os << '{'
-          << getContents() << "}\n";
+       os << '{' << getContents() << "}\n";
 }
 
 
@@ -84,8 +83,7 @@ void InsetBibKey::write(Buffer const *, ostream & os) const
 void InsetBibKey::read(Buffer const *, LyXLex & lex)
 {
        if (lex.eatLine()) {
-               string const token = lex.getString();
-               scanCommand(token);
+               scanCommand(lex.getString());
        } else {
                lex.printError("InsetCommand: Parse error: `$$Token'");
        }
@@ -200,7 +198,7 @@ int InsetBibtex::latex(Buffer const * buffer, ostream & os,
                         adb = os::external_path(MakeAbsPath(adb, buffer->filePath()));
                db_out += adb;
                db_out += ',';
-               db_in= split(db_in, adb,',');
+               db_in = split(db_in, adb,',');
        }
        db_out = rtrim(db_out, ",");
        os   << "\\bibliography{" << db_out << "}\n";
@@ -235,11 +233,9 @@ vector<string> const InsetBibtex::getFiles(Buffer const & buffer) const
 
 
 // This method returns a comma separated list of Bibtex entries
-vector<pair<string, string> > const
-       InsetBibtex::getKeys(Buffer const * buffer) const
+void InsetBibtex::fillWithBibKeys
+       (Buffer const * buffer, vector<pair<string, string> > & keys) const
 {
-       vector<pair<string,string> > keys;
-
        lyx::Assert(buffer);
        vector<string> const files = getFiles(*buffer);
        for (vector<string>::const_iterator it = files.begin();
@@ -271,7 +267,6 @@ vector<pair<string, string> > const
                        }
                }
        }
-       return keys;
 }
 
 
index c407c8c79c206cf5519de2f8ddd76a1a6a17c4d5..7a76f01f83e65ff398f9ef07de0fb960b4ac50bf 100644 (file)
@@ -93,7 +93,8 @@ public:
        int latex(Buffer const *, std::ostream &,
                  bool fragile, bool freespace) const;
        ///
-       std::vector<std::pair<string,string> > const getKeys(Buffer const *) const;
+       void fillWithBibKeys(Buffer const *,
+               std::vector<std::pair<string,string> > &) const;
        ///
        std::vector<string> const getFiles(Buffer const &) const;
        ///
index d7b7206cd317b2f11e072966217f0be3757aaab4..9df8737b020c5697e407d27c532d3f7767da7013 100644 (file)
@@ -66,7 +66,8 @@ string const getNatbibLabel(Buffer const * buffer,
        if (loadkeys) {
                // build the keylist
                typedef vector<std::pair<string, string> > InfoType;
-               InfoType bibkeys = buffer->getBibkeyList();
+               InfoType bibkeys;
+               buffer->fillWithBibKeys(bibkeys);
 
                InfoType::const_iterator bit  = bibkeys.begin();
                InfoType::const_iterator bend = bibkeys.end();
index 58d2827f5b5b00dfef76975b4fdfe63eb99ddba7..2b0b6bb6f2220ce19d272c0e2c4fb1cc38aec6b2 100644 (file)
@@ -483,18 +483,14 @@ vector<string> const InsetInclude::getLabelList() const
 }
 
 
-vector<pair<string,string> > const InsetInclude::getKeys() const
+void InsetInclude::fillWithBibKeys(vector<pair<string,string> > & keys) const
 {
-       vector<pair<string,string> > keys;
-
        if (loadIfNeeded()) {
                Buffer * tmp = bufferlist.getBuffer(getFileName());
                tmp->setParentName("");
-               keys = tmp->getBibkeyList();
+               tmp->fillWithBibKeys(keys);
                tmp->setParentName(getMasterFilename());
        }
-
-       return keys;
 }
 
 
index b2e8443a967ede3f163aa039295abdb98c2363a5..f926c42d56788cabca4a15bfcc08560773cd701a 100644 (file)
@@ -79,7 +79,7 @@ public:
        /// This returns the list of labels on the child buffer
        std::vector<string> const getLabelList() const;
        /// This returns the list of bibkeys on the child buffer
-       std::vector< std::pair<string,string> > const getKeys() const;
+       void fillWithBibKeys(vector<pair<string,string> > & keys) const;
        ///
        void edit(BufferView *, int x, int y, mouse_button::state button);
        ///
index 50030c4d5281374a79a68aa19598a7869093a108..f8b6104d841dee5ca202ca21e53920e7996de9fb 100644 (file)
@@ -1264,14 +1264,13 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
                textclass.counters().step("bibitem");
                int number = textclass.counters().value("bibitem");
                //if (!par->bibkey()) {
+               //      Inset * inset = new InsetBibKey(InsetCommandParams("bibitem"));
+               //      //par->insertInset(0, inset);
+               //}
                if (par->bibkey()) {
                        par->bibkey()->setCounter(number);
                        par->params().labelString(layout->labelstring());
                }
-               // else {
-               //      InsetCommandParams p("bibitem");
-               //      par->bibkey() = new InsetBibKey(p);
-               //}
                // In biblio should't be following counters but...
        } else {
                string s = layout->labelstring();