63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
//----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 2003 Intel Corporation
|
|
//
|
|
// File: CimClassFactory.h
|
|
//
|
|
// Contents: Factory functions for creating typed CIM objects, definitions.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef CIMCLASSFACTORY_H
|
|
#define CIMCLASSFACTORY_H 1
|
|
|
|
#include <map>
|
|
#include "CimTypedDllExport.h"
|
|
#include "CimWsman.h"
|
|
|
|
namespace Intel
|
|
{
|
|
namespace Manageability
|
|
{
|
|
namespace Cim
|
|
{
|
|
namespace Typed
|
|
{
|
|
using std::map;
|
|
using std::pair;
|
|
using std::string;
|
|
using Intel::WSManagement::ICimWsmanClient;
|
|
using Intel::Manageability::Cim::Untyped::CimObject;
|
|
|
|
class CimBase;
|
|
|
|
// factory class
|
|
class CIMFRAMEWORK_API CimClassFactory
|
|
{
|
|
private:
|
|
// map entry
|
|
// key is string name of class
|
|
// data is pointer to function returning CimBase* and accepting CimObject
|
|
typedef CimBase *
|
|
(*CreateFuncPtr)
|
|
(const CimObject &object);
|
|
typedef pair<string, CreateFuncPtr> map_entry;
|
|
typedef map<const string, CreateFuncPtr> FactoryMap;
|
|
static FactoryMap _cimMap;
|
|
|
|
public:
|
|
CimClassFactory();
|
|
// Factory functions. The implementations are autogenerated in CimClassFactory.cpp
|
|
static CimBase* CreateCimClass(ICimWsmanClient *client, const string& xml);
|
|
static CimBase* CreateCimClass(const CimObject &object);
|
|
static CimBase* CreateCimClass(const CimObject &object, const string &className, const string &baseClassName);
|
|
|
|
};
|
|
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
#endif // CIMCLASSFACTORY_H
|