00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "mitkNodePredicateDataType.h" 00019 00020 #include "mitkDataNode.h" 00021 #include "mitkBaseData.h" 00022 00023 mitk::NodePredicateDataType::NodePredicateDataType(const char* datatype) 00024 : NodePredicateBase() 00025 { 00026 if (datatype == NULL) 00027 throw std::invalid_argument("NodePredicateDataType: invalid datatype"); 00028 00029 00030 m_ValidDataType = datatype; 00031 } 00032 00033 mitk::NodePredicateDataType::~NodePredicateDataType() 00034 { 00035 } 00036 00037 00038 bool mitk::NodePredicateDataType::CheckNode(const mitk::DataNode* node) const 00039 { 00040 if (node == NULL) 00041 throw std::invalid_argument("NodePredicateDataType: invalid node"); 00042 00043 00044 mitk::BaseData* data = node->GetData(); 00045 00046 if (data == NULL) 00047 return false; // or should we check if m_ValidDataType == "NULL" so that nodes without data can be requested? 00048 00049 return ( m_ValidDataType.compare(data->GetNameOfClass()) == 0); // return true if data type matches 00050 }