diff --git a/build_tools/apply_license.py b/build_tools/apply_license.py deleted file mode 100644 index 2c64077..0000000 --- a/build_tools/apply_license.py +++ /dev/null @@ -1,26 +0,0 @@ -import shutil -import tempfile -import sys -import re - -rex = "@FILENAME@" - -filename = sys.argv[1] - - -fh = file("header.txt") -header = fh.read() -header_translated = re.sub(r'@FILENAME@', filename, header) -fh.close() - -f = file(filename) -lines = f.read() -f.close() - -lines = re.sub(r'(?s)/\*\+.*\+\*/','',lines) -lines = header_translated + lines - -with tempfile.NamedTemporaryFile(delete=False) as tmp_sources: - tmp_sources.write(lines) - -shutil.move(tmp_sources.name, filename) diff --git a/build_tools/gather_sources.py b/build_tools/gather_sources.py index b4fed6c..bb30185 100644 --- a/build_tools/gather_sources.py +++ b/build_tools/gather_sources.py @@ -1,11 +1,112 @@ -from git import Repo +#+ +# VIDE -- Void IDEntification pipeline -- ./build_tools/gather_sources.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ +import shutil +import tempfile +import re +from git import Repo,Tree,Blob -repo = Repo(".") +def apply_license(license, relimit, filename): + header = re.sub(r'@FILENAME@', filename, license) -assert repo.bare == False + f = file(filename) + lines = f.read() + f.close() -t = repo.tree() + lines = re.sub(relimit, '', lines) + lines = header + lines + + with tempfile.NamedTemporaryFile(delete=False) as tmp_sources: + tmp_sources.write(lines) + + shutil.move(tmp_sources.name, filename) -for entry in t.travers(): - print entry +def apply_python_license(filename): + license="""#+ +# VIDE -- Void IDEntification pipeline -- @FILENAME@ +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ +""" + + print("Shell/Python file: %s" % filename) + relimit=r'^#\+\n(#.*\n)*#\+\n' + apply_license(license, relimit, filename) + + +def apply_cpp_license(filename): + license="""/*+ + VIDE -- Void IDEntification pipeline -- @FILENAME@ + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ +""" + relimit = r'^(?s)/\*\+.*\+\*/' + print("C++ file: %s" % filename) + apply_license(license, relimit, filename) + + +def analyze_tree(prefix, t): + for ename,entry in t.items(): + if ename == 'external' or ename == 'zobov': + continue + if type(entry) == Tree: + analyze_tree(prefix + "/" + ename, entry) + elif type(entry) == Blob: + if re.match(".*\.(sh|py|pyx)$",ename) != None: + fname=prefix+"/"+ename + apply_python_license(fname) + if re.match('.*\.(cpp|hpp|h)$', ename) != None: + fname=prefix+"/"+ename + apply_cpp_license(fname) + + +if __name__=="__main__": + repo = Repo(".") + assert repo.bare == False + t = repo.tree() + analyze_tree(".", t) diff --git a/build_tools/header.txt b/build_tools/header.txt deleted file mode 100644 index fa4e972..0000000 --- a/build_tools/header.txt +++ /dev/null @@ -1,19 +0,0 @@ -/*+ - VIDE -- Void IDEntification pipeline -- @FILENAME@ - Copyright (C) 2010-2013 Guilhem Lavaux - Copyright (C) 2011-2013 Paul M. Sutter - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+*/ diff --git a/c_tools/analysis/voidOverlap.cpp b/c_tools/analysis/voidOverlap.cpp index 07e73c7..6fb3b87 100644 --- a/c_tools/analysis/voidOverlap.cpp +++ b/c_tools/analysis/voidOverlap.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/analysis/voidOverlap.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + // ============================================================================= // // Program: voidOverlap diff --git a/c_tools/libzobov/contour_pixels.cpp b/c_tools/libzobov/contour_pixels.cpp index 6aa7935..c2f8447 100644 --- a/c_tools/libzobov/contour_pixels.cpp +++ b/c_tools/libzobov/contour_pixels.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/contour_pixels.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/libzobov/contour_pixels.hpp b/c_tools/libzobov/contour_pixels.hpp index c576477..8095024 100644 --- a/c_tools/libzobov/contour_pixels.hpp +++ b/c_tools/libzobov/contour_pixels.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/contour_pixels.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef __CONTOUR_PIXELS_HPP #define __CONTOUR_PIXELS_HPP diff --git a/c_tools/libzobov/gslIntegrate.hpp b/c_tools/libzobov/gslIntegrate.hpp index 4300085..140ec81 100644 --- a/c_tools/libzobov/gslIntegrate.hpp +++ b/c_tools/libzobov/gslIntegrate.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/gslIntegrate.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef __MYGSL_INTEGRATE_HPP #define __MYGSL_INTEGRATE_HPP diff --git a/c_tools/libzobov/loadZobov.cpp b/c_tools/libzobov/loadZobov.cpp index 2d5a2ff..a1a6cbb 100644 --- a/c_tools/libzobov/loadZobov.cpp +++ b/c_tools/libzobov/loadZobov.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/loadZobov.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/libzobov/loadZobov.hpp b/c_tools/libzobov/loadZobov.hpp index 8734971..0bcf70a 100644 --- a/c_tools/libzobov/loadZobov.hpp +++ b/c_tools/libzobov/loadZobov.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/loadZobov.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef __LOAD_ZOBOV_HPP #define __LOAD_ZOBOV_HPP diff --git a/c_tools/libzobov/particleInfo.cpp b/c_tools/libzobov/particleInfo.cpp index d3eb2e8..e368eec 100644 --- a/c_tools/libzobov/particleInfo.cpp +++ b/c_tools/libzobov/particleInfo.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/particleInfo.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/libzobov/particleInfo.hpp b/c_tools/libzobov/particleInfo.hpp index f6e7a82..325be23 100644 --- a/c_tools/libzobov/particleInfo.hpp +++ b/c_tools/libzobov/particleInfo.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/particleInfo.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef _PARTICLE_INFO_HEADER_HPP #define _PARTICLE_INFO_HEADER_HPP diff --git a/c_tools/libzobov/voidTree.hpp b/c_tools/libzobov/voidTree.hpp index bb825dc..f958547 100644 --- a/c_tools/libzobov/voidTree.hpp +++ b/c_tools/libzobov/voidTree.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/libzobov/voidTree.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef _VOID_TREE_HPP #define _VOID_TREE_HPP diff --git a/c_tools/mock/generateFromCatalog.cpp b/c_tools/mock/generateFromCatalog.cpp index 0a578c0..669a850 100644 --- a/c_tools/mock/generateFromCatalog.cpp +++ b/c_tools/mock/generateFromCatalog.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/generateFromCatalog.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/generateMock.cpp b/c_tools/mock/generateMock.cpp index fb2ce29..c015749 100644 --- a/c_tools/mock/generateMock.cpp +++ b/c_tools/mock/generateMock.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/generateMock.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/generateTestMock.cpp b/c_tools/mock/generateTestMock.cpp index 9853c36..4ab3467 100644 --- a/c_tools/mock/generateTestMock.cpp +++ b/c_tools/mock/generateTestMock.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/generateTestMock.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/basic_loader.cpp b/c_tools/mock/loaders/basic_loader.cpp index a58bb10..0e346d6 100644 --- a/c_tools/mock/loaders/basic_loader.cpp +++ b/c_tools/mock/loaders/basic_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/basic_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/flash_loader.cpp b/c_tools/mock/loaders/flash_loader.cpp index 70a7493..b8b6439 100644 --- a/c_tools/mock/loaders/flash_loader.cpp +++ b/c_tools/mock/loaders/flash_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/flash_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/gadget_loader.cpp b/c_tools/mock/loaders/gadget_loader.cpp index ff7fd17..a0562d1 100644 --- a/c_tools/mock/loaders/gadget_loader.cpp +++ b/c_tools/mock/loaders/gadget_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/gadget_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/multidark_loader.cpp b/c_tools/mock/loaders/multidark_loader.cpp index 29bd0af..bd43748 100644 --- a/c_tools/mock/loaders/multidark_loader.cpp +++ b/c_tools/mock/loaders/multidark_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/multidark_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/ramses_loader.cpp b/c_tools/mock/loaders/ramses_loader.cpp index f8f1fef..a7e3a95 100644 --- a/c_tools/mock/loaders/ramses_loader.cpp +++ b/c_tools/mock/loaders/ramses_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/ramses_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/sdf_loader.cpp b/c_tools/mock/loaders/sdf_loader.cpp index 4b0f8a5..0c734b8 100644 --- a/c_tools/mock/loaders/sdf_loader.cpp +++ b/c_tools/mock/loaders/sdf_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/sdf_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include diff --git a/c_tools/mock/loaders/sdfloader_internal.hpp b/c_tools/mock/loaders/sdfloader_internal.hpp index 93635ac..fb00537 100644 --- a/c_tools/mock/loaders/sdfloader_internal.hpp +++ b/c_tools/mock/loaders/sdfloader_internal.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/sdfloader_internal.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef __VOID_SDF_LOADER_INTERNAL_HPP #define __VOID_SDF_LOADER_INTERNAL_HPP diff --git a/c_tools/mock/loaders/simulation_loader.cpp b/c_tools/mock/loaders/simulation_loader.cpp index 7751885..014ebd2 100644 --- a/c_tools/mock/loaders/simulation_loader.cpp +++ b/c_tools/mock/loaders/simulation_loader.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/simulation_loader.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #include #include #include "simulation_loader.hpp" diff --git a/c_tools/mock/loaders/simulation_loader.hpp b/c_tools/mock/loaders/simulation_loader.hpp index e0d79cb..ba8b2da 100644 --- a/c_tools/mock/loaders/simulation_loader.hpp +++ b/c_tools/mock/loaders/simulation_loader.hpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/mock/loaders/simulation_loader.hpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + #ifndef _MOCK_SIMULATION_LOADER_HPP #define _MOCK_SIMULATION_LOADER_HPP diff --git a/c_tools/stacking/pruneVoids.cpp b/c_tools/stacking/pruneVoids.cpp index 32ee656..26c2abd 100644 --- a/c_tools/stacking/pruneVoids.cpp +++ b/c_tools/stacking/pruneVoids.cpp @@ -1,3 +1,24 @@ +/*+ + VIDE -- Void IDEntification pipeline -- ./c_tools/stacking/pruneVoids.cpp + Copyright (C) 2010-2013 Guilhem Lavaux + Copyright (C) 2011-2013 P. M. Sutter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++*/ + + + // Reads in the void catalog and removes any void that could potentially // be affected by a mock particle. It does this by computing the longest // particle distance within each void and comparing it to the distance diff --git a/crossCompare/analysis/datasetsToAnalyze.py b/crossCompare/analysis/datasetsToAnalyze.py old mode 100755 new mode 100644 index 6fa1ecb..72db90b --- a/crossCompare/analysis/datasetsToAnalyze.py +++ b/crossCompare/analysis/datasetsToAnalyze.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/analysis/datasetsToAnalyze.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python diff --git a/crossCompare/analysis/mergerTree.py b/crossCompare/analysis/mergerTree.py old mode 100755 new mode 100644 index 8f63b91..4868858 --- a/crossCompare/analysis/mergerTree.py +++ b/crossCompare/analysis/mergerTree.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/analysis/mergerTree.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python # plots cumulative distributions of number counts diff --git a/crossCompare/plotting/datasetsToPlot.py b/crossCompare/plotting/datasetsToPlot.py old mode 100755 new mode 100644 index 124edff..19002cf --- a/crossCompare/plotting/datasetsToPlot.py +++ b/crossCompare/plotting/datasetsToPlot.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/plotting/datasetsToPlot.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python diff --git a/crossCompare/plotting/plotCompareDensCon.py b/crossCompare/plotting/plotCompareDensCon.py old mode 100755 new mode 100644 index 068be26..5e96dfb --- a/crossCompare/plotting/plotCompareDensCon.py +++ b/crossCompare/plotting/plotCompareDensCon.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/plotting/plotCompareDensCon.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python # plots cumulative distributions of number counts versus density contrast diff --git a/crossCompare/plotting/plotDensConVsR.py b/crossCompare/plotting/plotDensConVsR.py old mode 100755 new mode 100644 index b9e15f7..87a44e8 --- a/crossCompare/plotting/plotDensConVsR.py +++ b/crossCompare/plotting/plotDensConVsR.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/plotting/plotDensConVsR.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python # plots cumulative distributions of number counts versus density contrast diff --git a/crossCompare/plotting/plotNumberFunc.py b/crossCompare/plotting/plotNumberFunc.py old mode 100755 new mode 100644 index df85dc1..72a5616 --- a/crossCompare/plotting/plotNumberFunc.py +++ b/crossCompare/plotting/plotNumberFunc.py @@ -1,3 +1,22 @@ +#+ +# VIDE -- Void IDEntification pipeline -- ./crossCompare/plotting/plotNumberFunc.py +# Copyright (C) 2010-2013 Guilhem Lavaux +# Copyright (C) 2011-2013 P. M. Sutter +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +#+ #!/usr/bin/env python # plots cumulative distributions of number counts diff --git a/external/external_build.cmake b/external/external_build.cmake index e6b19ac..0cb3d43 100644 --- a/external/external_build.cmake +++ b/external/external_build.cmake @@ -321,7 +321,8 @@ SET(QHULL_LIBRARIES ${QHULL_CPP_LIBRARY} ${QHULL_LIBRARY} ) # Build libSDF ############### IF(SDF_SUPPORT) - SET(LIBSDF_ARCH x86_64) + SET(LIBSDF_ARCH x86_64 CACHE STRING "SDF architecture to activate") + mark_as_advanced(LIBSDF_ARCH) SET(LIBSDF_PATH ${CMAKE_SOURCE_DIR}/external/libsdf) ExternalProject_Add(libSDF @@ -329,7 +330,7 @@ IF(SDF_SUPPORT) SOURCE_DIR ${LIBSDF_PATH} CONFIGURE_COMMAND echo No configure BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} ARCH=${LIBSDF_ARCH} - INSTALL_COMMAND echo No install + INSTALL_COMMAND ${CMAKE_COMMAND} -DDEST_DIR=${CMAKE_BINARY_DIR}/ext_build/sdf -DLIBSDF_ARCH=${LIBSDF_ARCH} -DLIBSDF_PATH=${LIBSDF_PATH} -P ${CMAKE_SOURCE_DIR}/external/install_sdf.cmake BUILD_IN_SOURCE 1 ) SET(LIBSDF_INCLUDE_PATH ${LIBSDF_PATH}/include) diff --git a/external/install_sdf.cmake b/external/install_sdf.cmake new file mode 100644 index 0000000..81cb790 --- /dev/null +++ b/external/install_sdf.cmake @@ -0,0 +1,4 @@ +file(MAKE_DIRECTORY ${DEST_DIR}) +file(MAKE_DIRECTORY ${DEST_DIR}/bin) +file(INSTALL ${LIBSDF_PATH}/apps/SDFcvt/SDFcvt.${LIBSDF_ARCH} DESTINATION ${DEST_DIR}/bin PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ) +file(RENAME ${DEST_DIR}/bin/SDFcvt.${LIBSDF_ARCH} ${DEST_DIR}/bin/SDFcvt) diff --git a/external/libsdf/GNUmakefile b/external/libsdf/GNUmakefile index 5ade09d..45309fd 100644 --- a/external/libsdf/GNUmakefile +++ b/external/libsdf/GNUmakefile @@ -20,7 +20,7 @@ all: All # spell them a little differently in this file... include Make-common/Make.generic -subdirs:= libSDF libmpmy libsw +subdirs:= libSDF libmpmy libsw apps/SDFcvt All: for dir in $(subdirs); do (cd $$dir; $(MAKE) ARCH=$(ARCH) all); done diff --git a/external/libsdf/apps/SDFcvt/GNUmakefile b/external/libsdf/apps/SDFcvt/GNUmakefile new file mode 100644 index 0000000..234ff45 --- /dev/null +++ b/external/libsdf/apps/SDFcvt/GNUmakefile @@ -0,0 +1,15 @@ +TREEHOME=../.. +##### Application-specific stuff goes here + +treedir=$(TREEHOME) +programname=SDFcvt +src=SDFcvt.c + +#### end of application-specific stuff +include $(treedir)/Make-common/Make.$(ARCH) + +include $(treedir)/Make-common/Make.generic + +# DO NOT DELETE THIS LINE -- make depend depends on it. + + diff --git a/external/libsdf/apps/SDFcvt/SDFcvt.c b/external/libsdf/apps/SDFcvt/SDFcvt.c new file mode 100644 index 0000000..f236cc1 --- /dev/null +++ b/external/libsdf/apps/SDFcvt/SDFcvt.c @@ -0,0 +1,461 @@ +/* Convert SDF to ascii + Usage: + SDFcvt [-s skip][-n nrecout][-h hdrfile] [-bfv] sdffile name ... + + Not too fancy, but it should handle most SDF files, including + non-unit arrcnt. By using -s and -n is is possible to skip + to a place in the file and examine pieces of files + that would otherwise be too big to handle. We do NOT read the + whole file into memory. We process output lines one at a time, + reading one value of each of the names into memory at a time. + Thrashing is possible. We do nothing to prevent it. + + With -v it prints a potentially useful pair of header lines + starting with '#'. + + CHANGELOG: + 6/28/94: Added the FORMAT_NATIVE option, and made it the default. + This will write SDF_INTS as ints, SDF_SHORTS as shorts, etc. It's + useful for post-processing by programs that can handle mixed types, + e.g., perl, but not AVS. + + 10/18/93: Added the -S (Swapping) flag to write binary data swapped. + Use limits.h/INT_MAX instead of SunOS values.h/MAXINT. + + 8/1/93: add the AT_A_TIME construction. We no longer process lines + one at a time. Instead, we read up to AT_A_TIME to beat the + excessive overhead in each SDFrdvecs call. One of these days + I'll add a hash table to SDF's symbol-lookup functions. Until + then, reading one element at a time will be extremely slow. + + 8/20/93: added the option to produce output in binary. This is MUCH + faster. With a little luck, perl (and presumably other programs) + can read it MUCH faster too (perl uses read and unpack). + +*/ +#define AT_A_TIME 512 /* read this many values at a time */ +#include +#include +#include +#include +#include "SDF.h" +#include "protos.h" +#include "byteswap.h" +#include "error.h" +#include "Malloc.h" + +#ifndef __SUN5__ +extern int getopt(int, char**, const char *); +extern char *optarg; +extern int optind, opterr; +#endif + +#define FORMAT_FLOAT 1 +#define FORMAT_DOUBLE 2 +#define FORMAT_INT 3 +#define FORMAT_NATIVE 4 + +int binary = 0; +int format = FORMAT_NATIVE; +int swap_out = 0; + +int fwrite_maybe_swap(void *p, size_t sz, size_t n, FILE *fp){ + if( swap_out ) + Byteswap(sz, n, p, p); + return fwrite(p, sz, n, fp); +} + +void output_char(short c){ + float f; + double d; + int i; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = c; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = c; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_INT: + i = c; + fwrite_maybe_swap(&i, sizeof(i), 1, stdout); + break; + case FORMAT_NATIVE: + fwrite_maybe_swap(&c, sizeof(c), 1, stdout); + break; + } + }else{ + printf("%d", c); + } +} + +void output_short(short s){ + float f; + double d; + int i; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = s; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = s; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_INT: + i = s; + fwrite_maybe_swap(&i, sizeof(i), 1, stdout); + break; + case FORMAT_NATIVE: + fwrite_maybe_swap(&s, sizeof(s), 1, stdout); + break; + } + }else{ + printf("%d", s); + } +} + +void output_int(int i){ + float f; + double d; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = i; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = i; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_NATIVE: + case FORMAT_INT: + fwrite_maybe_swap(&i, sizeof(i), 1, stdout); + break; + } + }else{ + printf("%d", i); + } +} + +void output_long(long l){ + float f; + double d; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = l; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = l; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_NATIVE: + case FORMAT_INT: + fwrite_maybe_swap(&l, sizeof(l), 1, stdout); + break; + } + }else{ + printf("%ld", l); + } +} + +void output_int64(int64_t i64){ + float f; + double d; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = i64; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = i64; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_NATIVE: + case FORMAT_INT: + fwrite_maybe_swap(&i64, sizeof(i64), 1, stdout); + break; + } + }else{ +#if __WORDSIZE==64 + printf("%ld", i64); +#else + printf("%lld", i64); +#endif + } +} + + + +void output_float(float f){ + double d; + int i; + + if( binary ){ + switch(format){ + case FORMAT_DOUBLE: + d = f; + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + case FORMAT_NATIVE: + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_INT: + i = f; + fwrite_maybe_swap(&i, sizeof(i), 1, stdout); + break; + } + }else{ + switch(format){ + case FORMAT_DOUBLE: + printf("%.15e", f); + break; + case FORMAT_FLOAT: + case FORMAT_NATIVE: + printf("%.6e", f); + break; + case FORMAT_INT: + printf("%.0f", f); + break; + } + } +} + +void output_double(double d){ + float f; + int i; + + if( binary ){ + switch(format){ + case FORMAT_NATIVE: + case FORMAT_DOUBLE: + fwrite_maybe_swap(&d, sizeof(d), 1, stdout); + break; + case FORMAT_FLOAT: + f = d; + fwrite_maybe_swap(&f, sizeof(f), 1, stdout); + break; + case FORMAT_INT: + i = d; + fwrite_maybe_swap(&i, sizeof(i), 1, stdout); + break; + } + }else{ + switch(format){ + case FORMAT_DOUBLE: + case FORMAT_NATIVE: + printf("%.15e", d); + break; + case FORMAT_FLOAT: + printf("%.6e", d); + break; + case FORMAT_INT: + printf("%.0f", d); + break; + } + } +} + +void output_string(const char *s){ + fwrite(s, strlen(s), 1, stdout); +} + +void output_separator(void){ + if( !binary ) + putchar(' '); +} + +void output_record_terminator(void){ + if( !binary ) + putchar('\n'); +} + +int main(int argc, char **argv){ + int c; + char *fname, *hdr; + SDF *sdfp; + int64_t n, start; + int nnames, nn, i, j, k, kk; + int at_a_time; + int64_t nrecs, minnrecs, maxnrecs; + char *newname; + char **names; + void **addrs; + int *nread; + int *acnt; + int *strides; + enum SDF_type_enum *types, t; + int verbose; + + hdr = NULL; + start = 0; + n = 0; + verbose = 0; + at_a_time = 0; + while((c=getopt(argc, argv, "a:h:s:n:vbfdiS")) != -1) + switch(c){ + case 'h': + hdr = optarg; + break; + case 's': + start = atoll(optarg); + break; + case 'n': + n = atoll(optarg); + break; + case 'a': + at_a_time = atoi(optarg); + break; + case 'v': + verbose = 1; + break; + case 'b': + binary = 1; + break; + case 'f': + format = FORMAT_FLOAT; + break; + case 'S': + swap_out = 1; + break; + case 'd': + format = FORMAT_DOUBLE; + break; + case 'i': + format = FORMAT_INT; + break; + case '?': + fprintf(stderr, "Usage: %s [-s start][-n number][-a at-a-time][-v][-h hdrfile][-b][-f][-d][-i][-S] sdffile name ...\n", argv[0]); + } + + fname = argv[optind]; + optind++; + sdfp = SDFopen(hdr, fname); + if( sdfp == NULL ){ + Error("Could not SDFopen(%s, %s): %s\n", + hdr?hdr:"", + fname?fname:"", + SDFerrstring); + } + if( at_a_time == 0 ) + at_a_time = AT_A_TIME; + + nnames = argc - optind; + names = Malloc(nnames*sizeof(char*)); + addrs = Malloc(nnames*sizeof(void*)); + nread = Malloc(nnames*sizeof(int)); + types = Malloc(nnames*sizeof(enum SDF_type_enum)); + strides = Malloc(nnames*sizeof(int)); + acnt = Malloc(nnames*sizeof(int)); + + nn = 0; + minnrecs = INT64_MAX; + maxnrecs = 0; + for(; optind < argc; optind++){ + newname = argv[optind]; + if( !SDFhasname(newname, sdfp) ){ + Error("%s not in %s\n", newname, fname); + } + t = SDFtype(newname, sdfp); + acnt[nn] = SDFarrcnt(newname, sdfp); + addrs[nn] = Malloc(SDFtype_sizes[t] * acnt[nn] * at_a_time); + strides[nn] = SDFtype_sizes[t]*acnt[nn]; + names[nn] = newname; + types[nn] = t; + nrecs = SDFnrecs(newname, sdfp); + if( nrecs < minnrecs ) + minnrecs = nrecs; + if( nrecs > maxnrecs ) + maxnrecs = nrecs; + nread[nn] = at_a_time; + nn++; + } + if( n==0 ){ + n = maxnrecs - start; + } + if( start+n > minnrecs ){ + Error("Not enough records to start at %ld\n", start); + } + + if( start ){ + for(j=0; j0 ){ + if( n < at_a_time ){ + at_a_time = n; + for(j=0; j