-
Notifications
You must be signed in to change notification settings - Fork 1
API documentation of OpenANN.
OpenANN/OpenANN-apidoc
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Sorry, we had to truncate this directory to 1,000 files. 109 entries were omitted from the list. | ||||
Repository files navigation
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.4"/> <title>OpenANN: Contributing</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="openann-logo-small.png"/></td> <td style="padding-left: 0.5em;"> <div id="projectname">OpenANN  <span id="projectnumber">1.1.0</span> </div> <div id="projectbrief">An open source library for artificial neural networks.</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.4 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">Contributing </div> </div> </div><!--header--> <div class="contents"> <div class="textblock"><p><b>Table</b> <b>of</b> <b>contents</b> </p> <ul> <li><a class="el" href="Contributing.html#ContributingCode">Contributing code</a></li> <li><a class="el" href="Contributing.html#Directories">Directories</a></li> <li><a class="el" href="Contributing.html#ImprovingQuality">Improving the code quality</a></li> <li><a class="el" href="Contributing.html#FAQ">FAQ</a></li> </ul> <h1><a class="anchor" id="ContributingCode"></a> Contributing code</h1> <p>We use the version control system <a href="http://git-scm.com/" target="_blank">git</a> and the repository is available on github:</p> <p><a href="https://github.com/OpenANN/OpenANN" target="_blank">https://github.com/OpenANN/OpenANN</a></p> <p>Contributing code to OpenANN usually works as follows:</p> <ul> <li>Fork the repository (you need a github account).</li> <li>Clone the repository: <div class="fragment"><div class="line">git clone [email protected]:<YourAccount>/OpenANN.git</div> </div><!-- fragment --></li> <li>Create a new branch to add new features / fixes / documentation etc.: <div class="fragment"><div class="line">git checkout -b <BranchName></div> </div><!-- fragment --></li> <li>Work on the new branch, commit and finally push your changes to your fork: <div class="fragment"><div class="line">git push origin <BranchName></div> </div><!-- fragment --></li> <li>Open a pull request to the main repository. A core developer will review and possibly merge your request.</li> </ul> <h1><a class="anchor" id="Directories"></a> Directories</h1> <ul> <li>OpenANN - Header files that are exposed to the user</li> <li>benchmarks - Standard ANN benchmarks</li> <li>cmake - CMake macros</li> <li>doc - Additional doxygen documentation files</li> <li>examples - OpenANN showcase</li> <li>lib - External libraries</li> <li>python - Python language bindings</li> <li>src - Implementation files for libopenann</li> <li>test - Contains the OpenANN test suite</li> </ul> <h1><a class="anchor" id="ImprovingQuality"></a> Improving the code quality</h1> <p>There is always a lot of work that can be done to improve the quality of code, e.g.:</p> <ul> <li>Writing unit tests: check out the test directory to see how it works</li> <li>Writing documentation: more API documentation, guides, how-tos, ...</li> <li>Checking for memory leaks, access of unallocated memory, etc. with <a href="http://valgrind.org/" target="_blank">Valgrind</a></li> <li>Adding more checks and asserts (note that these checks must not affect the performance of the code)</li> <li>Profiling and optimizing code for performance</li> </ul> <p>Those tasks are great entry points to contribute to the library and we are glad to receive any improvements.</p> <h1><a class="anchor" id="CodingStyle"></a> Coding Style</h1> <p>We have a <a href="https://github.com/OpenANN/OpenANN/wiki/Coding-Style" target="_blank">coding style</a>. To apply that style automatically, you can use the tool <a href="http://astyle.sourceforge.net" target="_blank">Artistic Style</a>. You can run the following command in the OpenANN main directory:</p> <pre class="fragment">astyle --options=.astylerc --recursive "OpenANN/*.h" "src/*.cpp" "examples/*.h" "examples/*.cpp" "benchmarks/*.h" "benchmarks/*.cpp" "test/*.h" "test/*.cpp" </pre><h1><a class="anchor" id="TestSuite"></a> Test Suite</h1> <p>To build the OpenANN test suite you have to build the target TestSuite: </p> <pre class="fragment">make TestSuite </pre><p> You can run the tests with </p> <pre class="fragment">test/TestSuite </pre><p> or </p> <pre class="fragment">test/TestSuite -qt </pre><p> The latter will only work if Qt and the Qt headers are installed. Usually all tests should be succesful.</p> <h1><a class="anchor" id="FAQ"></a> FAQ</h1> <h2><a class="anchor" id="FAQ1"></a> What can I do to contribute to OpenANN?</h2> <p>There is a list of open issues at our github page: <a href="https://github.com/OpenANN/OpenANN/issues?state=open" target="_blank">issues</a>.</p> <h2><a class="anchor" id="FAQ2"></a> How can I verify my contribution?</h2> <ol type="1"> <li>Write unit tests.</li> <li>Use Cppcheck:<pre class="fragment">cppcheck -q --enable=all <files> </pre>.</li> <li>Maybe add an example or a benchmark for major components like a new type of learner.</li> <li>Use valgrind to check for memory leaks etc.</li> </ol> <h2><a class="anchor" id="FAQ3"></a> How can I minimize the time that is required to switch between different build types (Debug and Release)?</h2> <p>Both build types can be maintained simultanously: </p> <div class="fragment"><div class="line">mkdir build/Debug</div> <div class="line">mkdir build/Release</div> <div class="line">cd build/Debug</div> <div class="line">cmake -D CMAKE_BUILD_TYPE:String=Debug ../..</div> <div class="line">make</div> <div class="line">cd ../Release</div> <div class="line">cmake -D CMAKE_BUILD_TYPE:String=Release ../..</div> <div class="line">make</div> </div><!-- fragment --> </div></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Wed Jul 9 2014 08:57:52 for OpenANN by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.4 </small></address> </body> </html>
About
API documentation of OpenANN.
Contributing
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published