Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > a74ec78bdb789d910d054e3918f3f007 > files > 497

libsword1-devel-1.5.5-2mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>swlocale.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>swlocale.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
00002 <font class="comment"> *  swlocale.cpp   - implementation of Class SWLocale used for retrieval</font>
00003 <font class="comment"> *                              of locale lookups</font>
00004 <font class="comment"> *</font>
00005 <font class="comment"> * $Id: swlocale_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font>
00006 <font class="comment"> *</font>
00007 <font class="comment"> * Copyright 2000 CrossWire Bible Society (http://www.crosswire.org)</font>
00008 <font class="comment"> *      CrossWire Bible Society</font>
00009 <font class="comment"> *      P. O. Box 2528</font>
00010 <font class="comment"> *      Tempe, AZ  85280-2528</font>
00011 <font class="comment"> *</font>
00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font>
00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font>
00014 <font class="comment"> * Free Software Foundation version 2.</font>
00015 <font class="comment"> *</font>
00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font>
00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</font>
00019 <font class="comment"> * General Public License for more details.</font>
00020 <font class="comment"> *</font>
00021 <font class="comment"> */</font>
00022 
00023 <font class="preprocessor">#include &lt;swlocale.h&gt;</font>
00024 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
00025 
00026 
00027 SWLocale::SWLocale(<font class="keyword">const</font> <font class="keywordtype">char</font> * ifilename) {
00028         ConfigEntMap::iterator confEntry;
00029 
00030         name         = 0;
00031         description  = 0;
00032         bookAbbrevs  = 0;
00033         BMAX         = 0;
00034         books        = 0;
00035         localeSource = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(ifilename);
00036 
00037         confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].find(<font class="stringliteral">"Name"</font>);
00038         <font class="keywordflow">if</font> (confEntry != localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].end())
00039                 stdstr(&amp;name, (*confEntry).second.c_str());
00040         
00041         confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].find(<font class="stringliteral">"Description"</font>);
00042         <font class="keywordflow">if</font> (confEntry != localeSource-&gt;Sections[<font class="stringliteral">"Meta"</font>].end())
00043                 stdstr(&amp;description, (*confEntry).second.c_str());
00044 }
00045 
00046 
00047 SWLocale::~SWLocale() {
00048 
00049         <font class="keyword">delete</font> localeSource;
00050 
00051         <font class="keywordflow">if</font> (description)
00052                 <font class="keyword">delete</font> [] description;
00053 
00054         <font class="keywordflow">if</font> (name)
00055                 <font class="keyword">delete</font> [] name;
00056 
00057         <font class="keywordflow">if</font> (bookAbbrevs)
00058                 <font class="keyword">delete</font> [] bookAbbrevs;
00059 
00060         <font class="keywordflow">if</font> (BMAX) {
00061                 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; 2; i++)
00062                         <font class="keyword">delete</font> [] books[i];
00063                 <font class="keyword">delete</font> [] BMAX;
00064                 <font class="keyword">delete</font> [] books;
00065         }
00066 }
00067 
00068 
00069 <font class="keyword">const</font> <font class="keywordtype">char</font> *SWLocale::translate(<font class="keyword">const</font> <font class="keywordtype">char</font> *text) {
00070         LookupMap::iterator entry;
00071 
00072         entry = lookupTable.find(text);
00073 
00074         <font class="keywordflow">if</font> (entry == lookupTable.end()) {
00075                 ConfigEntMap::iterator confEntry;
00076                 confEntry = localeSource-&gt;Sections[<font class="stringliteral">"Text"</font>].find(text);
00077                 <font class="keywordflow">if</font> (confEntry == localeSource-&gt;Sections[<font class="stringliteral">"Text"</font>].end())
00078                         lookupTable.insert(LookupMap::value_type(text, text));
00079                 <font class="keywordflow">else</font>    lookupTable.insert(LookupMap::value_type(text, (*confEntry).second.c_str()));
00080                 entry = lookupTable.find(text);
00081         }
00082         <font class="keywordflow">return</font> (*entry).second.c_str();
00083 }
00084 
00085 
<a name="l00086"></a><a class="code" href="class_s_w_locale.html#a2">00086</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_locale.html#a2">SWLocale::getName</a>() {
00087         <font class="keywordflow">return</font> name;
00088 }
00089 
00090 
<a name="l00091"></a><a class="code" href="class_s_w_locale.html#a3">00091</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_locale.html#a3">SWLocale::getDescription</a>() {
00092         <font class="keywordflow">return</font> description;
00093 }
00094 
00095 
00096 <a class="code" href="class_s_w_locale.html">SWLocale</a> &amp;SWLocale::operator +=(<a class="code" href="class_s_w_locale.html">SWLocale</a> &amp;addFrom) {
00097         *localeSource += *addFrom.<a class="code" href="class_s_w_locale.html#o1">localeSource</a>;
00098         <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00099 }
00100 
00101 
00102 <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *SWLocale::getBookAbbrevs() {
00103         <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *nullstr = <font class="stringliteral">""</font>;
00104         <font class="keywordflow">if</font> (!bookAbbrevs) {
00105                 ConfigEntMap::iterator it;
00106                 <font class="keywordtype">int</font> i;
00107                 <font class="keywordtype">int</font> size = localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].size();
00108                 bookAbbrevs = <font class="keyword">new</font> <font class="keyword">struct </font>abbrev[size + 1];
00109                 <font class="keywordflow">for</font> (i = 0, it = localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].begin(); it != localeSource-&gt;Sections[<font class="stringliteral">"Book Abbrevs"</font>].end(); it++, i++) {
00110                         bookAbbrevs[i].ab = (*it).first.c_str();
00111                         bookAbbrevs[i].book = atoi((*it).second.c_str());
00112                 }
00113                 bookAbbrevs[i].ab = nullstr;
00114                 bookAbbrevs[i].book = -1;
00115         }
00116                 
00117         <font class="keywordflow">return</font> bookAbbrevs;
00118 }
00119 
00120 
00121 <font class="keywordtype">void</font> SWLocale::getBooks(<font class="keywordtype">char</font> **iBMAX, <font class="keyword">struct</font> sbook ***ibooks) {
00122         <font class="keywordflow">if</font> (!BMAX) {
00123                 BMAX = <font class="keyword">new</font> <font class="keywordtype">char</font> [2];
00124                 BMAX[0] = VerseKey::builtin_BMAX[0];
00125                 BMAX[1] = VerseKey::builtin_BMAX[1];
00126 
00127                 books = <font class="keyword">new</font> <font class="keyword">struct </font>sbook *[2];
00128                 books[0] = <font class="keyword">new</font> <font class="keyword">struct </font>sbook[BMAX[0]];
00129                 books[1] = <font class="keyword">new</font> <font class="keyword">struct </font>sbook[BMAX[1]];
00130 
00131                 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i &lt; 2; i++) {
00132                         <font class="keywordflow">for</font> (<font class="keywordtype">int</font> j = 0; j &lt; BMAX[i]; j++) {
00133                                 books[i][j] = VerseKey::builtin_books[i][j];
00134                                 books[i][j].name = translate(VerseKey::builtin_books[i][j].name);
00135                         }
00136                 }
00137         }
00138 
00139         *iBMAX  = BMAX;
00140         *ibooks = books;
00141 }
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>