I attached a patch, consider if it fits into your design principles or
if you need it at all. It is a minor issue, really.

Have a nice weekend!

Best regards,
Miklos

> On Thu, Aug 11, 2011 at 9:44 AM, Neuhaus, Jochen
> <[email protected]> wrote:
>> Hi,
>>
>> the predicates are exclusively used in the mitk::DataStorage, as far as I 
>> know. All methods that use predicates there can be supplied with a NULL 
>> Pointer instead of a predicate, which leads to the same behavior as a "true" 
>> predicate. Right now, I can't think of a use case where one would need to 
>> build a complex predicate that includes a "true" or "false" predicate. But 
>> on the other hand, it certainly wouldn't hurt to have them in MITK.
>> Do you want to contribute these predicates to MITK?
>>
>> Best regards,
>>  Jochen
From b6a71601408da2d6a5c5a3f149b47ce230691e88 Mon Sep 17 00:00:00 2001
From: Miklos Espak <[email protected]>
Date: Fri, 12 Aug 2011 16:10:20 +0200
Subject: [PATCH] Atomic node predicates

---
 .../DataManagement/mitkNodePredicateAtomic.cpp     |   47 ++++++++++++++++
 Core/Code/DataManagement/mitkNodePredicateAtomic.h |   59 ++++++++++++++++++++
 Core/Code/files.cmake                              |    1 +
 3 files changed, 107 insertions(+), 0 deletions(-)
 create mode 100644 Core/Code/DataManagement/mitkNodePredicateAtomic.cpp
 create mode 100644 Core/Code/DataManagement/mitkNodePredicateAtomic.h

diff --git a/Core/Code/DataManagement/mitkNodePredicateAtomic.cpp b/Core/Code/DataManagement/mitkNodePredicateAtomic.cpp
new file mode 100644
index 0000000..486564e
--- /dev/null
+++ b/Core/Code/DataManagement/mitkNodePredicateAtomic.cpp
@@ -0,0 +1,47 @@
+/*=========================================================================
+
+Program:   Medical Imaging & Interaction Toolkit
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+
+Copyright (c) German Cancer Research Center, Division of Medical and
+Biological Informatics. All rights reserved.
+See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "mitkNodePredicateAtomic.h"
+
+#include "mitkDataNode.h"
+
+
+mitk::NodePredicateAtomic::NodePredicateAtomic(bool value)
+: NodePredicateBase()
+{
+  m_Value = value;
+}
+
+
+mitk::NodePredicateAtomic::~NodePredicateAtomic()
+{
+}
+
+
+bool mitk::NodePredicateAtomic::CheckNode(const mitk::DataNode* node) const
+{
+  if (node == NULL)
+    throw std::invalid_argument("NodePredicateAtomic: invalid node");
+
+  return m_Value;
+}
+
+mitk::NodePredicateAtomic* mitk::NodePredicateAtomic::FALSE =
+    new mitk::NodePredicateAtomic(false);
+
+mitk::NodePredicateAtomic* mitk::NodePredicateAtomic::TRUE =
+    new mitk::NodePredicateAtomic(true);
diff --git a/Core/Code/DataManagement/mitkNodePredicateAtomic.h b/Core/Code/DataManagement/mitkNodePredicateAtomic.h
new file mode 100644
index 0000000..12a22d9
--- /dev/null
+++ b/Core/Code/DataManagement/mitkNodePredicateAtomic.h
@@ -0,0 +1,59 @@
+/*=========================================================================
+
+Program:   Medical Imaging & Interaction Toolkit
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+
+Copyright (c) German Cancer Research Center, Division of Medical and
+Biological Informatics. All rights reserved.
+See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+
+#ifndef MITKNODEPREDICATEATOMIC_H_HEADER_INCLUDED_
+#define MITKNODEPREDICATEATOMIC_H_HEADER_INCLUDED_
+
+#include "mitkNodePredicateBase.h"
+
+namespace mitk {
+
+  //##Documentation
+  //## @brief Atomic predicates that evaluate 'true' or 'false' for every valid node
+  //##
+  //## The class cannot be instantiated. You can refer to its two predefined objects by
+  //## mitk::NodePredicateAtomic::FALSE and mitk::NodePredicateAtomic::TRUE, respectively.
+  //##
+  //## @ingroup DataStorage
+  class MITK_CORE_EXPORT NodePredicateAtomic : public NodePredicateBase
+  {
+  public:
+//    mitkClassMacro(NodePredicateAtomic, NodePredicateBase);
+
+    //##Documentation
+    //## @brief Standard Destructor
+    virtual ~NodePredicateAtomic();
+
+    //##Documentation
+    //## @brief Returns 'true' or 'false' for every valid node. If the parameter is NULL, an exception is thrown.
+    virtual bool CheckNode(const mitk::DataNode* node) const;
+
+    // Smart pointers are not needed, since only these two instances will exist.
+    static NodePredicateAtomic* FALSE;
+    static NodePredicateAtomic* TRUE;
+
+  private:
+    //##Documentation
+    //## @brief Protected constructor, use static instantiation functions instead
+    NodePredicateAtomic(bool value);
+
+    bool m_Value;
+  };
+} // namespace mitk
+
+#endif /* MITKNODEPREDICATEATOMIC_H_HEADER_INCLUDED_ */
diff --git a/Core/Code/files.cmake b/Core/Code/files.cmake
index a0c3235..8ca9efa 100644
--- a/Core/Code/files.cmake
+++ b/Core/Code/files.cmake
@@ -138,6 +138,7 @@ SET(CPP_FILES
   DataManagement/mitkModeOperation.cpp
   DataManagement/mitkNodePredicateAnd.cpp
   DataManagement/mitkNodePredicateBase.cpp
+  DataManagement/mitkNodePredicateAtomic.cpp
   DataManagement/mitkNodePredicateCompositeBase.cpp
   DataManagement/mitkNodePredicateData.cpp
   DataManagement/mitkNodePredicateDataType.cpp
-- 
1.7.4.1

------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. 
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to