diff options
author | Willem Jan Palenstijn <wjp@usecode.org> | 2018-10-23 12:20:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-23 12:20:18 +0200 |
commit | eb97daad97596d54e0da8987ef1c5b1dd91c124f (patch) | |
tree | e0f98656f13716b42898c6aefd8abbcc7353d4bc /python/astra | |
parent | 6730face204f40c57c3e8fe58ea9749494d669a6 (diff) | |
parent | 03ff113ac48f21956247b164a83000b5f6ab311d (diff) | |
download | astra-eb97daad97596d54e0da8987ef1c5b1dd91c124f.tar.gz astra-eb97daad97596d54e0da8987ef1c5b1dd91c124f.tar.bz2 astra-eb97daad97596d54e0da8987ef1c5b1dd91c124f.tar.xz astra-eb97daad97596d54e0da8987ef1c5b1dd91c124f.zip |
Merge pull request #170 from wjp/feature_flags
Add support for checking features at run-time
Diffstat (limited to 'python/astra')
-rw-r--r-- | python/astra/__init__.py | 2 | ||||
-rw-r--r-- | python/astra/astra.py | 14 | ||||
-rw-r--r-- | python/astra/astra_c.pyx | 8 |
3 files changed, 22 insertions, 2 deletions
diff --git a/python/astra/__init__.py b/python/astra/__init__.py index 1a7f444..ae35316 100644 --- a/python/astra/__init__.py +++ b/python/astra/__init__.py @@ -27,7 +27,7 @@ from . import matlab as m from .creators import astra_dict,create_vol_geom, create_proj_geom, create_backprojection, create_sino, create_reconstruction, create_projector,create_sino3d_gpu, create_backprojection3d_gpu from .functions import data_op, add_noise_to_sino, clear, move_vol_geom, geom_size, geom_2vec, geom_postalignment from .extrautils import clipCircle -from .astra import set_gpu_index, get_gpu_info, use_cuda +from .astra import set_gpu_index, get_gpu_info, use_cuda, has_feature from . import data2d from . import astra from . import data3d diff --git a/python/astra/astra.py b/python/astra/astra.py index ef46db1..e74d29a 100644 --- a/python/astra/astra.py +++ b/python/astra/astra.py @@ -54,6 +54,20 @@ def get_gpu_info(idx=-1): """ return a.get_gpu_info(idx) +def has_feature(feature): + """Check a feature flag. + + These are used to check if certain functionality has been + enabled at compile time, if new functionality is present, or if + a backward-incompatible change is present. + + See include/astra/Features.h for a list. + + :param feature: The name of the feature + :type feature: :class:`str` + :returns: :class:`bool` -- The presence of the feature + """ + return a.has_feature(feature) def delete(ids): """Delete an astra object. diff --git a/python/astra/astra_c.pyx b/python/astra/astra_c.pyx index 65dbf28..69909b5 100644 --- a/python/astra/astra_c.pyx +++ b/python/astra/astra_c.pyx @@ -28,7 +28,7 @@ include "config.pxi" import six -from .utils import wrap_from_bytes +from .utils import wrap_from_bytes, wrap_to_bytes from libcpp.string cimport string from libcpp.vector cimport vector @@ -40,6 +40,9 @@ cdef extern from "astra/Globals.h" namespace "astra": bool cudaEnabled() bool cudaAvailable() +cdef extern from "astra/Features.h" namespace "astra": + bool hasFeature(string) + IF HAVE_CUDA==True: cdef extern from "astra/cuda/2d/astra.h" namespace "astraCUDA": bool setGPUIndex(int) @@ -120,3 +123,6 @@ def info(ids): if ptr: s = ptr.getType() + six.b("\t") + ptr.getInfo(i) six.print_(wrap_from_bytes(s)) + +def has_feature(feature): + return hasFeature(wrap_to_bytes(feature)) |