Home | History | Annotate | Download | only in parameter
      1 /*
      2  * Copyright (c) 2011-2014, Intel Corporation
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without modification,
      6  * are permitted provided that the following conditions are met:
      7  *
      8  * 1. Redistributions of source code must retain the above copyright notice, this
      9  * list of conditions and the following disclaimer.
     10  *
     11  * 2. Redistributions in binary form must reproduce the above copyright notice,
     12  * this list of conditions and the following disclaimer in the documentation and/or
     13  * other materials provided with the distribution.
     14  *
     15  * 3. Neither the name of the copyright holder nor the names of its contributors
     16  * may be used to endorse or promote products derived from this software without
     17  * specific prior written permission.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
     23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 #include "SelectionCriteriaDefinition.h"
     31 #include "SelectionCriterion.h"
     32 
     33 std::string CSelectionCriteriaDefinition::getKind() const
     34 {
     35     return "SelectionCriteriaDefinition";
     36 }
     37 
     38 // Selection Criterion creation
     39 CSelectionCriterion *CSelectionCriteriaDefinition::createSelectionCriterion(
     40     const std::string &strName, const CSelectionCriterionType *pType, core::log::Logger &logger)
     41 {
     42     CSelectionCriterion *pSelectionCriterion = new CSelectionCriterion(strName, pType, logger);
     43 
     44     addChild(pSelectionCriterion);
     45 
     46     return pSelectionCriterion;
     47 }
     48 
     49 // Selection Criterion access
     50 const CSelectionCriterion *CSelectionCriteriaDefinition::getSelectionCriterion(
     51     const std::string &strName) const
     52 {
     53     return static_cast<const CSelectionCriterion *>(findChild(strName));
     54 }
     55 
     56 CSelectionCriterion *CSelectionCriteriaDefinition::getSelectionCriterion(const std::string &strName)
     57 {
     58     return static_cast<CSelectionCriterion *>(findChild(strName));
     59 }
     60 
     61 // List available criteria
     62 void CSelectionCriteriaDefinition::listSelectionCriteria(std::list<std::string> &lstrResult,
     63                                                          bool bWithTypeInfo,
     64                                                          bool bHumanReadable) const
     65 {
     66     // Propagate
     67     size_t uiNbChildren = getNbChildren();
     68     size_t uiChild;
     69 
     70     for (uiChild = 0; uiChild < uiNbChildren; uiChild++) {
     71 
     72         const CSelectionCriterion *pSelectionCriterion =
     73             static_cast<const CSelectionCriterion *>(getChild(uiChild));
     74 
     75         lstrResult.push_back(
     76             pSelectionCriterion->getFormattedDescription(bWithTypeInfo, bHumanReadable));
     77     }
     78 }
     79 
     80 // Reset the modified status of the children
     81 void CSelectionCriteriaDefinition::resetModifiedStatus()
     82 {
     83     // Propagate
     84     size_t uiNbChildren = getNbChildren();
     85     size_t uiChild;
     86     CSelectionCriterion *pSelectionCriterion;
     87 
     88     for (uiChild = 0; uiChild < uiNbChildren; uiChild++) {
     89 
     90         pSelectionCriterion = static_cast<CSelectionCriterion *>(getChild(uiChild));
     91 
     92         pSelectionCriterion->resetModifiedStatus();
     93     }
     94 }
     95