Skip to content
This repository was archived by the owner on Dec 31, 2018. It is now read-only.

Replace vnl math xx#4

Open
hjmjohnson wants to merge 37 commits intojohan-andruejol:masterfrom
InsightSoftwareConsortium:replace-vnl_math_XX
Open

Replace vnl math xx#4
hjmjohnson wants to merge 37 commits intojohan-andruejol:masterfrom
InsightSoftwareConsortium:replace-vnl_math_XX

Conversation

@hjmjohnson
Copy link
Copy Markdown

No description provided.

Jon Haitz Legarreta and others added 30 commits April 21, 2017 15:18
Add the 'Module_' prefix to the module's flags so that they can be grouped
together with the module itself by the CMake GUI.

Change the 'Examples' and 'Documentation' folder names to 'examples' and
'doc' respectively.

Make the module's example and documentation build flags dependent on
ITK's BUILD_EXAMPLES and BUILD_DOCUMENTATION flags: if the latter are
set to OFF, the module's options will remain hidden and defaulted to OFF.
Use the ITK_DISALLOW_COPY_AND_ASSIGN macro to save typing the copy and
assignment method disallow statements.

Use initialization lists: initialize the missing m_VertexCount ivar to
zero; SmartPointer initialize themselves to the null pointer.

Print all member variables. Use the itkPrintSelfObjectMacro macro to
print SmartPointers.

Remove unnecessary/ducplicate/empty Doxygen-style, out-of-method-body
documentation from the implementation file/use it to improve the method
documentation in the header file.

Use the 'this' keyword when calling self functions.

Make flow control variables have a more local scope.

Start comments with capital letters.
Exercise basic object methods. Hence, remove the unncessary calls to the
GetNameOfClass or Print methods of the class instance.

Exercise all Set/Get methods using the TEST_SET_GET_VALUE macro.

Remove unnecessary print of input mesh vertex and cell count.

Refactor the test in order to improve the readability: create a helper
function to parse the input vector fields.

Other style changes for the sake of consistency across ITK: return
codes, white spaces, comment styles, etc.
ENH: Improve code coverage for itk::VectorFieldPCA.
STYLE: Improve the itkVectorFieldPCA class style.
Add the #ifndef ITK_MANUAL_INSTANTIATION statement for explicit object
instantiation.
…tion

ENH: Include the ITK_MANUAL_INSTANTIATION macro.
…lagsAndSubdirs

ENH: Honor the ITK conventions to name modules, flags and folders.
Require CMake minimum version to be 3.9.5 following ITKv5 requiring
C++11:
https://discourse.itk.org/t/minimum-cmake-version-update/585
ENH: Require cmake minimum version to be 3.9.5.
ITKv5 removed deprecated interfaces.
Provide remove virtual and override

Use clang-tidy to add ITK_OVERRIDE, and to remove
redundant virtual on functions.

cd ../ITK;
clang-tidy -p ITK-clangtidy $find Modules/[A-J]*  -name *.cxx |fgrep -v ThirdParty) -checks=-*,modernize-use-override  -header-filter=.* -fix
clang-tidy -p ITK-clangtidy $(find Modules/[K-Z]*  -name *.cxx |fgrep -v ThirdParty) -checks=-*,modernize-use-override  -header-filter=.* -fix

https://stackoverflow.com/questions/39932391/virtual-override-or-both-c

When you override a function you don't technically need to write either virtual
or override.

The original base class declaration needs the keyword virtual to mark it as virtual.

In the derived class the function is virtual by way of having the ¹same type as
the base class function.

However, an override can help avoid bugs by producing a compilation error when
the intended override isn't technically an override. E.g. that the function
type isn't exactly like the base class function. Or that a maintenance of the
base class changes that function's type, e.g. adding a defaulted argument.

In the same way, a virtual keyword in the derived class can make such a bug
more subtle, by ensuring that the function is still is virtual in further
derived classes.

So the general advice is,

virtual for the base class function declaration.
This is technically necessary.

Use override (only) for a derived class' override.
This helps with maintenance.
git grep -l "ITK_OVERRIDE" |   fgrep -v itk_compiler_detection.h | fgrep -v CMakeLists.txt |fgrep -v .cmake |   xargs sed -i '' -e "s/ITK_OVERRIDE/override/g"
ENH: Providing ITKv5 updates for C++11
Move `ITK_DISALLOW_COPY_AND_ASSIGN` calls to public section following
the discussion in
https://discourse.itk.org/t/noncopyable

If legacy (pre-macro) copy and assing methods existed, subsitute them
for the `ITK_DISALLOW_COPY_AND_ASSIGN` macro.
…licSection

COMP: Move ITK_DISALLOW_COPY_AND_ASSIGN calls to public section.
As agreed in:
https://discourse.itk.org/t/cmake-update/870/

Set the `cmake_minimum_required` to version **3.10.2**.
COMP: Set the minimum required CMake version to 3.10.2.
Add CircleCI configuration files and badges.
ENH: Add CI configuration files.
BUG: Add missing CTestConfig.cmake
Prefer `transfer.sh` over `file.io` for macOS package upload.
DOC: Add missing LICENSE file
Improve `README` file:
- Split the document in section.
- Improve the documentation layout referencing the IJ article.
- Cross reference the `LICENSE` file.
…kages

ENH: Use transfer.sh for macOS package upload.
Do not use `rawgit.com` as part of the curl command argument when
generating the Python package. It is no longer supported. Use
`raw.githubusercontent` instead.
thewtex and others added 7 commits October 17, 2018 10:33
Prefer C++11 type alias over typedef for the reasons stated here:
http://review.source.kitware.com/#/c/23103/
The `ato[if]` functions do not provide mechanisms for distinguishing
between `0` and the error condion where the input can not be converted.

`std::sto[id]` provides exception handling and detects when an invalid
string attempts to be converted to an [integer|double].

`ato[if]()`
 - **Con**: No error handling.
 - **Con**: Handle neither hexadecimal nor octal.

The use of `ato[if]` in code can cause it to be subtly broken.
`ato[if]` makes two very big assumptions indeed:
 - The string represents an integer/floating point value.
 - The integer can fit into an int.

As stated in
http://review.source.kitware.com/#/c/23738/
STYLE: Prefer C++11 type alias over typedef.
…mericFunctions

STYLE: Prefer error checked std::sto[id] over ato[if].
Prefer C++ over aliased names vnl_math_[min|max] -> std::[min|max]
Prefer vnl_math::abs over deprecated alias vnl_math_abs

In all compilers currently supported by VXL, vnl_math_[min|max]
could be replaced with std::[min|max] without loss of
functionality.  This also circumvents part of the backwards
compatibility requirements as vnl_math_ has been recently
replaced with a namespace of vnl_math::.

Since Wed Nov 14 07:42:48 2012:
The vnl_math_* functions use #define aliases to their
vnl_math::* counterparts in the "real" vnl_math:: namespace.

The new syntax should be backwards compatible to
VXL versions as old as 2012.

Prefer to use itk::Math:: over vnl_math:: namespace
Now that all supported compilers simply result in vcl_* being an alias to
exactly one function signature (i.e.  namely the one provided in the std::
namespace) there is no need to use the vcl_ aliases.

The vcl_XXX.h headers used in these files are simple files that only include
the c++11 standard <XXX> headers that were already included, thereby making
these lines of code completely redundant.

Dependance on VCL_CHAR_IS_UNSIGNED variable
was removed in favor of std::numeric_limits<char>::is_signed

Replaced VCL_LIMIT with NUM_LIMIT to reflect
the change made from vcl to std::numeric_limits

vxl/scripts/VCL_ModernizeNaming.py
@hjmjohnson
Copy link
Copy Markdown
Author

@fbudin69500 Is this project still active?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants