Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 1221

mpqc-2.1.2-4mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>keyval.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:37 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</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; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>keyval.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// keyval.h</font>
00003 <font class="comment">//</font>
00004 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font>
00005 <font class="comment">//</font>
00006 <font class="comment">// Author: Curtis Janssen &lt;cljanss@limitpt.com&gt;</font>
00007 <font class="comment">// Maintainer: LPS</font>
00008 <font class="comment">//</font>
00009 <font class="comment">// This file is part of the SC Toolkit.</font>
00010 <font class="comment">//</font>
00011 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font>
00012 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font>
00013 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font>
00014 <font class="comment">// any later version.</font>
00015 <font class="comment">//</font>
00016 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font>
00017 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00018 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</font>
00019 <font class="comment">// GNU Library General Public License for more details.</font>
00020 <font class="comment">//</font>
00021 <font class="comment">// You should have received a copy of the GNU Library General Public License</font>
00022 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to</font>
00023 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font>
00024 <font class="comment">//</font>
00025 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font>
00026 <font class="comment">//</font>
00027 
00028 <font class="preprocessor">#ifndef _util_keyval_keyval_h</font>
00029 <font class="preprocessor"></font><font class="preprocessor">#define _util_keyval_keyval_h</font>
00030 <font class="preprocessor"></font><font class="preprocessor">#ifdef __GNUG__</font>
00031 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font>
00032 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00033 <font class="preprocessor"></font>
00034 <font class="preprocessor">#include &lt;iostream&gt;</font>
00035 <font class="preprocessor">#include &lt;string.h&gt;</font>
00036 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
00037 <font class="preprocessor">#include &lt;stdarg.h&gt;</font>
00038 
00039 <font class="preprocessor">#include &lt;util/container/avlmap.h&gt;</font>
00040 <font class="preprocessor">#include &lt;util/class/class.h&gt;</font>
00041 <font class="preprocessor">#include &lt;util/keyval/keyvalval.h&gt;</font>
00042 
00043 <font class="keyword">namespace </font>sc {
00044 
00045 <font class="keyword">class </font>KeyValKeyword {
00046   <font class="keyword">private</font>:
00047     <font class="keywordtype">char</font>* keyword_;
00048   <font class="keyword">public</font>:
00049     KeyValKeyword();
00050     KeyValKeyword(<font class="keyword">const</font> <font class="keywordtype">char</font>* name);
00051     KeyValKeyword(<font class="keyword">const</font> KeyValKeyword&amp;);
00052     ~KeyValKeyword();
00053     KeyValKeyword&amp; operator=(<font class="keyword">const</font> KeyValKeyword&amp;);
00054     <font class="keywordtype">int</font> operator==(<font class="keyword">const</font> KeyValKeyword&amp; ck) <font class="keyword">const</font>;
00055     <font class="keywordtype">int</font> operator&lt;(<font class="keyword">const</font> KeyValKeyword&amp; ck) <font class="keyword">const</font>;
00056     <font class="keywordtype">int</font> hash() <font class="keyword">const</font>;
00057     <font class="keyword">inline</font> <font class="keywordtype">int</font> cmp(<font class="keyword">const</font> KeyValKeyword&amp;ck)<font class="keyword"> const</font>
00058 <font class="keyword">    </font>{
00059       <font class="keywordflow">if</font> (!keyword_) {
00060           <font class="keywordflow">if</font> (!ck.keyword_) <font class="keywordflow">return</font> 0;
00061           <font class="keywordflow">return</font> -1;
00062         }
00063       <font class="keywordflow">if</font> (!ck.keyword_) <font class="keywordflow">return</font> 1;
00064       <font class="keywordflow">return</font> strcmp(keyword_,ck.keyword_);
00065     }
00066     <font class="keyword">inline</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* name()<font class="keyword"> const </font>{<font class="keywordflow">return</font> keyword_;}
00067   };
00068 
<a name="l00091"></a><a class="code" href="class_sc__KeyVal.html">00091</a> <font class="keyword">class </font>KeyVal: <font class="keyword">public</font> RefCount {
00092     <font class="comment">// these classes need to directly access the key_value member</font>
00093     <font class="keyword">friend</font> <font class="keyword">class </font>AggregateKeyVal;
00094     <font class="keyword">friend</font> <font class="keyword">class </font>PrefixKeyVal;
00095   <font class="keyword">public</font>:
00096     <font class="keyword">enum</font> {MaxKeywordLength = 256};
00097     <font class="keyword">enum</font> KeyValError { OK, HasNoValue, WrongType,
00098                        UnknownKeyword, OperationFailed };
00099   <font class="keyword">private</font>:
00100     KeyValError errcod;
00101     <font class="comment">// do not allow a copy constructor or assignment</font>
00102     KeyVal(<font class="keyword">const</font> KeyVal&amp;);
00103     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> KeyVal&amp;);
00104   <font class="keyword">protected</font>:
00105     <font class="keywordtype">int</font> verbose_;
00106 
00107     KeyVal();
00108 
00110     <font class="keywordtype">void</font> <a class="code" href="class_sc__KeyVal.html#b1">seterror</a>(KeyValError err);
00112     <font class="keywordtype">void</font> <a class="code" href="class_sc__KeyVal.html#b1">seterror</a>(KeyValValue::KeyValValueError err);
00113 
00115     <font class="keyword">virtual</font> <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#b3">key_exists</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*) = 0;
00117     <font class="keyword">virtual</font> <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#b4">key_count</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* =0);
00119     <font class="keyword">virtual</font> Ref&lt;KeyValValue&gt; <a class="code" href="class_sc__KeyVal.html#b5">key_value</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,
00120                                      <font class="keyword">const</font> KeyValValue&amp; def) = 0;
00122     <font class="keyword">virtual</font> <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#b6">key_booleanvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> KeyValValue&amp; def);
00124     <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#b7">key_doublevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00126     <font class="keyword">virtual</font> <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#b8">key_floatvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00128     <font class="keyword">virtual</font> <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#b9">key_charvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00130     <font class="keyword">virtual</font> <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#b10">key_intvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00132     <font class="keyword">virtual</font> size_t <a class="code" href="class_sc__KeyVal.html#b11">key_sizevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00134     <font class="keyword">virtual</font> <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#b12">key_pcharvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keyword">const</font> KeyValValue&amp; def);
00136     <font class="keyword">virtual</font> Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#b13">key_describedclassvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,
00137                                                       <font class="keyword">const</font> KeyValValue&amp; def);
00138 
00139   <font class="keyword">public</font>:
00140     <font class="keyword">virtual</font> ~KeyVal();
00141 
00142     <font class="comment">// For nonindexed things.   If a subclass defines one of these,</font>
00143     <font class="comment">// then the overloaded functions will be hidden.  The key_... functions</font>
00144     <font class="comment">// should be overridden instead.</font>
00145 
00148     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a1">exists</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00153     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a2">count</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* =0);
00155     Ref&lt;KeyValValue&gt; <a class="code" href="class_sc__KeyVal.html#a3">value</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* = 0,
00156                          <font class="keyword">const</font> KeyValValue&amp; def=KeyValValue());
00158     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a4">booleanvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00159                         <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueboolean());
00161     <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#a5">doublevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00162                        <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuedouble());
00164     <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#a6">floatvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00165                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuefloat());
00167     <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#a7">charvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00168                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuechar());
00170     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a8">intvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00171                     <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueint());
00173     size_t <a class="code" href="class_sc__KeyVal.html#a9">sizevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00174                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuesize());
00177     <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a10">pcharvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00178                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuepchar());
00180     Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#a11">describedclassvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key = 0,
00181                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueRefDescribedClass());
00182 
00183     <font class="comment">// For vectors:</font>
00184     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a1">exists</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>);
00185     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a2">count</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>);
00186     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a4">booleanvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,
00187                         <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueboolean());
00188     <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#a5">doublevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00189                        <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuedouble());
00190     <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#a6">floatvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00191                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuefloat());
00192     <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#a7">charvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00193                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuechar());
00194     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a8">intvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00195                     <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueint());
00196     size_t <a class="code" href="class_sc__KeyVal.html#a9">sizevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00197                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuesize());
00198     <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a10">pcharvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00199                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuepchar());
00200     Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#a11">describedclassvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,
00201                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueRefDescribedClass());
00202 
00203     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a1">exists</a>(<font class="keywordtype">int</font> i);
00204     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a2">count</a>(<font class="keywordtype">int</font> i);
00205     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a4">booleanvalue</a>(<font class="keywordtype">int</font> i,
00206                         <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueboolean());
00207     <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#a5">doublevalue</a>(<font class="keywordtype">int</font> i,
00208                        <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuedouble());
00209     <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#a6">floatvalue</a>(<font class="keywordtype">int</font> i,
00210                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuefloat());
00211     <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#a7">charvalue</a>(<font class="keywordtype">int</font> i,
00212                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuechar());
00213     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a8">intvalue</a>(<font class="keywordtype">int</font> i,
00214                     <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueint());
00215     size_t <a class="code" href="class_sc__KeyVal.html#a9">sizevalue</a>(<font class="keywordtype">int</font> i,
00216                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuesize());
00217     <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a10">pcharvalue</a>(<font class="keywordtype">int</font> i,
00218                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuepchar());
00219     Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#a11">describedclassvalue</a>(<font class="keywordtype">int</font> i,
00220                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueRefDescribedClass());
00221 
00222     <font class="comment">// For arrays:</font>
00223     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a1">exists</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00224     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a2">count</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00225     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a4">booleanvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00226                         <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueboolean());
00227     <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#a5">doublevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00228                        <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuedouble());
00229     <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#a6">floatvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00230                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuefloat());
00231     <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#a7">charvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00232                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuechar());
00233     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a8">intvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00234                     <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueint());
00235     size_t <a class="code" href="class_sc__KeyVal.html#a9">sizevalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00236                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuesize());
00237     <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a10">pcharvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00238                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuepchar());
00239     Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#a11">describedclassvalue</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,
00240                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueRefDescribedClass());
00241 
00242     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a1">exists</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j);
00243     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a2">count</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j);
00244     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a4">booleanvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00245                         <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueboolean());
00246     <font class="keywordtype">double</font> <a class="code" href="class_sc__KeyVal.html#a5">doublevalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00247                        <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuedouble());
00248     <font class="keywordtype">float</font>  <a class="code" href="class_sc__KeyVal.html#a6">floatvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00249                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuefloat());
00250     <font class="keywordtype">char</font>   <a class="code" href="class_sc__KeyVal.html#a7">charvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00251                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuechar());
00252     <font class="keywordtype">int</font>    <a class="code" href="class_sc__KeyVal.html#a8">intvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00253                     <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueint());
00254     size_t <a class="code" href="class_sc__KeyVal.html#a9">sizevalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00255                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuesize());
00256     <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a10">pcharvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00257                       <font class="keyword">const</font> KeyValValue&amp; def=KeyValValuepchar());
00258     Ref&lt;DescribedClass&gt; <a class="code" href="class_sc__KeyVal.html#a11">describedclassvalue</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j,
00259                      <font class="keyword">const</font> KeyValValue&amp; def=KeyValValueRefDescribedClass());
00260 
00261     <font class="comment">// For all else:</font>
00262     <font class="keywordtype">int</font>    Va_exists(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,...);
00263     <font class="keywordtype">int</font>    Va_count(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,...);
00264     <font class="keywordtype">int</font>    Va_booleanvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,...);
00265     <font class="keywordtype">double</font> Va_doublevalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00266     <font class="keywordtype">float</font>  Va_floatvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00267     <font class="keywordtype">char</font>   Va_charvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00268     <font class="keywordtype">int</font>    Va_intvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00269     size_t Va_sizevalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00270     <font class="keywordtype">char</font>*  Va_pcharvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00271     Ref&lt;DescribedClass&gt; Va_describedclassvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>* key,<font class="keywordtype">int</font>,...);
00272 
00274     KeyValError <a class="code" href="class_sc__KeyVal.html#a62">error</a>();
00276     <font class="keyword">const</font> <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a64">errormsg</a>(KeyValError err);
00278     <font class="keyword">const</font> <font class="keywordtype">char</font>*  <a class="code" href="class_sc__KeyVal.html#a64">errormsg</a>();
00279 
00280     <font class="keyword">virtual</font> <font class="keywordtype">void</font> errortrace(std::ostream&amp;fp=ExEnv::err0());
00281     <font class="keyword">virtual</font> <font class="keywordtype">void</font> dump(std::ostream&amp;fp=ExEnv::err0());
00282 
00284     <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__KeyVal.html#a67">print_unseen</a>(std::ostream&amp;fp=ExEnv::out0());
00288     <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__KeyVal.html#a68">have_unseen</a>();
00289 
<a name="l00291"></a><a class="code" href="class_sc__KeyVal.html#a69">00291</a>     <font class="keywordtype">void</font> <a class="code" href="class_sc__KeyVal.html#a70">verbose</a>(<font class="keywordtype">int</font> v)<font class="keyword"> </font>{ verbose_ = v; }
<a name="l00293"></a><a class="code" href="class_sc__KeyVal.html#a70">00293</a>     <font class="keywordtype">int</font> <a class="code" href="class_sc__KeyVal.html#a70">verbose</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> verbose_; }
00294 };
00295 
00296 
00297 
00298 <font class="comment">// this class allows keyval associations to be set up by the program,</font>
00299 <font class="comment">// rather than determined by an external file</font>
00300 <font class="keyword">class </font>AssignedKeyVal: <font class="keyword">public</font> KeyVal {
00301   <font class="keyword">private</font>:
00302     AVLMap&lt;KeyValKeyword,Ref&lt;KeyValValue&gt; &gt; _map;
00303     <font class="comment">// do not allow a copy constructor or assignment</font>
00304     AssignedKeyVal(<font class="keyword">const</font> AssignedKeyVal&amp;);
00305     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> AssignedKeyVal&amp;);
00306   <font class="keyword">protected</font>:
00307     <font class="keywordtype">int</font>    key_exists(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00308     Ref&lt;KeyValValue&gt; key_value(<font class="keyword">const</font> <font class="keywordtype">char</font>*,
00309                              <font class="keyword">const</font> KeyValValue&amp; def);
00310   <font class="keyword">public</font>:
00311     AssignedKeyVal();
00312     ~AssignedKeyVal();
00313 
00314     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keyword">const</font> Ref&lt;KeyValValue&gt;&amp;);
00315     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keywordtype">double</font>);
00316     <font class="keywordtype">void</font> assignboolean(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keywordtype">int</font>);
00317     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keywordtype">float</font>);
00318     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keywordtype">char</font>);
00319     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keywordtype">int</font>);
00320     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keyword">const</font> <font class="keywordtype">char</font>*);
00321     <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">char</font>*, <font class="keyword">const</font> Ref&lt;DescribedClass&gt;&amp;);
00322 
00323     <font class="keywordtype">void</font> clear();
00324 };
00325 
00326 
00327 
00328 <font class="keyword">class </font>StringKeyVal: <font class="keyword">public</font> KeyVal {
00329   <font class="keyword">private</font>:
00330     <font class="comment">// once a described class is found it is kept here so</font>
00331     <font class="comment">// multiple references to it return the same instance</font>
00332     AVLMap&lt;KeyValKeyword,Ref&lt;KeyValValue&gt; &gt; _map;
00333     <font class="comment">// do not allow a copy constructor or assignment</font>
00334     StringKeyVal(<font class="keyword">const</font> StringKeyVal&amp;);
00335     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> StringKeyVal&amp;);
00336   <font class="keyword">protected</font>:
00337     StringKeyVal();
00338     <font class="keywordtype">int</font>    key_exists(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00339     Ref&lt;KeyValValue&gt; key_value(<font class="keyword">const</font> <font class="keywordtype">char</font>*,
00340                              <font class="keyword">const</font> KeyValValue&amp; def);
00341   <font class="keyword">public</font>:
00342     <font class="keyword">virtual</font> ~StringKeyVal();
00343     <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* stringvalue(<font class="keyword">const</font> <font class="keywordtype">char</font> *) = 0;
00344     <font class="comment">// returns the name of the exact class the object at the keyword</font>
00345     <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* classname(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00346     <font class="comment">// returns a string which is the actual keyword if some sort</font>
00347     <font class="comment">// of variable substitution takes place (needed to make multiple</font>
00348     <font class="comment">// references to the same object work in input files)</font>
00349     <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font>* truekeyword(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00350 
00351     <font class="keyword">virtual</font> <font class="keywordtype">void</font> errortrace(std::ostream&amp;fp=ExEnv::err0());
00352     <font class="keyword">virtual</font> <font class="keywordtype">void</font> dump(std::ostream&amp;fp=ExEnv::err0());
00353 };
00354 
00355 <font class="keyword">class </font>AggregateKeyVal : <font class="keyword">public</font> KeyVal {
00356   <font class="keyword">private</font>:
00357     <font class="keyword">enum</font> { MaxKeyVal = 4 };
00358     Ref&lt;KeyVal&gt; kv[MaxKeyVal];
00359     Ref&lt;KeyVal&gt; getkeyval(<font class="keyword">const</font> <font class="keywordtype">char</font>*key);
00360     <font class="comment">// do not allow a copy constructor or assignment</font>
00361     AggregateKeyVal(<font class="keyword">const</font> AggregateKeyVal&amp;);
00362     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> AggregateKeyVal&amp;);
00363   <font class="keyword">protected</font>:
00364     <font class="keywordtype">int</font>    key_exists(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00365     Ref&lt;KeyValValue&gt; key_value(<font class="keyword">const</font> <font class="keywordtype">char</font>*,
00366                              <font class="keyword">const</font> KeyValValue&amp; def);
00367   <font class="keyword">public</font>:
00368     AggregateKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00369     AggregateKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00370     AggregateKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00371     AggregateKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,
00372                     <font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00373     ~AggregateKeyVal();
00374     <font class="keywordtype">void</font> errortrace(std::ostream&amp;fp=ExEnv::err0());
00375     <font class="keywordtype">void</font> dump(std::ostream&amp;fp=ExEnv::err0());
00376 };
00377 
00378 <font class="keyword">class </font>PrefixKeyVal : <font class="keyword">public</font> KeyVal {
00379   <font class="keyword">private</font>:
00380     <font class="keywordtype">char</font>* prefix;
00381     Ref&lt;KeyVal&gt; keyval;
00382     <font class="keywordtype">void</font> setup(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00383     <font class="keywordtype">int</font> getnewprefixkey(<font class="keyword">const</font> <font class="keywordtype">char</font>*key,<font class="keywordtype">char</font>*newkey);
00384     <font class="comment">// do not allow a copy constructor or assignment</font>
00385     PrefixKeyVal(<font class="keyword">const</font> PrefixKeyVal&amp;);
00386     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> PrefixKeyVal&amp;);
00387     <font class="keywordtype">int</font>    key_exists(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00388     Ref&lt;KeyValValue&gt; key_value(<font class="keyword">const</font> <font class="keywordtype">char</font>*,
00389                              <font class="keyword">const</font> KeyValValue&amp; def);
00390   <font class="keyword">public</font>:
00391     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>);
00392     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00393     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00394     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00395     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00396     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>);
00397     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00398     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00399     PrefixKeyVal(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00400     <font class="comment">// old CTOR syntax (use the above instead)</font>
00401     PrefixKeyVal(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00402     PrefixKeyVal(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>);
00403     PrefixKeyVal(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00404     PrefixKeyVal(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00405     PrefixKeyVal(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00406     ~PrefixKeyVal();
00407     <font class="keywordtype">void</font> errortrace(std::ostream&amp;fp=ExEnv::err0());
00408     <font class="keywordtype">void</font> dump(std::ostream&amp;fp=ExEnv::err0());
00409 };
00410 
00411 <font class="keyword">class </font>IPV2;
<a name="l00415"></a><a class="code" href="class_sc__ParsedKeyVal.html">00415</a> <font class="keyword">class </font>ParsedKeyVal : <font class="keyword">public</font> StringKeyVal {
00416   <font class="keyword">private</font>:
00417     <font class="keywordtype">int</font> nfile;
00418     <font class="keywordtype">char</font>**file;
00419     <font class="keywordtype">int</font> nfp;
00420     IPV2* ipv2;
00421     <font class="comment">// do not allow a copy constructor or assignment</font>
00422     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>(<font class="keyword">const</font> ParsedKeyVal&amp;);
00423     <font class="keywordtype">void</font> operator=(<font class="keyword">const</font> ParsedKeyVal&amp;);
00424   <font class="keyword">public</font>:
00426     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>();
00428     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*file);
00430     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>(std::istream&amp;s);
00433     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>(IPV2*);
00439     <a class="code" href="class_sc__ParsedKeyVal.html#a0">ParsedKeyVal</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00441     <a class="code" href="class_sc__ParsedKeyVal.html#a5">~ParsedKeyVal</a>();
00442 
00445     <font class="keyword">static</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__ParsedKeyVal.html#d0">cat_files</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*,<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;,std::ostream &amp;o);
00446 
00448     <font class="keywordtype">void</font> <a class="code" href="class_sc__ParsedKeyVal.html#a6">read</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00450     <font class="keywordtype">void</font> <a class="code" href="class_sc__ParsedKeyVal.html#a6">read</a>(std::istream&amp;);
00452     <font class="keywordtype">void</font> <a class="code" href="class_sc__ParsedKeyVal.html#a8">parse_string</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *);
00453 
00454     <font class="comment">// Overrides of parent members.</font>
00455     <font class="keyword">const</font> <font class="keywordtype">char</font>* stringvalue(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00456     <font class="keyword">const</font> <font class="keywordtype">char</font>* classname(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00457     <font class="keyword">const</font> <font class="keywordtype">char</font>* truekeyword(<font class="keyword">const</font> <font class="keywordtype">char</font>*);
00458     <font class="keywordtype">void</font> errortrace(std::ostream&amp;fp=ExEnv::err0());
00459     <font class="keywordtype">void</font> dump(std::ostream&amp;fp=ExEnv::err0());
00460     <font class="keywordtype">void</font> <a class="code" href="class_sc__ParsedKeyVal.html#a14">print_unseen</a>(std::ostream&amp;fp=ExEnv::out0());
00461     <font class="keywordtype">int</font> <a class="code" href="class_sc__ParsedKeyVal.html#a15">have_unseen</a>();
00462 };
00463 
00464 }
00465 
00466 <font class="preprocessor">#endif </font><font class="comment">/* _KeyVal_h */</font>
00467 
00468 <font class="comment">// Local Variables:</font>
00469 <font class="comment">// mode: c++</font>
00470 <font class="comment">// c-file-style: "CLJ"</font>
00471 <font class="comment">// End:</font>
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:37 2002 for <a
href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a>
2.1.2 using the documentation package <a
href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a>
1.2.5.

</small>
</address>
</body>
</html>