<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--

 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

--><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Apache log4cxx: Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.6 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul></div>
<h1>MessageBuffer Member List</h1>This is the complete list of members for <a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a>, including all inherited members.<p><table>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#e82e6b5eeb965fd5e976d81d8229ab2a">hasStream</a>() const </td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#69f8f23f8485487a707a1878fb859192">MessageBuffer</a>()</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#33347b3ddd391198442fcbcac3fdef34">operator std::ostream &amp;</a>()</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#3d2c01b808d91a10a7cdff6467e82c71">operator&lt;&lt;</a>(const std::string &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#9ca29758ff2423f12b308fb38c430a56">operator&lt;&lt;</a>(const char *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#6ad3285b4584a5a4899fb7d89487fdd9">operator&lt;&lt;</a>(char *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#b3a47726f5ceb3f1117c89444780d693">operator&lt;&lt;</a>(const char msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#22a1601275fef6fed7f4a77d06010953">operator&lt;&lt;</a>(const std::wstring &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#5e1ff4cca896a88fec21ae3b5d2c4394">operator&lt;&lt;</a>(const wchar_t *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#5fbb7da62ff7dc6fca8a019525735962">operator&lt;&lt;</a>(wchar_t *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#3d2cd1179dc9b332c36a1285a2cdece2">operator&lt;&lt;</a>(const wchar_t msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#9289a85ba1cbe5bcea11534c4c4f2351">operator&lt;&lt;</a>(const std::basic_string&lt; UniChar &gt; &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#a6c38ce8484d9ed0df382b9113f5c2f3">operator&lt;&lt;</a>(const UniChar *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#ad05066e32ffb5913d98dc437f6f99fb">operator&lt;&lt;</a>(UniChar *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#a0142a55ba4a372d57d94f30d546d968">operator&lt;&lt;</a>(const UniChar msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#73ff1261f3ff1a9e11603becd7a58fd3">operator&lt;&lt;</a>(const CFStringRef &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#5cb530715570bbd2f8bd6a1add613876">operator&lt;&lt;</a>(ios_base_manip manip)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#965b98687822adfe741702f0cc0361dc">operator&lt;&lt;</a>(bool val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#4be4c8d8df33520a429b018ad697046e">operator&lt;&lt;</a>(short val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#846f833e5c441ad8960cf6b33e1c0660">operator&lt;&lt;</a>(int val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#7d023bb2e61d77a8cce1240403cbf961">operator&lt;&lt;</a>(unsigned int val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#0b55e5eb1bb2898e02aa9c821583ad1a">operator&lt;&lt;</a>(long val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#dce2fd7a79a981e0c2015e3eca80ef57">operator&lt;&lt;</a>(unsigned long val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#d6506253c113ee14ea3bbb8e79d40e96">operator&lt;&lt;</a>(float val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#e488bd82ba0ed003a685509f93c13dc2">operator&lt;&lt;</a>(double val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#6b669a21798afa6c531b6301150b5bd4">operator&lt;&lt;</a>(long double val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#4af9cd00619353bd815d3303971eb2a8">operator&lt;&lt;</a>(void *val)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#7e3b4b234ef506be5c51f099d892e01d">str</a>(CharMessageBuffer &amp;buf)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#dd83ee9da667fbb736952b3110fa2e6e">str</a>(std::ostream &amp;os)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#d1a88faf2dc74e4e1783bdcb0d343483">str</a>(WideMessageBuffer &amp;buf)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#93e56d136c0e9c0dda6c5f2491703a2c">str</a>(std::basic_ostream&lt; wchar_t &gt; &amp;os)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#e331388ef89d16174675770938bc9bd1">str</a>(UniCharMessageBuffer &amp;buf)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#1461fd0f19390f81b1586af02376f670">str</a>(UniCharMessageBuffer::uostream &amp;os)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html#e39cde93cd273c63e10610dd36a55d71">~MessageBuffer</a>()</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_message_buffer.html">MessageBuffer</a></td><td></td></tr>
</table><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
    </BODY>
</HTML>
