Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 0574b44b887114c5912824c1fbcee654 > files > 2549

apbs-doc-1.2.1-3.fc14.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>APBS: APBS Programmers Guide</title>
<link href="apbs.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.7.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li class="current"><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="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>APBS Programmers Guide</h1>
<p>
<h3 align="center">1.2 </h3><center></center><p>
<center> APBS was written by Nathan A. Baker.<br>
 Additional contributing authors listed in the code documentation. </center><p>
<hr>
 <h2><a class="anchor" name="toc">
Table of Contents</a></h2>
<ul>
<li>
<a class="el" href="index.html#style">Programming Style</a> </li>
<li>
<a class="el" href="index.html#api">Application programming interface documentation</a> <ul>
<li>
<a href="modules.html">Modules</a> </li>
<li>
<a href="annotated.html">Class list</a> </li>
<li>
<a href="functions.html">Class members</a> </li>
<li>
<a href="globals.html">Class methods</a> </li>
</ul>
</li>
</ul>
<p>
<hr>
 <h2><a class="anchor" name="license">
License</a></h2>
Primary author: <a href="http://agave.wustl.edu/">Nathan A. Baker</a> (<a href="mailto:baker@biochem.wustl.edu">baker@biochem.wustl.edu</a>)<br>
 Department of Biochemistry and Molecular Biophysics<br>
 Center for Computational Biology<br>
 Washington University in St. Louis<br>
 Additional contributing authors are listed in the code documentation.<br>
<p>
Copyright (c) 2002-2009, Washington University in St. Louis. Portions Copyright (c) 2002-2009. Nathan A. Baker Portions Copyright (c) 1999-2002. The Regents of the University of California. Portions Copyright (c) 1995. Michael Holst<p>
All rights reserved.<p>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:<p>
<ul>
<li>
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.<p>
</li>
<li>
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.<p>
</li>
<li>
Neither the name of Washington University in St. Louis nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. </li>
</ul>
<p>
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<p>
<hr>
 <p>
This documentation provides information about the programming interface provided by the APBS software and a general guide to linking to the APBS libraries. Information about installation, configuration, and general usage can be found in the <a href="user.html">User's Guide</a>. <hr>
<h2><a class="anchor" name="style">
Programming Style</a></h2>
APBS was developed following the <a href="http://scicomp.ucsd.edu/~mholst/codes/maloc/cleanc.html">Clean OO C</a> style of Mike Holst. In short, Clean OO C code is written in a object-oriented, ISO C-compliant fashion, and can be compiled with either a C or C++ compiler. <p>
Following this formalism, all public data is enclosed in structures which resemble C++ classes. These structures and member functions are then declared in a public header file which provides a concise description of the interface for the class. Private functions and data are included in private header files (or simply the source code files themselves) which are not distributed. When using the library, the end-user only sees the public header file and the compiled library and is therefore (hopefully) oblivious to the private members and functions. Each class is also equipped with a constructor and destructor function which is responsible for allocating and freeing any memory required by the instatiated objects.<p>
As mentioned above, public data members are enclosed in C structures which are visible to the end-user. Public member functions are generated by mangling the class and function names <em>and</em> passing a pointer to the object on which the member function is supposed to act. For example, a public member function with the C++ declaration <pre>
   public double Foo::bar(int i, double d)
   </pre> would be declared as <pre>
   double Foo_bar(Foo *thee, int i, double d)
   </pre> where <code>VEXTERNC</code> is a compiler-dependent macro, the underscore <code>_</code> replaces the C++ double-colon <code>::</code>, and <code>thee</code> replaces the <code>this</code> variable implicit in all C++ classes. Since they do not appear in public header files, private functions could be declared in any format pleasing to the user, however, the above declaration convention should generally be used for both public and private functions. Within the source code, the public and private function declarations/definitions are prefaced by the macros <code>VPUBLIC</code> and <code>VPRIVATE</code>, respectively. These are macros which reduce global name pollution, similar to encapsulating private data withing C++ classes.<p>
The only C++ functions not explicitly covered by the above declaration scheme are the constructors (used to allocate and initialize class data members) and destructors (used to free allocated memory). These are declared in the following fashion: a constructor with the C++ declaration <pre>
    public void Foo::Foo(int i, double d)
    </pre> would be declared as <pre>
     Foo* Foo_ctor(int i, double d)
     </pre> which returns a pointer to the newly constructed <code>Foo</code> object. Likewise, a destructor declared as <pre>
     public void Foo::~Foo()
     </pre> in C++ would be <pre>
     void Foo_dtor(Foo **thee)
     </pre> in Clean OO C. <p>
Finally, inline functions in C++ are simply treated as macros in Clean OO C and declared/defined using <code>define</code> statements in the public header file. <p>
See any of the APBS header files for more information on Clean OO C programming styles.<h2><a class="anchor" name="api">
Application programming interface documentation</a></h2>
The API documentation for this code was generated by <a href="http://www.doxygen.org">doxygen</a>. You can either view the API documentation by using the links at the top of this page, or the slight re-worded/re-interpreted list below: <ul>
<li>
<a href="modules.html">Class overview</a> </li>
<li>
<a href="annotated.html">Class declarations</a> </li>
<li>
<a href="functions.html">Class members</a> </li>
<li>
<a href="globals.html">Class methods</a> </li>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 06:23:49 2009 for APBS by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.7.1 </small></address>
</body>
</html>