summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/predicates/predicatepostfixexpr.C
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2012-04-17 22:30:59 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-04-24 15:48:42 -0500
commit4157b5631a1bbfcc7f9f95480b54e9ade7abce7d (patch)
tree423f4f13a4a0e2d6e76898992a37b4d2db302b3b /src/usr/targeting/predicates/predicatepostfixexpr.C
parent5631ede5d2e63fa8585505eb29c6d86f420c9344 (diff)
downloadtalos-hostboot-4157b5631a1bbfcc7f9f95480b54e9ade7abce7d.tar.gz
talos-hostboot-4157b5631a1bbfcc7f9f95480b54e9ade7abce7d.zip
Support targeting code commonality
- Moved common targeting code to own subtrees - Updated many components with header file changes - Implemented abstract pointer class - Implemented Hostboot specific support for targeting commonality - Changed attribute VMM base address to 4 GB (From 3 GB) - Removed tabs, fixed > 80 character lines Change-Id: Ie5a6956670bfa4f262f7691b4f0ce5a20ed289fe RTC: 35569 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/909 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/targeting/predicates/predicatepostfixexpr.C')
-rw-r--r--src/usr/targeting/predicates/predicatepostfixexpr.C220
1 files changed, 0 insertions, 220 deletions
diff --git a/src/usr/targeting/predicates/predicatepostfixexpr.C b/src/usr/targeting/predicates/predicatepostfixexpr.C
deleted file mode 100644
index 067f7f453..000000000
--- a/src/usr/targeting/predicates/predicatepostfixexpr.C
+++ /dev/null
@@ -1,220 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/usr/targeting/predicates/predicatepostfixexpr.C $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2011
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
-
-/**
- * @file predicatepostfixexpr.C
- *
- * @brief Implementation for predicate which allows callers to chain multiple
- * other predicates together in complex logical expressions, and then
- * evaluate them against a target
- */
-
-//******************************************************************************
-// Includes
-//******************************************************************************
-
-// STD
-
-// Other Host Boot Components
-#include <assert.h>
-
-// Targeting Component
-#include <targeting/predicates/predicatepostfixexpr.H>
-#include "../trace.H"
-
-//******************************************************************************
-// Macros
-//******************************************************************************
-
-#undef TARG_NAMESPACE
-#undef TARG_CLASS
-#undef TARG_FN
-
-//******************************************************************************
-// Interface
-//******************************************************************************
-
-namespace TARGETING
-{
-
-#define TARG_NAMESPACE "TARGETING::"
-#define TARG_CLASS "PredicatePostfixExpr::"
-
-//******************************************************************************
-// PredicatePostfixExpr::PredicatePostfixExpr
-//******************************************************************************
-
-PredicatePostfixExpr::PredicatePostfixExpr()
-{
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::~PredicatePostfixExpr
-//******************************************************************************
-
-PredicatePostfixExpr::~PredicatePostfixExpr()
-{
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::push
-//******************************************************************************
-
-PredicatePostfixExpr& PredicatePostfixExpr::push(
- const PredicateBase* const i_pPredicate)
-{
- #define TARG_FN "push(...)"
-
- assert(i_pPredicate != NULL,
- TARG_LOC "Caller supplied a NULL predicate");
- Operation l_op = {EVAL,i_pPredicate};
- iv_ops.push_back(l_op);
- return *this;
-
- #undef TARG_FN
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::And
-//******************************************************************************
-
-PredicatePostfixExpr& PredicatePostfixExpr::And()
-{
- #define TARG_FN "And()"
-
- Operation l_op = {AND,NULL};
- iv_ops.push_back(l_op);
- return *this;
-
- #undef TARG_FN
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::Not
-//******************************************************************************
-
-PredicatePostfixExpr& PredicatePostfixExpr::Not()
-{
- #define TARG_FN "Not()"
-
- Operation l_op = {NOT,NULL};
- iv_ops.push_back(l_op);
- return *this;
-
- #undef TARG_FN
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::Or
-//******************************************************************************
-
-PredicatePostfixExpr& PredicatePostfixExpr::Or()
-{
- #define TARG_FN "Or()"
-
- Operation l_op = {OR,NULL};
- iv_ops.push_back(l_op);
- return *this;
-
- #undef TARG_FN
-}
-
-//******************************************************************************
-// PredicatePostfixExpr::operator()
-//******************************************************************************
-
-bool PredicatePostfixExpr::operator()(
- const Target* const i_pTarget) const
-{
- #define TARG_FN "operator()(...)"
-
- assert(i_pTarget != NULL,
- TARG_LOC "Caller supplied a NULL target");
-
- std::vector<bool> l_stack;
- bool l_result = false;
-
- for(uint32_t i=0; i<iv_ops.size(); ++i)
- {
- switch(iv_ops[i].logicalOp)
- {
- case EVAL:
- l_stack.push_back((*iv_ops[i].pPredicate)(i_pTarget));
- break;
- case AND:
- assert(l_stack.size() >= 2,
- TARG_LOC "Stack for AND must be >=2 but is %d",
- l_stack.size());
- l_result = l_stack.back();
- l_stack.pop_back();
- l_stack.back() &= l_result;
- break;
- case OR:
- assert(l_stack.size() >= 2,
- TARG_LOC "Stack for OR must be >= 2 but is %d",
- l_stack.size());
- l_result = l_stack.back();
- l_stack.pop_back();
- l_stack.back() |= l_result;
- break;
- case NOT:
- assert(l_stack.size() >= 1,
- TARG_LOC "Stack for NOT must be >= 1 but is %d",
- l_stack.size());
- l_stack.back() = !l_stack.back();
- break;
- default:
- assert(0,
- TARG_LOC "Attempted to evaluate unsupported "
- "logical operation %d",
- iv_ops[i].logicalOp);
- break;
- }
- }
-
- // If no predicates and we haven't asserted (no misformatting), element
- // should be returned
- if(l_stack.size() == 0)
- {
- l_result = true;
- }
- else
- {
- assert(l_stack.size() == 1,
- TARG_LOC "Postfix expression created incorrectly. Stack "
- "size should be 1 but is %d",
- l_stack.size());
-
- l_result = l_stack.front();
- }
-
- return l_result;
-
- #undef TARG_FN
-}
-
-#undef TARG_CLASS
-#undef TARG_NAMESPACE
-
-} // End namespace TARGETING
-
OpenPOWER on IntegriCloud