SubsystemObjectCreator.h revision 68a912857707864bbaaff9808717813105072a6e
168a912857707864bbaaff9808717813105072a6ePatrick Benavoli/* <auto_header>
268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * <FILENAME>
368a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * INTEL CONFIDENTIAL
568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Copyright © 2011 Intel
668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Corporation All Rights Reserved.
768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * The source code contained or described herein and all documents related to
968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * the source code ("Material") are owned by Intel Corporation or its suppliers
1068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * or licensors. Title to the Material remains with Intel Corporation or its
1168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * suppliers and licensors. The Material contains trade secrets and proprietary
1268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * and confidential information of Intel or its suppliers and licensors. The
1368a912857707864bbaaff9808717813105072a6ePatrick Benavoli * Material is protected by worldwide copyright and trade secret laws and
1468a912857707864bbaaff9808717813105072a6ePatrick Benavoli * treaty provisions. No part of the Material may be used, copied, reproduced,
1568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * modified, published, uploaded, posted, transmitted, distributed, or
1668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * disclosed in any way without Intel’s prior express written permission.
1768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
1868a912857707864bbaaff9808717813105072a6ePatrick Benavoli * No license under any patent, copyright, trade secret or other intellectual
1968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * property right is granted to or conferred upon you by disclosure or delivery
2068a912857707864bbaaff9808717813105072a6ePatrick Benavoli * of the Materials, either expressly, by implication, inducement, estoppel or
2168a912857707864bbaaff9808717813105072a6ePatrick Benavoli * otherwise. Any license under such intellectual property rights must be
2268a912857707864bbaaff9808717813105072a6ePatrick Benavoli * express and approved by Intel in writing.
2368a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2468a912857707864bbaaff9808717813105072a6ePatrick Benavoli *  AUTHOR: Patrick Benavoli (patrickx.benavoli@intel.com)
2568a912857707864bbaaff9808717813105072a6ePatrick Benavoli * CREATED: 2011-06-01
2668a912857707864bbaaff9808717813105072a6ePatrick Benavoli * UPDATED: 2011-07-27
2768a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2868a912857707864bbaaff9808717813105072a6ePatrick Benavoli *
2968a912857707864bbaaff9808717813105072a6ePatrick Benavoli * </auto_header>
3068a912857707864bbaaff9808717813105072a6ePatrick Benavoli */
3168a912857707864bbaaff9808717813105072a6ePatrick Benavoli#pragma once
3268a912857707864bbaaff9808717813105072a6ePatrick Benavoli
3368a912857707864bbaaff9808717813105072a6ePatrick Benavoli#include "SubsystemObject.h"
3468a912857707864bbaaff9808717813105072a6ePatrick Benavoli#include "MappingContext.h"
3568a912857707864bbaaff9808717813105072a6ePatrick Benavoli#include <string>
3668a912857707864bbaaff9808717813105072a6ePatrick Benavoli
3768a912857707864bbaaff9808717813105072a6ePatrick Benavoliusing namespace std;
3868a912857707864bbaaff9808717813105072a6ePatrick Benavoli
3968a912857707864bbaaff9808717813105072a6ePatrick Benavoliclass CSubsystemObjectCreator
4068a912857707864bbaaff9808717813105072a6ePatrick Benavoli{
4168a912857707864bbaaff9808717813105072a6ePatrick Benavolipublic:
4268a912857707864bbaaff9808717813105072a6ePatrick Benavoli    CSubsystemObjectCreator(const string& strMappingKey, uint32_t uiAncestorIdMask);
4368a912857707864bbaaff9808717813105072a6ePatrick Benavoli
4468a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Accessors
4568a912857707864bbaaff9808717813105072a6ePatrick Benavoli    const string& getMappingKey() const;
4668a912857707864bbaaff9808717813105072a6ePatrick Benavoli    uint32_t getAncestorMask() const;
4768a912857707864bbaaff9808717813105072a6ePatrick Benavoli
4868a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Object creation
4968a912857707864bbaaff9808717813105072a6ePatrick Benavoli    virtual CSubsystemObject* objectCreate(const string& strId, CInstanceConfigurableElement* pInstanceConfigurableElement, CMappingContext& context, string& strError) const = 0;
5068a912857707864bbaaff9808717813105072a6ePatrick Benavoli
5168a912857707864bbaaff9808717813105072a6ePatrick Benavoliprivate:
5268a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Mapping key
5368a912857707864bbaaff9808717813105072a6ePatrick Benavoli    string _strMappingKey;
5468a912857707864bbaaff9808717813105072a6ePatrick Benavoli    // Mask of must-be-specified ancestors
5568a912857707864bbaaff9808717813105072a6ePatrick Benavoli    uint32_t _uiAncestorIdMask;
5668a912857707864bbaaff9808717813105072a6ePatrick Benavoli};
5768a912857707864bbaaff9808717813105072a6ePatrick Benavoli
58