You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.9 KiB

//Copyright 2020 Siemens Digital Industries Software
//==================================================
//Copyright $2008.
//Siemens Product Lifecycle Management Software Inc.
//All Rights Reserved.
//==================================================
//Copyright 2020 Siemens Digital Industries Software
/*==================================================================================================
File description:
This file contains the declaration for the abstract class RootObject
Filename: RootObject.hxx
Module : metaframework
==================================================================================================*/
#ifndef TEAMCENTER__ROOTOBJECT__HXX
#define TEAMCENTER__ROOTOBJECT__HXX
#include <string>
#include <unidefs.h>
#include <vector>
#include <cstdarg>
#include <metaframework/Object.hxx>
#include <metaframework/libmetaframework_exports.h>
namespace Teamcenter
{
class RootObject;
}
namespace Teamcenter
{
class RootObjectImpl;
class RuntimeBusinessObjectImpl;
class BusinessObjectRegistryImpl;
}
namespace Teamcenter
{
class BusinessObject;
}
class METAFRAMEWORK_API Teamcenter::RootObject : public Teamcenter::Object
{
public:
// Getter method for the Implementation Object
virtual RuntimeBusinessObjectImpl* getRuntimeBusinessObjectImpl() const;
// Get the Interface Name
static const std::string& getInterfaceName();
//operations
// get the object tag
tag_t getTag() const;
// get the BusinessObject(Type) name
const std::string& getTypeName() const;
// get the BusinessObject(Type) tag
tag_t getTypeTag() const;
// va_list does not support std::string& so converting to std::string*
int invokeOperation( const std::string* operationId, ...);
int invokeOperation( const std::string& operationId, va_list args );
int invokeOperation( int operationIdInt, va_list args );
int invokeOperation( const std::string& operationId, std::vector<void*>& args );
int invokeOperation( int operationIdInt, std::vector<void*>& args );
protected:
RootObject();
virtual ~RootObject();
// initialization for object instantiation
virtual void initialize(RootObjectImpl * impl = 0);
// set the object tag
void setTag(tag_t tag);
private:
void setType(tag_t tag, const std::string& name);
// object tag
tag_t m_tag;
// business object type name
std::string m_typeName;
// business object type tag
tag_t m_typeTag;
// Name of the Object
static std::string name;
// Private default constructor. We do not want this class instantiated without the business object passed in.
RootObject( const RootObject& );
RootObject& operator=( const RootObject& );
// friends
friend class Teamcenter::BusinessObjectRegistryImpl;// persist BusinessObject: accessing setTag and setType
};
#include <metaframework/libmetaframework_undef.h>
#endif // TEAMCENTER__ROOTOBJECT__HXX