Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > c200d180bc1063a7706e0da42a546b51 > files > 59

atlascpp-devel-0.6.1-7.fc12.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Atlas-C++: Bach.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>Bach.h</h1><a href="_bach_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// This file may be redistributed and modified under the terms of the</span>
<a name="l00002"></a>00002 <span class="comment">// GNU Lesser General Public License (See COPYING for details).</span>
<a name="l00003"></a>00003 <span class="comment">// Copyright (C) 2000-2001 Michael Day, Stefanus Du Toit</span>
<a name="l00004"></a>00004 
<a name="l00005"></a>00005 <span class="preprocessor">#ifndef ATLAS_CODECS_BACH_H</span>
<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#define ATLAS_CODECS_BACH_H</span>
<a name="l00007"></a>00007 <span class="preprocessor"></span>
<a name="l00008"></a>00008 <span class="preprocessor">#include &lt;Atlas/Codec.h&gt;</span>
<a name="l00009"></a>00009 
<a name="l00010"></a>00010 <span class="preprocessor">#include &lt;iosfwd&gt;</span>
<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;stack&gt;</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="keyword">namespace </span>Atlas { <span class="keyword">namespace </span>Codecs {
<a name="l00014"></a>00014 
<a name="l00019"></a>00019 <span class="keyword">class </span>Bach : <span class="keyword">public</span> Codec
<a name="l00020"></a>00020 {
<a name="l00021"></a>00021   <span class="keyword">public</span>:
<a name="l00022"></a>00022 
<a name="l00023"></a>00023     Bach(std::iostream&amp; s, <a class="code" href="class_atlas_1_1_bridge.html" title="Atlas stream bridge.">Atlas::Bridge</a> &amp; b);
<a name="l00024"></a>00024 
<a name="l00025"></a>00025     <span class="keyword">virtual</span> <span class="keywordtype">void</span> poll(<span class="keywordtype">bool</span> can_read = <span class="keyword">true</span>);
<a name="l00026"></a>00026 
<a name="l00027"></a>00027     <span class="keyword">virtual</span> <span class="keywordtype">void</span> streamBegin();
<a name="l00028"></a>00028     <span class="keyword">virtual</span> <span class="keywordtype">void</span> streamMessage();
<a name="l00029"></a>00029     <span class="keyword">virtual</span> <span class="keywordtype">void</span> streamEnd();
<a name="l00030"></a>00030 
<a name="l00031"></a>00031     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapMapItem(<span class="keyword">const</span> std::string&amp; name);
<a name="l00032"></a>00032     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapListItem(<span class="keyword">const</span> std::string&amp; name);
<a name="l00033"></a>00033     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapIntItem(<span class="keyword">const</span> std::string&amp; name, <span class="keywordtype">long</span>);
<a name="l00034"></a>00034     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapFloatItem(<span class="keyword">const</span> std::string&amp; name, <span class="keywordtype">double</span>);
<a name="l00035"></a>00035     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapStringItem(<span class="keyword">const</span> std::string&amp; name, <span class="keyword">const</span> std::string&amp;);
<a name="l00036"></a>00036     <span class="keyword">virtual</span> <span class="keywordtype">void</span> mapEnd();
<a name="l00037"></a>00037 
<a name="l00038"></a>00038     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listMapItem();
<a name="l00039"></a>00039     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listListItem();
<a name="l00040"></a>00040     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listIntItem(<span class="keywordtype">long</span>);
<a name="l00041"></a>00041     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listFloatItem(<span class="keywordtype">double</span>);
<a name="l00042"></a>00042     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listStringItem(<span class="keyword">const</span> std::string&amp;);
<a name="l00043"></a>00043     <span class="keyword">virtual</span> <span class="keywordtype">void</span> listEnd();
<a name="l00044"></a>00044 
<a name="l00045"></a>00045     <span class="keywordtype">unsigned</span> linenum()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_linenum;}
<a name="l00046"></a>00046 
<a name="l00047"></a>00047   <span class="keyword">protected</span>:
<a name="l00048"></a>00048 
<a name="l00049"></a>00049     std::iostream&amp; m_socket;
<a name="l00050"></a>00050     Bridge &amp; m_bridge;
<a name="l00051"></a>00051     <span class="keywordtype">bool</span> m_comma;
<a name="l00052"></a>00052     <span class="keywordtype">unsigned</span> m_linenum;
<a name="l00053"></a>00053 
<a name="l00054"></a>00054     <span class="keyword">enum</span> State
<a name="l00055"></a>00055     {
<a name="l00056"></a>00056         PARSE_INIT,
<a name="l00057"></a>00057         PARSE_STREAM,
<a name="l00058"></a>00058         PARSE_MAP,
<a name="l00059"></a>00059         PARSE_LIST,
<a name="l00060"></a>00060         PARSE_NAME,
<a name="l00061"></a>00061         PARSE_DATA,
<a name="l00062"></a>00062         PARSE_INT,
<a name="l00063"></a>00063         PARSE_FLOAT,
<a name="l00064"></a>00064         PARSE_STRING,
<a name="l00065"></a>00065         PARSE_LITERAL, <span class="comment">// for literal character escaped with backslash</span>
<a name="l00066"></a>00066         PARSE_COMMENT <span class="comment">// for when we're in the middle of a comment field</span>
<a name="l00067"></a>00067     };
<a name="l00068"></a>00068 
<a name="l00069"></a>00069     <span class="keywordtype">bool</span> stringmode() <span class="keyword">const</span>;
<a name="l00070"></a>00070 
<a name="l00071"></a>00071     std::string m_name, m_data;
<a name="l00072"></a>00072     std::stack&lt;State&gt; m_state;
<a name="l00073"></a>00073 
<a name="l00074"></a>00074     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseInit(<span class="keywordtype">char</span>);
<a name="l00075"></a>00075     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseStream(<span class="keywordtype">char</span>);
<a name="l00076"></a>00076     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseMap(<span class="keywordtype">char</span>);
<a name="l00077"></a>00077     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseList(<span class="keywordtype">char</span>);
<a name="l00078"></a>00078     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseData(<span class="keywordtype">char</span>);
<a name="l00079"></a>00079     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseInt(<span class="keywordtype">char</span>);
<a name="l00080"></a>00080     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseFloat(<span class="keywordtype">char</span>);
<a name="l00081"></a>00081     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseString(<span class="keywordtype">char</span>);
<a name="l00082"></a>00082     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseLiteral(<span class="keywordtype">char</span>);
<a name="l00083"></a>00083     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseName(<span class="keywordtype">char</span>);
<a name="l00084"></a>00084     <span class="keyword">inline</span> <span class="keywordtype">void</span> parseComment(<span class="keywordtype">char</span>);
<a name="l00085"></a>00085 
<a name="l00086"></a>00086     <span class="keyword">inline</span> <span class="keyword">const</span> std::string encodeString(<span class="keyword">const</span> std::string &amp;);
<a name="l00087"></a>00087     <span class="keyword">inline</span> <span class="keyword">const</span> std::string decodeString(<span class="keyword">const</span> std::string &amp;);
<a name="l00088"></a>00088 
<a name="l00089"></a>00089     <span class="keywordtype">void</span> writeIntItem(<span class="keyword">const</span> std::string &amp;,<span class="keywordtype">long</span>);
<a name="l00090"></a>00090     <span class="keywordtype">void</span> writeFloatItem(<span class="keyword">const</span> std::string &amp;,<span class="keywordtype">double</span>);
<a name="l00091"></a>00091     <span class="keywordtype">void</span> writeStringItem(<span class="keyword">const</span> std::string &amp;,<span class="keyword">const</span> std::string &amp;);
<a name="l00092"></a>00092     <span class="keywordtype">void</span> writeLine(<span class="keyword">const</span> std::string &amp;,<span class="keywordtype">bool</span>=<span class="keyword">true</span>,<span class="keywordtype">bool</span>=<span class="keyword">false</span>);
<a name="l00093"></a>00093 };
<a name="l00094"></a>00094 
<a name="l00095"></a>00095 } } <span class="comment">// namespace Atlas::Codecs</span>
<a name="l00096"></a>00096 
<a name="l00097"></a>00097 <span class="preprocessor">#endif // ATLAS_CODECS_BACH_H</span>
</pre></div></div>
<HR>
<P>Copyright 2000-2004 the respective authors.</P>
<P>This document can be licensed under the terms of the GNU Free Documentation
License or the GNU General Public License and may be freely distributed under
the terms given by one of these licenses.</P>