https://github.com/penn-graphics-research/ziran2019
Raw File
Tip revision: 8d3d27cd17bbceab18c317820dbe595178f6312a authored by fangy14 on 06 November 2019, 07:20:57 UTC
open source
Tip revision: 8d3d27c
partio.patch
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e331c9c..3fb59cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,23 +1,23 @@
 # PARTIO SOFTWARE
 # Copyright 2010 Disney Enterprises, Inc. All rights reserved
-# 
+#
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are
 # met:
-# 
+#
 # * Redistributions of source code must retain the above copyright
 # notice, this list of conditions and the following disclaimer.
-# 
+#
 # * 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.
-# 
+#
 # * The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
 # Studios" or the names of its contributors may NOT be used to
 # endorse or promote products derived from this software without
 # specific prior written permission from Walt Disney Pictures.
-# 
+#
 # Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
 # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
@@ -39,7 +39,12 @@ SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
 ## Use verbose make file
 SET ( CMAKE_VERBOSE_MAKEFILE TRUE )
 
-
+if(POLICY CMP0003)
+  cmake_policy(SET CMP0003 NEW)
+endif()
+if(POLICY CMP0022)
+  cmake_policy(SET CMP0022 NEW)
+endif()
 
 ## project name & version
 PROJECT( partio )
@@ -80,15 +85,15 @@ EXECUTE_PROCESS(COMMAND sh -c "echo `uname`-`uname -r | cut -d'-' -f1`-`uname -m
 SET(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/${VARIANT_DIRECTORY}")
 
 ## Search for useful libraries
-find_package(GLUT REQUIRED)
-find_package(OpenGL REQUIRED)
-find_package(ZLIB)
-IF(ZLIB_FOUND)
-    ADD_DEFINITIONS (-DPARTIO_USE_ZLIB)
-    INCLUDE_DIRECTORIES ( ${ZLIB_INCLUDE_DIR} )
-ELSE(ZLIB_FOUND)
+# find_package(GLUT REQUIRED)
+# find_package(OpenGL REQUIRED)
+# find_package(ZLIB)
+# IF(ZLIB_FOUND)
+#     ADD_DEFINITIONS (-DPARTIO_USE_ZLIB)
+#     INCLUDE_DIRECTORIES ( ${ZLIB_INCLUDE_DIR} )
+# ELSE(ZLIB_FOUND)
     SET (ZLIB_LIBRARY "")
-ENDIF(ZLIB_FOUND)
+# ENDIF(ZLIB_FOUND)
 
 ## Make modules able to see partio library
 # Setup environment variable to link partio
@@ -98,9 +103,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/lib )
 
 ## Traverse subdirectories
 ADD_SUBDIRECTORY (src/lib)
-ADD_SUBDIRECTORY (src/tools)
-ADD_SUBDIRECTORY (src/py)
-ADD_SUBDIRECTORY (src/tests)
-ADD_SUBDIRECTORY (src/doc)
-
-
+#ADD_SUBDIRECTORY (src/tools)
+#ADD_SUBDIRECTORY (src/py)
+#ADD_SUBDIRECTORY (src/tests)
+#ADD_SUBDIRECTORY (src/doc)
diff --git a/src/doc/CMakeLists.txt b/src/doc/CMakeLists.txt
deleted file mode 100644
index 143725a..0000000
--- a/src/doc/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-# PARTIO SOFTWARE
-# Copyright 2010 Disney Enterprises, Inc. All rights reserved
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-# 
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 
-# * 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.
-# 
-# * The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
-# Studios" or the names of its contributors may NOT be used to
-# endorse or promote products derived from this software without
-# specific prior written permission from Walt Disney Pictures.
-# 
-# Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
-# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-# FOR A PARTICULAR PURPOSE, NONINFRINGEMENT AND TITLE ARE DISCLAIMED.
-# IN NO EVENT SHALL WALT DISNEY PICTURES, THE COPYRIGHT HOLDER 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 BASED 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 DAMAGES.
-
-find_package(Doxygen)
-IF(DOXYGEN_FOUND)
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-  FILE(GLOB (DOCUMENTED_FILES ../lib/*.h))
-  add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} 
-    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile #  ${DOCUMENTED_FILES}
-    COMMENT "Generating API documentation with Doxygen" VERBATIM)
-  add_dependencies(doc DOCUMENTED_FILES)
-  
-  ADD_CUSTOM_TARGET(${HTML_TARGET} ALL /usr/bin/doxygen ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
-  INSTALL( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION share/doc/partio )
-ENDIF(DOXYGEN_FOUND)
diff --git a/src/doc/Doxyfile.in b/src/doc/Doxyfile.in
deleted file mode 100644
index 52a1b83..0000000
--- a/src/doc/Doxyfile.in
+++ /dev/null
@@ -1,1253 +0,0 @@
-# Doxyfile 1.4.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = Partio
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-#OUTPUT_DIRECTORY       = src/doc/doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE        = English
-
-# This tag can be used to specify the encoding used in the generated output. 
-# The encoding is not always determined by the language that is chosen, 
-# but also whether or not the output is meant for Windows or non-Windows users. 
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-# forces the Windows encoding (this is the default for the Windows binary), 
-# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING   = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like the Qt-style comments (thus requiring an 
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member 
-# documentation.
-
-DETAILS_AT_TOP         = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for Java. 
-# For instance, namespaces will be presented as packages, qualified scopes 
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
-# include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = @CMAKE_CURRENT_SOURCE_DIR@/../lib \
-                       @CMAKE_CURRENT_SOURCE_DIR@
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS          = *.txt *.h *.cpp
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = @CMAKE_CURRENT_SOURCE_DIR@
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             =  @CMAKE_CURRENT_SOURCE_DIR@/figures
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default) 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.  Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           =  @CMAKE_CURRENT_SOURCE_DIR@
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a call dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable call graphs for selected 
-# functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-# generate a caller dependency graph for every global function or class method. 
-# Note that enabling this option will significantly increase the time of a run. 
-# So in most cases it will be better to enable caller graphs for selected 
-# functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_WIDTH    = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT   = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that a graph may be further truncated if the graph's 
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
-# read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/src/doc/SConscript b/src/doc/SConscript
deleted file mode 100644
index 08e7739..0000000
--- a/src/doc/SConscript
+++ /dev/null
@@ -1,75 +0,0 @@
-# PARTIO SOFTWARE
-# Copyright 2010 Disney Enterprises, Inc. All rights reserved
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-# 
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 
-# * 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.
-# 
-# * The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
-# Studios" or the names of its contributors may NOT be used to
-# endorse or promote products derived from this software without
-# specific prior written permission from Walt Disney Pictures.
-# 
-# Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
-# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-# FOR A PARTICULAR PURPOSE, NONINFRINGEMENT AND TITLE ARE DISCLAIMED.
-# IN NO EVENT SHALL WALT DISNEY PICTURES, THE COPYRIGHT HOLDER 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 BASED 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 DAMAGES.
-import os
-Import('env variant_build_abs variant_install_abs GetInstallPath')
-
-
-
-docTarget=variant_install_abs+'/doc/Partio'
-headers=['#src/lib/Partio.h']
-foo=env.Command("#src/doc/Doxyfile",
-                ["#src/doc/Doxyfile.in"]+headers,
-                "sed 's/\@CMAKE_CURRENT_SOURCE_DIR\@/src\/doc/g' src/doc/Doxyfile.in > src/doc/Doxyfile; echo OUTPUT_DIRECTORY=src/doc/doc >> src/doc/Doxyfile")
-
-                
-
-# Build doxygen if Doxyfile or headers change 
-index=env.Command('#src/doc/doc/html/index.html',  # only target file known in advance 
-foo,
-'doxygen src/doc/Doxyfile')
-
-
-env.Install(docTarget,index) # Now we need the list of files that were produced by Doxygen. 
-
-# => We have to scan the doc dir after Doxygen was run ! 
-# Luckily we can add files to scons internal dependency tree during the build phase! 
-def scanForFurtherDocFiles(target,source,env): 
-    # we do not produce any output here, instead we extend the target list # source[0] a file from the doc dir, e.g.     
-    #index.html.
-    targets=os.listdir(str(source[0].dir)) 
-    #print str(source[0].dir)
-    #print "targets "+repr(targets) 
-    # build rules for index.html are already known => remove it 
-    targets.remove("index.html") 
-    #print "setting install target for files:",targets 
-    for target in targets: env.Install(docTarget,"#src/doc/doc/html/"+target) 
-# now we use this for a command, that depends on index.html ! 
-env.Command('dummyTarget',index,scanForFurtherDocFiles) 
-
-# Doxygen will only run, if something changes, but we always want to set up 
-# install targets for all doc files, so that installed files will be updated. 
-# If dummyTarget is a build target, it will always be rebuild, since it is 
-# never generated. If it is not a Default build target, we might have to enforce 
-# building with AlwasBuild. 
-env.AlwaysBuild('dummyTarget') # For clean runs dummyTarget will not be build, so we have to clean up manually env.Clean('doc',['#/../doc/html',docTarget])
-env.Alias('doc',docTarget) 
diff --git a/src/doc/cpptut.txt b/src/doc/cpptut.txt
deleted file mode 100644
index 5921de0..0000000
--- a/src/doc/cpptut.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-/** \page cpptut C++ Tutorial
-
-Here is a simple example of some operations supported by particles. You may want
-to look at the includes demo applications and tools in the source tree to see
-more examples.
-
-<h2>Intro</h2>
-
-The C++ API is easy to use. You just need to include 
-<pre>
-#include <Partio.h>
-</pre>
-Everything Partio related is in the Partio namespace. To read a particle file in
-and print the number of particles you could do:
-<pre>
-Partio::ParticlesDataMutable* data=Partio::read("test.bgeo");
-std::cout&lt;&lt;"Number of particles "&lt;&lt;data-&gt;numParticles()&lt;&lt;std::endl;
-</pre>
-Now we could additionally print out the names of all attributes in the particle
-file as 
-<pre>
-for(int i=0;i&lt;data-&gt;numAttributes();i++){
-    Partio::ParticleAttribute attr;
-    data-&gt;attributeInfo(i,attr);
-    std::cout&lt;&lt;"attribute["&lt;&lt;i&lt;&lt;"] is "&lt;&lt;attr.name&lt;&lt;std::endl;
-}
-</pre>
-Now we could convert the data into RenderMan ptc format as
-<pre>
-Partio::write("test.ptc",*data);
-</pre>
-Whenever you are done with a particle set you need to release it as
-<pre>
-data-&gt;release();
-</pre>
-
-<h2>Simple processing</h2>
-
-Suppose we wanted to average all the positions in a particle file. We could do
-that by iterating over each particle and getting the position attribute value as
-follows:
-<pre>
-Partio::ParticleAttribute posAttr;
-if(!data-&gt;attributeInfo("position",attr)
-   || (attr.type != Partio::FLOAT && attr.type != Partio::VECTOR)
-   || attr.count != 3){
-   std::cerr&lt;&lt;"Failed to get proper position attribute"&lt;&lt;std::endl;
-}
-
-float avg[3]={0,0,0};
-
-
-for(int i=0;i&lt;data-&gt;numParticles();i++){
-    float *pos=data-&gt;data<float>(posAttr,i);
-    for(int k=0;k<3;k++) avg[k]+=pos[k];
-}
-for(int k=0;k<3;k++) pos[k]/=data-&gt;numParticles();
-std::cerr&lt;&lt;"avg "&lt;&lt;pos[0]&lt;&lt;" "&lt;&lt;pos[1]&lt;&lt;" "&lt;&lt;pos[2]<<std::endl;
-</pre>
-
-
-*/
diff --git a/src/doc/figures/circleFigure.png b/src/doc/figures/circleFigure.png
deleted file mode 100644
index 60e61b0d3933d4336e70f1032c5d368bb2fe321b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8066
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

diff --git a/src/doc/license.txt b/src/doc/license.txt
deleted file mode 100644
index d965a21..0000000
--- a/src/doc/license.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-<pre>
- PARTIO SOFTWARE
- Copyright 2010-2011 Disney Enterprises, Inc. All rights reserved
- 
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- 
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 
- * 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.
- 
- * The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
- Studios" or the names of its contributors may NOT be used to
- endorse or promote products derived from this software without
- specific prior written permission from Walt Disney Pictures.
- 
- Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
- CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
- FOR A PARTICULAR PURPOSE, NONINFRINGEMENT AND TITLE ARE DISCLAIMED.
- IN NO EVENT SHALL WALT DISNEY PICTURES, THE COPYRIGHT HOLDER 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 BASED 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 DAMAGES.
-</pre>
diff --git a/src/doc/main.txt b/src/doc/main.txt
deleted file mode 100644
index 000e18f..0000000
--- a/src/doc/main.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*! \mainpage Partio
- * 
- * Partio is a library for reading/writing/processing particle files.
- * The layout of the API is as follows. There is also a Python API
- * which you can get documentation for if you have installed partio
- * by typing "pydoc partio" or viewing the tutorial or demo apps.
- * 
- * \section demos Simple Tutorial
- *  - \subpage pytut -  Simple Python Tutorial
- *  - \subpage cpptut -  Simple C++ Tutorial
- * \section mainapi Main API pages
- *  - Partio - Namespace containing all code
- *  - Partio::read() - Read particle set from disk
- *  - Partio::write() - Write particle set to disk
- *  - Partio::readCached() - Read shared read-only version of particle set from disk
- *  - Partio::ParticlesData - Access particle data in read only way
- *  - Partio::ParticlesDataMutable - Access particle data in read/write way
- *  - Partio::ParticleAttribute - Particle attribute handle, avoids string
- lookups when reading data
- *  - Partio::ParticleIterator - Optimized read iterator
- * 
- * \section Other
- *  - \subpage license
- */
-
-/**
-\page license License
-\htmlinclude license.txt
-*/
diff --git a/src/doc/partio.tex b/src/doc/partio.tex
deleted file mode 100644
index 3b96953..0000000
--- a/src/doc/partio.tex
+++ /dev/null
@@ -1,148 +0,0 @@
-% 
-% PARTIO SOFTWARE
-% Copyright 2010 Disney Enterprises, Inc. All rights reserved
-% 
-% Redistribution and use in source and binary forms, with or without
-% modification, are permitted provided that the following conditions are
-% met:
-% 
-% * Redistributions of source code must retain the above copyright
-% notice, this list of conditions and the following disclaimer.
-% 
-% * 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.
-% 
-% * The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
-% Studios" or the names of its contributors may NOT be used to
-% endorse or promote products derived from this software without
-% specific prior written permission from Walt Disney Pictures.
-% 
-% Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
-% CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-% BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-% FOR A PARTICULAR PURPOSE, NONINFRINGEMENT AND TITLE ARE DISCLAIMED.
-% IN NO EVENT SHALL WALT DISNEY PICTURES, THE COPYRIGHT HOLDER 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 BASED 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 DAMAGES.
-
-
-\documentclass{article}
-\usepackage{graphicx}
-\usepackage{fullpage}
-\begin{document}
-\title{Partio: Tutorial and Documentation}
-\author{Andrew Selle}
-\maketitle
-
-\section{Introduction}
-
-Partio is a library for manipulating and handling particles. It is designed to be as easy to use as possible while still allowing relatively good performance.  The data model is designed to
-accomidate most particle formats in some way.
-
-\section{Data Model}
-
-Partio does not specify how data should be organized in a memory or on the file. It does have a model interface that all particle formats need to implement. This consists of three different
-levels of data access
-
-\begin{enumerate}
-\item ParticlesHeaders - Number of particles, attribute types and names
-\item ParticlesData - Read access to all data
-\item ParticlesDataMutable - Write access to all data
-\end{enumerate}
-
-Fundamentally a particle is an indexable item that has associated attributes. There can be zero or more attributes, and technically, position is not requires. On the other hand, many of the
-file formats (BGEO, GEO, PTC) require position to be present to write a useful file.
-
-\subsection{Attribute Data Types}
-
-There are three data types supported. 
-\begin{enumerate}
-\item FLOAT - Floating point data, 4 bytes per float
-\item VECTOR - Floating point data
-\item INT - Integer data type
-\end{enumerate}
-In addition each attribute is actually an array that can consist of one or more elements. A vector is a special case of a FLOAT and must have a count of 3.  This is to match a common case
-where a position is a 3 float value.  (This is modeled loosely after PDB/PDA formats). 
-
-\subsection{Attributes}
-
-Each particle set has a list of attributes that are available. Each of these attributes has a data type and a string representing the name of the attribute.  Particle attributes are
-represented by the class \verb|ParticleAttribute|.  A particle class can be queried for individual particle attributes which then become handles that allow stringless (efficient) access to
-particle attributes.
-
-\section{Python API}
-
-The python API is designed for ease of use. For speed critical applications, C++ API should be used.  Looping in python is extremely slow.  It is hoped that in the future a mapping to numpy
-might be provided to allow manipulating particles in a SIMD fashion.  Nevertheless, python API remains useful for manipulating particles
-
-To use Partio's python API first import partio as
-\begin{verbatim}
->>> import partio
-\end{verbatim}
-Help on functions that are available are shown in 
-\begin{verbatim}
->>> help(partio)
-\end{verbatim}
-
-\subsection{Creating a Particle Set}
-
-To create a particle set and add a couple of attributes one could write
-\begin{verbatim}
-particleSet=partio.create()
-P=particleSet.addAttribute("position",partio.VECTOR,3)
-V=particleSet.addAttribute("velocity",partio.VECTOR,3)
-id=particleSet.addAttribute("id",partio.INT,1)
-\end{verbatim}
-Once this is done, we could add a series of particles that form a circle
-\begin{verbatim}
-n=30
-radiansPer=2*math.pi/n
-particleSet.addParticles(n)
-for i in range(n):
-    particleSet.set(P,i,(math.cos(i*radiansPer),0,math.sin(i*radiansPer)))
-    particleSet.set(V,i,(0,0,0))
-    particleSet.set(id,i,(i,))
-\end{verbatim}
-Finally, we can write the particle file into a BGEO by writing 
-\begin{verbatim}
-partio.write("circle.bgeo",particleSet) # write uncompressed
-partio.write("circle.bgeo",particleSet,True) # write compressed
-partio.write("circle.bgeo.gz",particleSet) # write compressed
-\end{verbatim}
-We can then visualize the particle set with
-\begin{verbatim}
-partview circle.bgeo
-\end{verbatim}
-giving\\
-\includegraphics{figures/circleFigure.png}
-
-
-\subsection{Loading a particle set}
-
-Loading a particle set is relatively easy.  If you only want to know how many particles are available or what headers are available you can do
-\begin{verbatim}
->>> pHeaders=partio.readHeaders("circle.bgeo")
-\end{verbatim}
-If you want everything associated with the file
-\begin{verbatim}
->>> p=partio.read("circle.bgeo")
-\end{verbatim}
-\end{document}
-
-\subsection{Finding nearest neighbors}
-
-A KD-Tree mode is supported in partio.  To use it, you must first sort the particles into a KD-Tree. This is done with the \verb|sort()| function.  Once that is done a query can be done. The
-basic query requires a maximum distance to look for particles as well as a maximum number of particles to return. For example, we could read our circle back in and look for particles nearby
-(1,0,0) like so:
-\begin{verbatim}
-p=partio.read("circle.bgeo")
-p.sort()
-p.findNPoints((1.,0.,0.),.1,3)
-\end{verbatim}
\ No newline at end of file
diff --git a/src/doc/tutorial.txt b/src/doc/tutorial.txt
deleted file mode 100644
index 28ae291..0000000
--- a/src/doc/tutorial.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-/** \page pytut Python Tutorial
-
-<h2>Python API</h2>
-
-<p>
-The python API is designed for ease of use. For speed critical applications, C++ API should be used.  Looping in python is extremely slow.  It is hoped that in the future a mapping to numpy
-might be provided to allow manipulating particles in a SIMD fashion.
-Nevertheless, python API remains useful for manipulating particles.
-</p>
-
-To use Partio's python API first import partio as
-<pre>
-&rt;&rt;&rt; import partio
-</pre>
-Help on functions that are available are shown in 
-<pre>
-&rt;&rt;&rt; help(partio)
-</pre>
-
-
-
-<h2>Creating a Particle Set</h2>
-
-To create a particle set and add a couple of attributes one could write
-<pre>
-particleSet=partio.create()
-P=particleSet.addAttribute("position",partio.VECTOR,3)
-V=particleSet.addAttribute("velocity",partio.VECTOR,3)
-id=particleSet.addAttribute("id",partio.INT,1)
-</pre>
-Once this is done, we could add a series of particles that form a circle
-<pre>
-n=30
-radiansPer=2*math.pi/n
-particleSet.addParticles(n)
-for i in range(n):
-    particleSet.set(P,i,(math.cos(i*radiansPer),0,math.sin(i*radiansPer)))
-    particleSet.set(V,i,(0,0,0))
-    particleSet.set(id,i,(i,))
-</pre>
-Finally, we can write the particle file into a BGEO by writing 
-<pre>
-partio.write("circle.bgeo",particleSet) # write uncompressed
-partio.write("circle.bgeo",particleSet,True) # write compressed
-partio.write("circle.bgeo.gz",particleSet) # write compressed
-</pre>
-We can then visualize the particle set with
-<pre>
-partview circle.bgeo
-</pre>
-yielding the image
-\image html figures/circleFigure.png
-
-
-<h2>Loading a particle set</h2>
-
-Loading a particle set is relatively easy.  If you only want to know how many particles are available or what headers are available you can do
-<pre>
-&gt;&gt;&gt; pHeaders=partio.readHeaders("circle.bgeo")
-</pre>
-If you want everything associated with the file
-<pre>
-&gt;&gt;&gt; p=partio.read("circle.bgeo")
-</pre>
-\end{document}
-
-<h2>Finding nearest neighbors</h2>
-
-A KD-Tree mode is supported in partio.  To use it, you must first sort the particles into a KD-Tree. This is done with the \verb|sort()| function.  Once that is done a query can be done. The
-basic query requires a maximum distance to look for particles as well as a maximum number of particles to return. For example, we could read our circle back in and look for particles nearby
-(1,0,0) like so:
-<pre>
-p=partio.read("circle.bgeo")
-p.sort()
-p.findNPoints((1.,0.,0.),.1,3)
-</pre>
-*/
diff --git a/src/lib/io/BGEO.cpp b/src/lib/io/BGEO.cpp
index 23154d2..ad2643b 100644
--- a/src/lib/io/BGEO.cpp
+++ b/src/lib/io/BGEO.cpp
@@ -57,7 +57,7 @@ void writeHoudiniStr(ostream& ostream,const string& s)
 
 ParticlesDataMutable* readBGEO(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if(!*input){
         cerr<<"Partio: Unable to open file "<<filename<<endl;
         return 0;
@@ -195,7 +195,7 @@ ParticlesDataMutable* readBGEO(const char* filename,const bool headersOnly)
 
 bool writeBGEO(const char* filename,const ParticlesData& p,const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? 
         Gzip_Out(filename,ios::out|ios::binary)
         :new ofstream(filename,ios::out|ios::binary));
diff --git a/src/lib/io/BIN.cpp b/src/lib/io/BIN.cpp
index 1a570a6..b064bb3 100644
--- a/src/lib/io/BIN.cpp
+++ b/src/lib/io/BIN.cpp
@@ -76,7 +76,7 @@ typedef struct{
 
 ParticlesDataMutable* readBIN(const char* filename, const bool headersOnly){
 
-    auto_ptr<istream> input(new ifstream(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(new ifstream(filename,ios::in|ios::binary));
 
     if(!*input){
         cerr << "Partio: Unable to open file " << filename << endl;
@@ -259,7 +259,7 @@ ParticlesDataMutable* readBIN(const char* filename, const bool headersOnly){
 bool writeBIN(const char* filename,const ParticlesData& p,const bool /*compressed*/)
 {
 
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
     new ofstream(filename,ios::out|ios::binary));
 
     if (!*output) {
diff --git a/src/lib/io/GEO.cpp b/src/lib/io/GEO.cpp
index 7aa2ced..0701b30 100644
--- a/src/lib/io/GEO.cpp
+++ b/src/lib/io/GEO.cpp
@@ -109,7 +109,7 @@ string scanString(istream& input)
 
 ParticlesDataMutable* readGEO(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in));
     if(!*input){
         cerr<<"Partio: Can't open particle data file: "<<filename<<endl;
         return 0;
@@ -236,7 +236,7 @@ void writeType(ostream& output,const ParticlesData& p,const ParticleAttribute& a
 
 bool writeGEO(const char* filename,const ParticlesData& p,const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? 
         Gzip_Out(filename,ios::out)
         :new ofstream(filename,ios::out));
diff --git a/src/lib/io/MC.cpp b/src/lib/io/MC.cpp
index 7125954..e76597b 100644
--- a/src/lib/io/MC.cpp
+++ b/src/lib/io/MC.cpp
@@ -105,8 +105,8 @@ bool ReadAttrHeader(std::istream& input, Attribute_Header& attribute){
 
 int CharArrayLen(char** charArray){
     int i = 0;
-    if(charArray != false){
-        while(charArray[i] != '\0'){
+    if(charArray != nullptr){
+        while(*(charArray[i]) != '\0'){
             i++;
         }
     }
@@ -131,7 +131,7 @@ static const int HEADER_SIZE = 56;
 
 ParticlesDataMutable* readMC(const char* filename, const bool headersOnly){
 
-    std::auto_ptr<std::istream> input(Gzip_In(filename,std::ios::in|std::ios::binary));
+    std::unique_ptr<std::istream> input(Gzip_In(filename,std::ios::in|std::ios::binary));
     if(!*input){
         std::cerr << "Partio: Unable to open file " << filename << std::endl;
         return 0;
diff --git a/src/lib/io/PDA.cpp b/src/lib/io/PDA.cpp
index 13dff2d..e04f649 100644
--- a/src/lib/io/PDA.cpp
+++ b/src/lib/io/PDA.cpp
@@ -51,7 +51,7 @@ using namespace std;
 
 ParticlesDataMutable* readPDA(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if(!*input){
         cerr<<"Partio: Can't open particle data file: "<<filename<<endl;
         return 0;
@@ -143,7 +143,7 @@ ParticlesDataMutable* readPDA(const char* filename,const bool headersOnly)
 
 bool writePDA(const char* filename,const ParticlesData& p,const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? 
         Gzip_Out(filename,ios::out|ios::binary)
         :new ofstream(filename,ios::out|ios::binary));
diff --git a/src/lib/io/PDB.cpp b/src/lib/io/PDB.cpp
index 25d6f3f..50944c1 100644
--- a/src/lib/io/PDB.cpp
+++ b/src/lib/io/PDB.cpp
@@ -92,7 +92,7 @@ string GetString(istream& input,bool& error)
 template<int bits> ParticlesDataMutable* readPDBHelper(const char* filename,const bool headersOnly)
 {
 
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if(!*input){
         cerr<<"Partio: Unable to open file "<<filename<<endl;
         return 0;
@@ -175,7 +175,7 @@ template<int bits> ParticlesDataMutable* readPDBHelper(const char* filename,cons
 template<int bits>
 bool writePDBHelper(const char* filename,const ParticlesData& p,const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? 
         Gzip_Out(filename,ios::out|ios::binary)
         :new ofstream(filename,ios::out|ios::binary));
@@ -265,7 +265,7 @@ bool writePDB64(const char* filename,const ParticlesData& p,const bool compresse
 
 ParticlesDataMutable* readPDB(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if(!*input){
         cerr<<"Partio: Unable to open file "<<filename<<endl;
         return 0;
diff --git a/src/lib/io/PDC.cpp b/src/lib/io/PDC.cpp
index 6095181..0d5a8f2 100644
--- a/src/lib/io/PDC.cpp
+++ b/src/lib/io/PDC.cpp
@@ -76,7 +76,7 @@ string readName(istream& input){
 
 ParticlesDataMutable* readPDC(const char* filename, const bool headersOnly){
 
-    auto_ptr<istream> input(Gzip_In(filename,std::ios::in|std::ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,std::ios::in|std::ios::binary));
     if(!*input){
         std::cerr << "Partio: Unable to open file " << filename << std::endl;
         return 0;
@@ -128,7 +128,7 @@ ParticlesDataMutable* readPDC(const char* filename, const bool headersOnly){
 }
 
 bool writePDC(const char* filename,const ParticlesData& p,const bool compressed){
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ?
         Gzip_Out(filename,ios::out|ios::binary)
         :new std::ofstream(filename,ios::out|ios::binary));
diff --git a/src/lib/io/PRT.cpp b/src/lib/io/PRT.cpp
deleted file mode 100644
index dce542c..0000000
--- a/src/lib/io/PRT.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
-PARTIO SOFTWARE
-Copyright (c) 2011 Disney Enterprises, Inc. and Contributors,  All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-* 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.
-
-* The names "Disney", "Walt Disney Pictures", "Walt Disney Animation
-Studios" or the names of its contributors may NOT be used to
-endorse or promote products derived from this software without
-specific prior written permission from Walt Disney Pictures.
-
-Disclaimer: THIS SOFTWARE IS PROVIDED BY WALT DISNEY PICTURES AND
-CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE, NONINFRINGEMENT AND TITLE ARE DISCLAIMED.
-IN NO EVENT SHALL WALT DISNEY PICTURES, THE COPYRIGHT HOLDER 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 BASED 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 DAMAGES.
-
-Format Contributed by github user: K240
-Some Code for this format  was helped along  by referring to an implementation by  Bo Schwartzstein and ThinkBox Software   THANKS!
-Modifications from: github user: redpawfx (redpawFX@gmail.com)  and Luma Pictures  2011
-
-
-*/
-#include "../Partio.h"
-#include "PartioEndian.h"
-#include "../core/ParticleHeaders.h"
-#include <string.h>
-
-
-//#define USE_ILMHALF    // use Ilm's Half library
-#define AUTO_CASES    // auto upcase ie:position => Position
-
-#ifdef USE_ILMHALF
-#include <half.h>
-#endif
-
-#include <iostream>
-#include <fstream>
-#include <string>
-#include <memory>
-#include <zlib.h>
-
-namespace Partio{
-
-#define OUT_BUFSIZE		(4096)
-
-typedef struct FileHeadder {
-    unsigned char	magic[8];
-    unsigned int	headersize;
-    unsigned char	signature[32];
-    unsigned int	version;
-    unsigned long long numParticles;
-} PRT_File_Headder;
-
-typedef struct Channel {
-    unsigned char	name[32];
-    unsigned int	type;
-    unsigned int	arity;
-    unsigned int	offset;
-} Channel;
-
-static unsigned char magic[8] = {192, 'P', 'R', 'T', '\r', '\n', 26, '\n'};
-static unsigned char signature[32] = {
-    0x45,0x78,0x74,0x65,0x6e,0x73,0x69,0x62,0x6c,0x65,0x20,0x50,0x61,0x72,0x74,0x69,
-    0x63,0x6c,0x65,0x20,0x46,0x6f,0x72,0x6d,0x61,0x74,0x00,0x00,0x00,0x00,0x00,0x00
-    };
-
-#ifndef USE_ILMHALF
-union f_ui {
-    unsigned int ui;
-    float f;
-};
-
-static f_ui half2float[65536] = {
-#include "half2float.h"
-};
-#endif
-
-static bool read_buffer(std::istream& is, z_stream& z, char* in_buf, void* p, size_t size) {
-    z.next_out=(Bytef*)p;
-    z.avail_out=(uInt)size;
-
-    while (z.avail_out) {
-        if ( z.avail_in == 0 ) {
-            if (!is.eof()) {
-                z.next_in = (Bytef*)in_buf;
-                is.read((char*)z.next_in, OUT_BUFSIZE);
-                if (is.bad()) {
-                    std::cerr<<"read error "<<std::endl;;
-                    return false;
-                }
-                z.avail_in = (uInt)is.gcount();
-            }
-        }
-        int ret = inflate( &z, Z_BLOCK  );
-        if ( ret != Z_OK && ret != Z_STREAM_END ) {
-            std::cerr<<"Zlib error "<<z.msg<<std::endl;;
-            return false;
-        }
-    }
-    return true;
-}
-
-static bool write_buffer(std::ostream& os, z_stream& z, char* out_buf, void* p, size_t size, bool flush) {
-    z.next_in=(Bytef*)p;
-    z.avail_in=(uInt)size;
-    while (z.avail_in!=0 || flush) {
-	z.next_out = (Bytef*)out_buf;
-	z.avail_out = OUT_BUFSIZE;
-	int ret=deflate(&z,flush?Z_FINISH:Z_NO_FLUSH);
-	if (!(ret!=Z_BUF_ERROR && ret!=Z_STREAM_ERROR)) {
-            std::cerr<<"Zlib error "<<z.msg<<std::endl;;
-            return false;
-        }
-        int	generated_output=(int)(z.next_out-(Bytef*)out_buf);
-        os.write((char*)out_buf,generated_output);
-        if (ret==Z_STREAM_END) break;
-    }
-    return true;
-}
-
-
-
-ParticlesDataMutable* readPRT(const char* filename,const bool headersOnly)
-{
-    std::auto_ptr<std::istream> input(new std::ifstream(filename,std::ios::in|std::ios::binary));
-    if (!*input) {
-        std::cerr<<"Partio: Unable to open file "<<filename<<std::endl;
-        return 0;
-    }
-
-    // Use simple particle since we don't have optimized storage.
-    ParticlesDataMutable* simple=0;
-    if (headersOnly) simple=new ParticleHeaders;
-    else simple=create();
-
-    FileHeadder header;
-    input->read((char*)&header,sizeof(FileHeadder));
-
-    if (memcmp(header.magic, magic, sizeof(magic))) {
-        std::cerr<<"Partio: failed to get PRT magic"<<std::endl;
-        return 0;
-    }
-    int reserve=0;
-    int channels=0;
-    int channelsize=0;
-    read<LITEND>(*input,reserve);		// reserved
-    read<LITEND>(*input,channels);		// number of channel
-    read<LITEND>(*input,channelsize);	// size of channel
-
-    simple->addParticles((const int)header.numParticles);
-
-    std::vector<Channel> chans;
-    std::vector<ParticleAttribute> attrs;
-
-    for (int i=0; i<channels; i++) {
-        Channel ch;
-        input->read((char*)&ch, sizeof(Channel));
-        ParticleAttributeType type=NONE;
-        switch (ch.type) {
-        case 0:	// int16
-        case 1:	// int32
-        case 2:	// int64
-            type = INT;
-            break;
-        case 3:	// float16
-        case 4:	// float32
-        case 5:	// float64
-            if (ch.arity == 3)
-                type = VECTOR;
-            else
-                type = FLOAT;
-            break;
-        case 6:	// uint16
-        case 7:	// uint32
-        case 8:	// uint64
-            type = INT;
-            break;
-        case 9:	// int8
-        case 10:// uint8
-            type = INT;
-            break;
-        }
-        if (type != NONE) {
-#ifdef AUTO_CASES
-            if (ch.name[0] >= 'A' && ch.name[0] <= 'Z') {
-                ch.name[0] += 0x20;
-            }
-#endif
-            std::string name((char*)ch.name);
-            ParticleAttribute attrHandle=simple->addAttribute(name.c_str(),type,ch.arity);
-            chans.push_back(ch);
-            attrs.push_back(attrHandle);
-        }
-    }
-
-    if (headersOnly) return simple;
-
-    z_stream z;
-    z.zalloc = Z_NULL;z.zfree = Z_NULL;z.opaque = Z_NULL;
-    if (inflateInit( &z ) != Z_OK) {
-        std::cerr<<"Zlib inflateInit error"<<std::endl;
-        return 0;
-    }
-
-    char in_buf[OUT_BUFSIZE];
-    z.next_in = 0;
-    z.avail_in = 0;
-
-    for (unsigned int particleIndex=0;particleIndex<(unsigned int )simple->numParticles();particleIndex++) {
-        for (unsigned int attrIndex=0;attrIndex<attrs.size();attrIndex++) {
-            if (attrs[attrIndex].type==Partio::INT) {
-                int* data=simple->dataWrite<int>(attrs[attrIndex],particleIndex);
-                for (int count=0;count<attrs[attrIndex].count;count++) {
-                    int ival = 0;
-                    switch (chans[attrIndex].type) {
-                    case 0:	// int16
-                        {
-                            short val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(short));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 1:	// int32
-                        {
-                            read_buffer(*input, z, (char*)in_buf, &ival, sizeof(int));
-                        }
-                        break;
-                    case 2:	// int64
-                        {
-                            long long val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(long long));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 6:	// uint16
-                        {
-                            unsigned short val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(unsigned short));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 7:	// uint32
-                        {
-                            unsigned int val;
-                            read_buffer(*input, z, (char*)in_buf,  &val, sizeof(unsigned int));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 8:	// uint64
-                        {
-                            unsigned long long val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(unsigned long long));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 9:	// int8
-                        {
-                            char val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(char));
-                            ival = (int)val;
-                        }
-                        break;
-                    case 10:// uint8
-                        {
-                            unsigned char val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(unsigned char));
-                            ival = (int)val;
-                        }
-                        break;
-                    }
-                    data[count]=ival;
-                }
-            }else if (attrs[attrIndex].type==Partio::FLOAT || attrs[attrIndex].type==Partio::VECTOR) {
-                float* data=simple->dataWrite<float>(attrs[attrIndex],particleIndex);
-                for (int count=0;count<attrs[attrIndex].count;count++) {
-                    float fval;
-                    switch (chans[attrIndex].type) {
-                    case 3:	// float16
-                        {
-#ifdef USE_ILMHALF
-                            half val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(half));
-                            fval = (float)(val);
-#else
-                            unsigned short val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(val));
-                            fval = half2float[val].f;
-#endif
-                        }
-                        break;
-                    case 4:	// float32
-                        {
-                            read_buffer(*input, z, (char*)in_buf, &fval, sizeof(float));
-                        }
-                        break;
-                    case 5:	// float64
-                        {
-                            double val;
-                            read_buffer(*input, z, (char*)in_buf, &val, sizeof(double));
-                            fval = (float)val;
-                        }
-                        break;
-                    }
-                    data[count]=fval;
-                }
-            }
-		}
-	}
-    if (inflateEnd( &z ) != Z_OK) {
-        std::cerr<<"Zlib inflateEnd error"<<std::endl;
-        return 0;
-    }
-
-    // success
-    return simple;
-}
-
-bool writePRT(const char* filename,const ParticlesData& p,const bool /*compressed*/)
-{
-	/// Krakatoa pukes on 0 particle files for some reason so don't export at all....
-    int numParts = p.numParticles();
-    if (numParts)
-    {
-        std::auto_ptr<std::ostream> output(
-        new std::ofstream(filename,std::ios::out|std::ios::binary));
-
-        if (!*output) {
-            std::cerr<<"Partio Unable to open file "<<filename<<std::endl;
-            return false;
-        }
-
-        FileHeadder header;
-        memcpy(header.magic, magic, sizeof(magic));
-        memcpy(header.signature, signature, sizeof(signature));
-        header.headersize = 0x38;
-        header.version = 1;
-        header.numParticles = p.numParticles();
-        int reserve = 4;
-        output->write((char*)&header,sizeof(FileHeadder));
-        write<LITEND>(*output, reserve);
-        write<LITEND>(*output, (int)p.numAttributes());
-            reserve = 0x2c;
-        write<LITEND>(*output, reserve);
-
-        std::vector<ParticleAttribute> attrs;
-        int offset = 0;
-        for (int i=0;i<p.numAttributes();i++) {
-            ParticleAttribute attr;
-            p.attributeInfo(i,attr);
-            Channel ch;
-            memset(&ch, 0, sizeof(Channel));
-                    memcpy((char*)ch.name, attr.name.c_str(), attr.name.size());
-            ch.offset = offset;
-            switch (attr.type) {
-            case FLOAT: ch.type=4; ch.arity=attr.count; offset += sizeof(float)*attr.count; break;
-            case INT: ch.type=1; ch.arity=attr.count; offset += sizeof(int)*attr.count; break;
-            case VECTOR: ch.type=4; ch.arity=attr.count; offset += sizeof(float)*attr.count; break;
-			case INDEXEDSTR:; break;
-            case NONE:;break;
-            }
-            if (ch.arity) {
-    #ifdef AUTO_CASES
-                if (ch.name[0] >= 'a' && ch.name[0] <= 'z') {
-                    ch.name[0] -= 0x20;
-                }
-    #endif
-                output->write((char*)&ch,sizeof(Channel));
-                attrs.push_back(attr);
-            }
-        }
-
-        z_stream z;
-        z.zalloc = Z_NULL;z.zfree = Z_NULL;z.opaque = Z_NULL;
-        if (deflateInit( &z, Z_DEFAULT_COMPRESSION ) != Z_OK) {
-            std::cerr<<"Zlib deflateInit error"<<std::endl;
-            return false;
-        }
-
-        char out_buf[OUT_BUFSIZE+10];
-        for (int particleIndex=0;particleIndex<p.numParticles();particleIndex++) {
-            for (unsigned int attrIndex=0;attrIndex<attrs.size();attrIndex++) {
-                if (attrs[attrIndex].type==Partio::INT) {
-                    const int* data=p.data<int>(attrs[attrIndex],particleIndex);
-                    if (!write_buffer(*output, z, (char*)out_buf, (void*)data, sizeof(int)*attrs[attrIndex].count, false))
-                        return false;
-                } else if (attrs[attrIndex].type==Partio::FLOAT || attrs[attrIndex].type==Partio::VECTOR) {
-                    const float* data=p.data<float>(attrs[attrIndex],particleIndex);
-                    if (!write_buffer(*output, z, (char*)out_buf, (void*)data, sizeof(int)*attrs[attrIndex].count, false))
-                        return false;
-                }
-            }
-        }
-        write_buffer(*output, z, (char*)out_buf, 0, 0, true);
-        if (deflateEnd( &z ) != Z_OK) {
-            std::cerr<<"Zlib deflateEnd error"<<std::endl;
-            return false;
-        }
-        // success
-    }// end if numParticles > 0
-    return true;
-}
-
-}
-
diff --git a/src/lib/io/PTC.cpp b/src/lib/io/PTC.cpp
index 667a17f..5a0675b 100644
--- a/src/lib/io/PTC.cpp
+++ b/src/lib/io/PTC.cpp
@@ -81,7 +81,7 @@ bool ParseSpec(const string& spec,string& typeName,string& name)
 
 ParticlesDataMutable* readPTC(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if(!*input){
         cerr<<"Partio: Unable to open file "<<filename<<endl;
         return 0;
@@ -237,7 +237,7 @@ bool writePTC(const char* filename,const ParticlesData& p,const bool compressed)
 {
     //ofstream output(filename,ios::out|ios::binary);
 
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? 
         Gzip_Out(filename,ios::out|ios::binary)
         :new ofstream(filename,ios::out|ios::binary));
diff --git a/src/lib/io/PTS.cpp b/src/lib/io/PTS.cpp
index 722d419..c172e5d 100644
--- a/src/lib/io/PTS.cpp
+++ b/src/lib/io/PTS.cpp
@@ -56,7 +56,7 @@ using namespace std;
 
 ParticlesDataMutable* readPTS(const char* filename,const bool headersOnly)
 {
-    auto_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
+    unique_ptr<istream> input(Gzip_In(filename,ios::in|ios::binary));
     if (!*input)
     {
         cerr<<"Partio: Can't open particle data file: "<<filename<<endl;
@@ -248,7 +248,7 @@ ParticlesDataMutable* readPTS(const char* filename,const bool headersOnly)
 /*
 bool writePTS(const char* filename,const ParticlesData& p,const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ?
         Gzip_Out(filename,ios::out|ios::binary)
         :new ofstream(filename,ios::out|ios::binary));
diff --git a/src/lib/io/ParticleIO.cpp b/src/lib/io/ParticleIO.cpp
index 1d217b0..8052b11 100644
--- a/src/lib/io/ParticleIO.cpp
+++ b/src/lib/io/ParticleIO.cpp
@@ -37,78 +37,79 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 #include "../Partio.h"
 #include "readers.h"
 
-namespace Partio{
+namespace Partio {
 using namespace std;
 
 // reader and writer code
-typedef ParticlesDataMutable* (*READER_FUNCTION)(const char*,const bool);
-typedef bool (*WRITER_FUNCTION)(const char*,const ParticlesData&,const bool);
+typedef ParticlesDataMutable* (*READER_FUNCTION)(const char*, const bool);
+typedef bool (*WRITER_FUNCTION)(const char*, const ParticlesData&, const bool);
 
-map<string,READER_FUNCTION>&
+map<string, READER_FUNCTION>&
 readers()
 {
-    static map<string,READER_FUNCTION> data;
-    static bool initialized=false;
-    if(!initialized){
-        data["bgeo"]=readBGEO;
-        data["geo"]=readGEO;
-        data["pdb"]=readPDB;
-        data["pdb32"]=readPDB32;
-        data["pdb64"]=readPDB64;
-        data["pda"]=readPDA;
-        data["mc"]=readMC;
-        data["ptc"]=readPTC;
-        data["pdc"]=readPDC;
-        data["prt"]=readPRT;
-        data["bin"]=readBIN;
-        data["pts"]=readPTS;
+    static map<string, READER_FUNCTION> data;
+    static bool initialized = false;
+    if (!initialized) {
+        data["bgeo"] = readBGEO;
+        data["geo"] = readGEO;
+        data["pdb"] = readPDB;
+        data["pdb32"] = readPDB32;
+        data["pdb64"] = readPDB64;
+        data["pda"] = readPDA;
+        data["mc"] = readMC;
+        data["ptc"] = readPTC;
+        data["pdc"] = readPDC;
+        //data["prt"]=readPRT;
+        data["bin"] = readBIN;
+        data["pts"] = readPTS;
     }
     return data;
 }
 
-map<string,WRITER_FUNCTION>&
+map<string, WRITER_FUNCTION>&
 writers()
 {
-    static map<string,WRITER_FUNCTION> data;
-    static bool initialized=false;
-    if(!initialized){
-        data["bgeo"]=writeBGEO;
-        data["geo"]=writeGEO;
-        data["pdb"]=writePDB;
-        data["pdb32"]=writePDB32;
-        data["pdb64"]=writePDB64;
-        data["pda"]=writePDA;
-        data["ptc"]=writePTC;
-        data["rib"]=writeRIB;
-        data["pdc"]=writePDC;
-        data["prt"]=writePRT;
-        data["bin"]=writeBIN;
+    static map<string, WRITER_FUNCTION> data;
+    static bool initialized = false;
+    if (!initialized) {
+        data["bgeo"] = writeBGEO;
+        data["geo"] = writeGEO;
+        data["pdb"] = writePDB;
+        data["pdb32"] = writePDB32;
+        data["pdb64"] = writePDB64;
+        data["pda"] = writePDA;
+        data["ptc"] = writePTC;
+        data["rib"] = writeRIB;
+        data["pdc"] = writePDC;
+        //data["prt"]=writePRT;
+        data["bin"] = writeBIN;
     }
     return data;
 }
 
 //! Gives extension of a file ignoring any trailing .gz
 //! i.e. for 'foo.pdb.gz' it gives 'pdb', for 'foo.pdb' it gives 'pdb'
-bool extensionIgnoringGz(const string& filename,string& ret,bool &endsWithGz)
+bool extensionIgnoringGz(const string& filename, string& ret, bool& endsWithGz)
 {
-    size_t period=filename.rfind('.');
-    endsWithGz=false;
-    if(period==string::npos){
-        cerr<<"Partio: No extension detected in filename"<<endl;
+    size_t period = filename.rfind('.');
+    endsWithGz = false;
+    if (period == string::npos) {
+        cerr << "Partio: No extension detected in filename" << endl;
         return false;
     }
-    string extension=filename.substr(period+1);
-    if(extension=="gz"){
-        endsWithGz=true;
-        size_t period2=filename.rfind('.',period-1);
-        if(period2==string::npos){
-            cerr<<"Partio: No extension detected in filename"<<endl;
+    string extension = filename.substr(period + 1);
+    if (extension == "gz") {
+        endsWithGz = true;
+        size_t period2 = filename.rfind('.', period - 1);
+        if (period2 == string::npos) {
+            cerr << "Partio: No extension detected in filename" << endl;
             return false;
         }
-        string extension2=filename.substr(period2+1,period-period2-1);
-        ret=extension2;
-    }else{
-        ret=extension;
+        string extension2 = filename.substr(period2 + 1, period - period2 - 1);
+        ret = extension2;
+    }
+    else {
+        ret = extension;
     }
     return true;
 }
@@ -119,13 +120,14 @@ read(const char* c_filename)
     string filename(c_filename);
     string extension;
     bool endsWithGz;
-    if(!extensionIgnoringGz(filename,extension,endsWithGz)) return 0;
-    map<string,READER_FUNCTION>::iterator i=readers().find(extension);
-    if(i==readers().end()){
-        cerr<<"Partio: No reader defined for extension "<<extension<<endl;
+    if (!extensionIgnoringGz(filename, extension, endsWithGz))
+        return 0;
+    map<string, READER_FUNCTION>::iterator i = readers().find(extension);
+    if (i == readers().end()) {
+        cerr << "Partio: No reader defined for extension " << extension << endl;
         return 0;
     }
-    return (*i->second)(c_filename,false);
+    return (*i->second)(c_filename, false);
 }
 
 ParticlesInfo*
@@ -134,28 +136,29 @@ readHeaders(const char* c_filename)
     string filename(c_filename);
     string extension;
     bool endsWithGz;
-    if(!extensionIgnoringGz(filename,extension,endsWithGz)) return 0;
-    map<string,READER_FUNCTION>::iterator i=readers().find(extension);
-    if(i==readers().end()){
-        cerr<<"Partio: No reader defined for extension "<<extension<<endl;
+    if (!extensionIgnoringGz(filename, extension, endsWithGz))
+        return 0;
+    map<string, READER_FUNCTION>::iterator i = readers().find(extension);
+    if (i == readers().end()) {
+        cerr << "Partio: No reader defined for extension " << extension << endl;
         return 0;
     }
-    return (*i->second)(c_filename,true);
+    return (*i->second)(c_filename, true);
 }
 
-void
-write(const char* c_filename,const ParticlesData& particles,const bool forceCompressed)
+void write(const char* c_filename, const ParticlesData& particles, const bool forceCompressed)
 {
     string filename(c_filename);
     string extension;
     bool endsWithGz;
-    if(!extensionIgnoringGz(filename,extension,endsWithGz)) return;
-    map<string,WRITER_FUNCTION>::iterator i=writers().find(extension);
-    if(i==writers().end()){
-        cerr<<"Partio: No writer defined for extension "<<extension<<endl;
+    if (!extensionIgnoringGz(filename, extension, endsWithGz))
+        return;
+    map<string, WRITER_FUNCTION>::iterator i = writers().find(extension);
+    if (i == writers().end()) {
+        cerr << "Partio: No writer defined for extension " << extension << endl;
         return;
     }
-    (*i->second)(c_filename,particles,forceCompressed || endsWithGz);
+    (*i->second)(c_filename, particles, forceCompressed || endsWithGz);
 }
 
 } // namespace Partio
diff --git a/src/lib/io/RIB.cpp b/src/lib/io/RIB.cpp
index a646e44..b82977c 100644
--- a/src/lib/io/RIB.cpp
+++ b/src/lib/io/RIB.cpp
@@ -38,7 +38,7 @@ using namespace std;
 
 bool writeRIB(const char* filename, const ParticlesData& p, const bool compressed)
 {
-    auto_ptr<ostream> output(
+    unique_ptr<ostream> output(
         compressed ? Gzip_Out(filename, ios::out | ios::binary)
         : new ofstream(filename, ios::out | ios::binary));
 
diff --git a/src/lib/io/readers.h b/src/lib/io/readers.h
index 69e11be..9bcb992 100644
--- a/src/lib/io/readers.h
+++ b/src/lib/io/readers.h
@@ -35,31 +35,31 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 #ifndef _READERS_h_
 #define _READERS_h_
 
-namespace Partio{
-ParticlesDataMutable* readBGEO(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readGEO(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPDB(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPDB32(const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPDB64(const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPDA(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readMC(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPTC(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPDC(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPRT(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readBIN(	const char* filename,const bool headersOnly);
-ParticlesDataMutable* readPTS(  const char* filename,const bool headersOnly);
+namespace Partio {
+ParticlesDataMutable* readBGEO(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readGEO(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPDB(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPDB32(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPDB64(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPDA(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readMC(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPTC(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPDC(const char* filename, const bool headersOnly);
+//ParticlesDataMutable* readPRT(	const char* filename,const bool headersOnly);
+ParticlesDataMutable* readBIN(const char* filename, const bool headersOnly);
+ParticlesDataMutable* readPTS(const char* filename, const bool headersOnly);
 
-bool writeBGEO(const char* filename,const ParticlesData& p,const bool compressed);
-bool writeGEO(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePDB(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePDB32(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePDB64(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePDA(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePTC(const char* filename,const ParticlesData& p,const bool compressed);
-bool writeRIB(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePDC(const char* filename,const ParticlesData& p,const bool compressed);
-bool writePRT(const char* filename,const ParticlesData& p,const bool compressed);
-bool writeBIN(const char* filename,const ParticlesData& p,const bool compressed);
+bool writeBGEO(const char* filename, const ParticlesData& p, const bool compressed);
+bool writeGEO(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePDB(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePDB32(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePDB64(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePDA(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePTC(const char* filename, const ParticlesData& p, const bool compressed);
+bool writeRIB(const char* filename, const ParticlesData& p, const bool compressed);
+bool writePDC(const char* filename, const ParticlesData& p, const bool compressed);
+//bool writePRT(const char* filename,const ParticlesData& p,const bool compressed);
+bool writeBIN(const char* filename, const ParticlesData& p, const bool compressed);
 }
 
 #endif
back to top