return IncludeGroup.gmx_test
return IncludeGroup.gmx_general
+ def _split_path(self, path):
+ """Split include path into sortable compoments.
+
+ Plain string on the full path in the #include directive causes some
+ unintuitive behavior, so this splits the path into a tuple at
+ points that allow more natural sorting: primary sort criterion is the
+ directory name, followed by the basename (without extension) of the
+ included file.
+ """
+ path_components = list(os.path.split(path))
+ path_components[1] = os.path.splitext(path_components[1])
+ return tuple(path_components)
+
+ def _join_path(self, path_components):
+ """Reconstruct path from the return value of _split_path."""
+ return os.path.join(path_components[0], ''.join(path_components[1]))
+
def get_sortable_object(self, include):
"""Produce a sortable, opaque object for an include.
including_file = include.get_including_file()
group = self._get_gmx_group(including_file, included_file)
path = self._get_path(included_file, group, including_file)
- return (group, os.path.split(path), include)
+ return (group, self._split_path(path), include)
def format_include(self, obj, prev):
"""Format an #include directive after sorting."""
match = re.match(include_re, line)
assert match
if include.is_system():
- path = '<{0}>'.format(os.path.join(obj[1][0], obj[1][1]))
+ path = '<{0}>'.format(self._join_path(obj[1]))
else:
- path = '"{0}"'.format(os.path.join(obj[1][0], obj[1][1]))
+ path = '"{0}"'.format(self._join_path(obj[1]))
result.append('{0}{1}{2}\n'.format(match.group('head'), path, match.group('tail')))
return result
#include "gromacs/math/vec.h"
#include "gromacs/pbcutil/ishift.h"
#include "gromacs/pbcutil/mshift.h"
-#include "gromacs/pbcutil/pbc-simd.h"
#include "gromacs/pbcutil/pbc.h"
+#include "gromacs/pbcutil/pbc-simd.h"
#include "gromacs/simd/simd.h"
#include "gromacs/simd/simd_math.h"
#include "gromacs/simd/vector_operations.h"
#include "gromacs/legacyheaders/types/commrec.h"
#include "gromacs/math/units.h"
#include "gromacs/math/vec.h"
-#include "gromacs/pbcutil/pbc-simd.h"
#include "gromacs/pbcutil/pbc.h"
+#include "gromacs/pbcutil/pbc-simd.h"
#include "gromacs/simd/simd.h"
#include "gromacs/simd/simd_math.h"
#include "gromacs/simd/vector_operations.h"
#include "gromacs/domdec/domdec.h"
#include "gromacs/domdec/domdec_network.h"
-#include "gromacs/ewald/pme-load-balancing.h"
#include "gromacs/ewald/pme.h"
+#include "gromacs/ewald/pme-load-balancing.h"
#include "gromacs/fileio/filenm.h"
#include "gromacs/fileio/mdoutf.h"
#include "gromacs/fileio/trajectory_writing.h"
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include <vector>
-#include <gtest/gtest-spi.h>
#include <gtest/gtest.h>
+#include <gtest/gtest-spi.h>
namespace
{