/* ---------------------------------------------------------------------------- libconfig - A library for processing structured configuration files Copyright (C) 2005-2010 Mark A Lindner This file is part of libconfig. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, see . ---------------------------------------------------------------------------- */ #include #include #include #include using namespace std; using namespace libconfig; // This example reads the configuration file 'example.cfg' and displays // some of its contents. int main(int argc, char **argv) { Config cfg; // Read the file. If there is an error, report it and exit. try { cfg.readFile("example.cfg"); } catch(const FileIOException &fioex) { std::cerr << "I/O error while reading file." << std::endl; return(EXIT_FAILURE); } catch(const ParseException &pex) { std::cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() << " - " << pex.getError() << std::endl; return(EXIT_FAILURE); } // Get the store name. try { string name = cfg.lookup("name"); cout << "Store name: " << name << endl << endl; } catch(const SettingNotFoundException &nfex) { cerr << "No 'name' setting in configuration file." << endl; } const Setting& root = cfg.getRoot(); // Output a list of all books in the inventory. try { const Setting &books = root["inventory"]["books"]; int count = books.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(30) << left << "AUTHOR" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &book = books[i]; // Only output the record if all of the expected fields are present. string title, author; double price; int qty; if(!(book.lookupValue("title", title) && book.lookupValue("author", author) && book.lookupValue("price", price) && book.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(30) << left << author << " " << '$' << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } // Output a list of all books in the inventory. try { const Setting &movies = root["inventory"]["movies"]; int count = movies.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(10) << left << "MEDIA" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &movie = movies[i]; // Only output the record if all of the expected fields are present. string title, media; double price; int qty; if(!(movie.lookupValue("title", title) && movie.lookupValue("media", media) && movie.lookupValue("price", price) && movie.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(10) << left << media << " " << '$' << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } return(EXIT_SUCCESS); } // eof 2-02-11 19:03:15 +0000'>2012-02-11Fix typo in bugclose changelogJonathan McCrohan1-1/+1 2012-02-11Fix typo in libconfig++dev.examplesJonathan McCrohan1-3/+3 2012-02-11Update changelog.Jonathan McCrohan1-2/+5 2012-02-11Remove forced install of examples in rules.Jonathan McCrohan1-2/+2 2012-02-11Fix Examples.Jonathan McCrohan6-34/+17 2012-02-11Remove makefile.Jonathan McCrohan1-7/+0 2012-02-11Move *.docs, *.install and *.examples to -dev.Jonathan McCrohan7-2/+2 2012-02-11Move to single -dev package.Jonathan McCrohan2-14/+12 2012-02-08Update package changelog.Jonathan McCrohan1-1/+1 2012-02-08Partial manual revert of move to libconfig*8.Jonathan McCrohan4-12/+12 2012-02-08Add my name to debian copyright.Jonathan McCrohan1-2/+3 2012-02-08Atomic commit. Rollback to libconfig8 packaging names.Jonathan McCrohan10-8/+8 2012-02-07Rename libconfig9 to libconfig8 to aid release teamJonathan McCrohan1-14/+14 2012-02-07Fix "closes typo"Jonathan McCrohan1-1/+1 2012-02-07Revert "Add symbols"Jonathan McCrohan3-739/+1 2012-02-07Revert "Fix b0rked symbol file."Jonathan McCrohan1-1/+1 2012-02-07Revert "Second attempt"Jonathan McCrohan2-0/+194 2012-01-29Second attemptJonathan McCrohan2-194/+0 2012-01-29Fix b0rked symbol file.Jonathan McCrohan1-1/+1 2012-01-29Add symbolsJonathan McCrohan3-1/+739 2012-01-26add examples properlyJonathan McCrohan1-0/+2 2012-01-26Update changelogJonathan McCrohan1-3/+6 2012-01-26fix typoJonathan McCrohan1-1/+1 2012-01-26fix accidental description changesJonathan McCrohan1-2/+2 2012-01-26more fucking around to please lintianJonathan McCrohan1-5/+2 2012-01-25Linitan fixesJonathan McCrohan2-3/+2 2012-01-25Split out debug packagesJonathan McCrohan2-1/+6 2011-12-31Fix debian/rulesJonathan McCrohan1-1/+1 2011-12-31Remove shlibsJonathan McCrohan1-2/+0 2011-12-31Remove NMU from changelogJonathan McCrohan1-1/+0 2011-12-31Lintian FixesJonathan McCrohan1-2/+4 2011-12-31Remove Makefile patchJonathan McCrohan1-1/+0 2011-12-31Update MakefilesJonathan McCrohan10-248/+8222 2011-12-31Updated makefilesJonathan McCrohan1-0/+1