//Copyright 2020 Siemens Digital Industries Software
//==================================================
//Copyright $2020.
//Siemens Product Lifecycle Management Software Inc.
//All Rights Reserved.
//==================================================
//Copyright 2020 Siemens Digital Industries Software

/*==================================================================================================
File description:
    This file contains the declaration for the Business Object, BusinessObjectDelegate
    Filename:   BusinessObjectDelegate.hxx
    Module:     metaframework
    @BMIDE autogenerated
==================================================================================================*/

#ifndef TEAMCENTER__BUSINESSOBJECTDELEGATE_HXX
#define TEAMCENTER__BUSINESSOBJECTDELEGATE_HXX

#include <common/tc_deprecation_macros.h>
#include <metaframework/BusinessObject.hxx>

#include <metaframework/libmetaframework_exports.h>

namespace Teamcenter
{
    class BusinessObjectDelegate;
}
namespace Teamcenter
{
    class BusinessObjectImpl;
}
namespace Teamcenter
{
    class BusinessObject;
}
namespace Teamcenter
{
    class BusinessObjectGenImpl;
}

namespace Teamcenter_alias = ::Teamcenter;


class  METAFRAMEWORK_API Teamcenter_alias::BusinessObjectDelegate
{
public:
    //  Method to initialize this Class
    static int initializeClass();

    //  Method to get the BusinessObjectDelegate instance
    static BusinessObjectDelegate&  getInstance();

    //  Method to create the BusinessObjectImpl pointer
    static BusinessObjectImpl*  createImpl( BusinessObject&  ifObj );

    //  Method to delete the BusinessObjectImpl pointer
    static void deleteImpl( BusinessObjectImpl*  impl );


    ///
    /// Getter for a string Property
    /// @version Teamcenter 10
    /// @param value - Parameter value
    /// @param isNull - Returns true if the Parameter value is null
    /// @return - Status. 0 if successful
    ///
    int  getObject_stringBase(const BusinessObject &ifObj,  std::string &value, bool &isNull ) const;


    ///
    /// This is the getter for retrieving the recipe/permanent ID if its been created (and cached on the instance). Every Business Object should implement this operation.
    /// @version Teamcenter 11.1
    /// @param uid - Recipe/permanent ID
    /// @param isFirstTime - If Session Recovery Uid is yet to be set or does the object need to be serialized again?
    /// @return - Failure code
    ///
    int  fnd0AskSRUidBase(const BusinessObject &ifObj,  std::string *uid, bool *isFirstTime ) const;


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.4
    /// @param inputs - A vector of data that contains reference information to the object to be created
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0CreateBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.4
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0CreatePostBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.4
    /// @param inputs - A vector of data that contains reference information to the object to be created
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0FinalizeCreateInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0FinalizeSaveAsInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// Generates permanent ID/recipe. Every Business Object should implement this operation.
    /// @version Teamcenter 11.1
    /// @param recipe - Permanent ID/recipe
    /// @return - Failure code.
    ///
    int  fnd0GenerateRecipeBase(const BusinessObject &ifObj,  std::string *recipe );


    ///
    /// This operation returns the children to be displayed when expanding this object.
    /// @version Teamcenter 10
    /// @param propertyNames - The list of propertyNames to expand.  If empty, then the properties defined in <TYPE>_DefaultChildProperties and <TYPE>_DefaultPseudoFolder are returned.
    /// @param childTags - Tags of children.
    /// @param childContextPropertyNames - The propertyName in which this child exists in the parent.
    /// @return - status
    ///
    int  fnd0GetChildrenBase(const BusinessObject &ifObj,  const std::vector< std::string > *propertyNames, std::vector< tag_t > *childTags, std::vector< std::string > *childContextPropertyNames );


    ///
    /// 
    /// @version Teamcenter 11.4
    /// @param getDeepCopydata - This is the object to hold input information.
    /// @param bd - This is the bulkData
    /// @return - 
    ///
    int  fnd0GetDeepCopyDataBase( std::vector<  ::Teamcenter::BulkInput* > *getDeepCopydata, ::Teamcenter::BulkData *bd );


    ///
    /// Gets the current POM serialization state. Runtime Business Object does not need to implement this operation. 
    /// @version Teamcenter 11.1
    /// @param currentState - Gets the current POM serialization state.
    /// @return - Failure code
    ///
    int  fnd0GetSerializationStateBase(const BusinessObject &ifObj,  bool *currentState ) const;


    ///
    /// If Business Object supports recoverable ID. Every Business Object should implement this operation.
    /// @version Teamcenter 11.1
    /// @param isPersistedRecipe - isPersistedRecipe param should be set to true if the recipe is limited to the user session and should be serialized to the database
    /// @param isRecoverableIDSupported - Returning true indicates support for recoverability/permanent IDs
    /// @return - Failure code.
    ///
    int  fnd0IsRecoverableBase(const BusinessObject &ifObj,  bool *isPersistedRecipe, bool *isRecoverableIDSupported ) const;


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0PerformDeepCopyBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0SaveAsBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0SaveAsPostBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.4
    /// @param inputs - A vector of data that contains reference information to the object to be created
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0SetPropertiesFromCreateInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0SetPropertiesFromSaveAsInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// Sets the current POM serialization state. Runtime Business Object does not need to implement this operation. 
    /// @version Teamcenter 11.1
    /// @param newState - true marks the POM serialization recipe as out-of-date, false marks it as up-to-date.
    /// @param stateChanged - true if the state has changed.
    /// @return - Failure code
    ///
    int  fnd0SetSerializationStateBase(const BusinessObject &ifObj,  bool newState, bool *stateChanged );


    ///
    /// This is the setter for the recipe/permanent ID when it is created (to be cached on the instance). Every Business Object should implement this operation.
    /// @version Teamcenter 11.1
    /// @param uid - Rrecipe/permanent ID
    /// @return - Failure code.
    ///
    int  fnd0SetSRUidBase(const BusinessObject &ifObj,  const std::string *uid );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.4
    /// @param inputs - A vector of data that contains reference information to the object to be created
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0ValidateCreateInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// This operation is not supported now, there will be no support for issues stemming from uses of this operation.
    /// @version Teamcenter 11.2.3
    /// @param inputs - A vector of data that contains reference information to the object to be saved
    /// @param bd - A data structure to store objects and other information relevant for set-based operation
    /// @return - 
    ///
    int  fnd0ValidateSaveAsInputBase( std::vector<  ::Teamcenter::BulkInput* > *inputs, ::Teamcenter::BulkData *bd );


    ///
    /// To Return the Character
    /// @version Tc 8
    /// @param charName - To return the character Name
    /// @param charRetValue - The value of the Character
    /// @param isNull - Is the Value Null
    /// @return - Returns the status as Integer
    ///
    int  getCharBase(const BusinessObject &ifObj,  const std::string &charName, char &charRetValue, bool &isNull );


    ///
    /// The array of Character
    /// @version Tc 8
    /// @param charArrayName - The Char array Name
    /// @param vectorCharVals - vector of char values
    /// @param vectorIsNullVals - Is the Values Null
    /// @return - Returns the Status as Integer
    ///
    int  getCharArrayBase(const BusinessObject &ifObj,  const std::string &charArrayName, std::vector< char > &vectorCharVals, std::vector< int > &vectorIsNullVals );


    ///
    /// get date value
    /// @version Tc 8
    /// @param dateName - Name of the date property
    /// @param dateRetValue - Value of the date property
    /// @param isNull - is value Null
    /// @return - status
    ///
    int  getDateBase(const BusinessObject &ifObj,  const std::string &dateName, date_t &dateRetValue, bool &isNull );


    ///
    /// get array of Date Values for a property
    /// @version Tc 8
    /// @param dateArrayName - Name of the date array property
    /// @param dateArrayRetValue - Value of the date array
    /// @param isNull - is null values
    /// @return - status
    ///
    int  getDateArrayBase(const BusinessObject &ifObj,  const std::string &dateArrayName, std::vector< date_t > &dateArrayRetValue, std::vector< int > &isNull );


    ///
    /// gets deep copy data
    /// @version Teamcenter 9
    /// @param operation - operation desc
    /// @param deepCopyDatas - desc
    /// @return - returns an int
    ///
    int  getDeepCopyDataBase(const BusinessObject &ifObj,  const std::string *operation, std::vector<  ::Teamcenter::DeepCopyData* > *deepCopyDatas );


    ///
    /// To get the double value
    /// @version Tc 8
    /// @param doubleName - The name of the double variable
    /// @param doubleRetValue - The value of the double variable
    /// @param isNull - Is the value Null
    /// @return - Returns the status as Integer
    ///
    int  getDoubleBase(const BusinessObject &ifObj,  const std::string &doubleName, double &doubleRetValue, bool &isNull );


    ///
    /// Array of Doubles
    /// @version Tc 8
    /// @param doubleArrayName - The Array Name
    /// @param vectorDoubleVals - Array of Doubles
    /// @param vectorIsNullVals - Is the Value Null
    /// @return - Return the status as Integer
    ///
    int  getDoubleArrayBase(const BusinessObject &ifObj,  const std::string &doubleArrayName, std::vector< double > &vectorDoubleVals, std::vector< int > &vectorIsNullVals );


    ///
    /// To get the Integer
    /// @version Tc 8
    /// @param intName - The name of the Integer
    /// @param intRetValue - The value of the Integer
    /// @param isNull - Is the value null
    /// @return - Returns the status as Integer
    ///
    int  getIntBase(const BusinessObject &ifObj,  const std::string &intName, int &intRetValue, bool &isNull );


    ///
    /// Array of Integers
    /// @version Tc 8
    /// @param intArrayName - The array name of integers
    /// @param vectorIntVals - The Vector of Integer values
    /// @param vectorIsNullVals - are the Values Null
    /// @return - Returns the status as Integers
    ///
    int  getIntArrayBase(const BusinessObject &ifObj,  const std::string &intArrayName, std::vector< int > &vectorIntVals, std::vector< int > &vectorIsNullVals );


    ///
    /// To get the Logical Value
    /// @version Tc 8
    /// @param logicalName - The name of the Logical Variable
    /// @param boolRetValue - The logical value
    /// @param isNull - Is the value null
    /// @return - Returns the status as Integer
    ///
    int  getLogicalBase(const BusinessObject &ifObj,  const std::string &logicalName, bool &boolRetValue, bool &isNull );


    ///
    /// Array of Logical Values
    /// @version Tc 8
    /// @param logicalArrayName - Array of Logical Names
    /// @param vectorLogicalVals - Vector of Logical Values
    /// @param vectorIsNullVals - are the Value Null
    /// @return - Returns the status as Integer
    ///
    int  getLogicalArrayBase(const BusinessObject &ifObj,  const std::string &logicalArrayName, std::vector< int > &vectorLogicalVals, std::vector< int > &vectorIsNullVals );


    ///
    /// Returns the String
    /// @version Tc 8
    /// @param stringName - The name of the String
    /// @param stringRetValue - The value of the string
    /// @param isNull - Is the String Null
    /// @return - Returns the status as Integer
    ///
    int  getStringBase(const BusinessObject &ifObj,  const std::string &stringName, std::string &stringRetValue, bool &isNull );


    ///
    /// To get the StringArray
    /// @version Tc 8
    /// @param stringArrayName - The String name
    /// @param vectorStringVals - Vector of Strings
    /// @param vectorIsNullVals - vector of booleans
    /// @return - Returns the status as Integer
    ///
    int  getStringArrayBase(const BusinessObject &ifObj,  const std::string &stringArrayName, std::vector< std::string > &vectorStringVals, std::vector< int > &vectorIsNullVals );


    ///
    /// Returns the Tag
    /// @version Tc 8
    /// @param tagName - The name of the Tag
    /// @param tagRetValue - The value of the Tag
    /// @param isNull - Is the Value Null
    /// @return - Returns the status as Integer
    ///
    int  getTagBase(const BusinessObject &ifObj,  const std::string &tagName, tag_t &tagRetValue, bool &isNull );


    ///
    /// Array of Tags
    /// @version Tc 8
    /// @param tagArrayName - Nameof the Tag Array
    /// @param vectorTagVals - Vector of Tags
    /// @param vectorIsNullVals - are the Value Null
    /// @return - Returns the status as Integer
    ///
    int  getTagArrayBase(const BusinessObject &ifObj,  const std::string &tagArrayName, std::vector< tag_t > &vectorTagVals, std::vector< int > &vectorIsNullVals );


    ///
    /// perform deep copy
    /// @version Teamcenter 9
    /// @param pOperationInput - desc
    /// @param vecDeepCopyData - deep copy data
    /// @return - returns an int
    ///
    int  performDeepCopyBase(const BusinessObject &ifObj,  ::Teamcenter::OperationInput *pOperationInput, std::vector<  ::Teamcenter::DeepCopyData* > *vecDeepCopyData );


    ///
    /// To set the character
    /// @version Tc 8
    /// @param charName - The Name
    /// @param charValue - The Character Value
    /// @param isNull - Is the Value Null
    /// @return - Returns an Integer
    ///
    int  setCharBase(const BusinessObject &ifObj,  const std::string &charName, const char &charValue, bool isNull );


    ///
    /// To set the character array
    /// @version Tc 8
    /// @param charArrayName - charArrayName
    /// @param vectorCharVals - vectorCharVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an Integer
    ///
    int  setCharArrayBase(const BusinessObject &ifObj,  const std::string &charArrayName, const std::vector< char > &vectorCharVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the Date
    /// @version Tc 8
    /// @param dateName - dateName
    /// @param dateValue - dateValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setDateBase(const BusinessObject &ifObj,  const std::string &dateName, const date_t &dateValue, bool isNull );


    ///
    /// To set the Date Array
    /// @version Tc 8
    /// @param dateArrayName - dateArrayName
    /// @param vectorDateVals - vectorDateVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an Integer
    ///
    int  setDateArrayBase(const BusinessObject &ifObj,  const std::string &dateArrayName, const std::vector< date_t > &vectorDateVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the Double Value
    /// @version Tc 8
    /// @param doubleName - doubleName
    /// @param doubleValue - doubleValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setDoubleBase(const BusinessObject &ifObj,  const std::string &doubleName, const double &doubleValue, bool isNull );


    ///
    /// To set the double array
    /// @version Tc 8
    /// @param doubleArrayName - doubleArrayName
    /// @param vectorDoubleVals - vectorDoubleVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an Integer
    ///
    int  setDoubleArrayBase(const BusinessObject &ifObj,  const std::string &doubleArrayName, const std::vector< double > &vectorDoubleVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set an Integer
    /// @version Tc 8
    /// @param intName - The name of the integer
    /// @param intValue - The Integer Value
    /// @param isNull - Is the value Null
    /// @return - Returns status as Integer
    ///
    int  setIntBase(const BusinessObject &ifObj,  const std::string &intName, const int &intValue, bool isNull );


    ///
    /// To the the Array of Integer type data on BusinessObject
    /// @version Tc 8
    /// @param intArrayName - name of the integer array
    /// @param vectorIntVals - vector or array of integer values
    /// @param vectorIsNullVals - vector of isNulls
    /// @return - success or failure
    ///
    int  setIntArrayBase(const BusinessObject &ifObj,  const std::string &intArrayName, const std::vector< int > &vectorIntVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the Logical Value
    /// @version Tc 8
    /// @param logicalName - logicalName
    /// @param logicalValue - logicalValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setLogicalBase(const BusinessObject &ifObj,  const std::string &logicalName, const bool logicalValue, bool isNull );


    ///
    /// To set Logical Array
    /// @version Tc 8
    /// @param boolArrayName - boolArrayName
    /// @param vectorboolVals - vectorboolVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an Integer
    ///
    int  setLogicalArrayBase(const BusinessObject &ifObj,  const std::string &boolArrayName, const std::vector< int > &vectorboolVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the String
    /// @version Tc 8
    /// @param stringName - stringName
    /// @param stringValue - stringValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setStringBase(const BusinessObject &ifObj,  const std::string &stringName, const std::string &stringValue, bool isNull );


    ///
    /// To set the string array
    /// @version Tc 8
    /// @param stringArrayName - stringArrayName
    /// @param vectorStringVals - vectorStringVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an integer
    ///
    int  setStringArrayBase(const BusinessObject &ifObj,  const std::string &stringArrayName, const std::vector< std::string > &vectorStringVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the tag
    /// @version Tc 8
    /// @param tagName - tagName
    /// @param tagValue - tagValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setTagBase(const BusinessObject &ifObj,  const std::string &tagName, const tag_t &tagValue, bool isNull );


    ///
    /// To set the Tag Array
    /// @version Tc 8
    /// @param tagArrayName - tagArrayName
    /// @param vectorTagVals - vectorTagVals
    /// @param vectorIsNullVals - vectorIsNullVals
    /// @return - Returns an Integer
    ///
    int  setTagArrayBase(const BusinessObject &ifObj,  const std::string &tagArrayName, const std::vector< tag_t > &vectorTagVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// desc for validate for create
    /// @version Tc 8
    /// @param creInput - desc for creInput parameter
    /// @return - ret desc for validate for create
    ///
    int  createBase(const BusinessObject &ifObj,  ::Teamcenter::CreateInput *creInput );


    ///
    /// desc for createPost
    /// @version Tc 8
    /// @param creInput - Description for the Create Input
    /// @return - return desc for createPost
    ///
    int  createPostBase(const BusinessObject &ifObj,  ::Teamcenter::CreateInput *creInput );


    ///
    /// Description for the Finalize Create Input
    /// @version Tc 8
    /// @param creInput - desc for  creInput parameter
    /// @return - Return desc for Initialize for Create
    ///
    int  finalizeCreateInputBase(const BusinessObject &ifObj,  ::Teamcenter::CreateInput *creInput );


    ///
    /// finalize operation input
    /// @version Teamcenter 9
    /// @param pSavAsInput - desc
    /// @param vecDeepCopyData - desc
    /// @return - returns an int
    ///
    int  finalizeSaveAsInputBase(const BusinessObject &ifObj,  ::Teamcenter::SaveAsInput *pSavAsInput, std::vector<  ::Teamcenter::DeepCopyData* > *vecDeepCopyData );


    ///
    /// save as operation
    /// @version Teamcenter 9
    /// @param pSavAsInput - save as input
    /// @param vecDeepCopyData - vector deepcopy data
    /// @param newObjTag - new object tag
    /// @return - returns an int
    ///
    int  saveAsBase(const BusinessObject &ifObj,  ::Teamcenter::SaveAsInput *pSavAsInput, std::vector<  ::Teamcenter::DeepCopyData* > *vecDeepCopyData, tag_t *newObjTag );


    ///
    /// Generic saveAsPost operation.
    /// @version Teamcenter 8.1
    /// @param pSavAsInput - Input argument as SaveAsInput object.
    /// @param vecDeepCopyData - vector deepcopy data
    /// @return - Return integer value.
    ///
    int  saveAsPostBase(const BusinessObject &ifObj,  ::Teamcenter::SaveAsInput *pSavAsInput, std::vector<  ::Teamcenter::DeepCopyData* > *vecDeepCopyData );


    ///
    /// desc for setPropertiesFromCreateInpu
    /// @version Tc 8
    /// @param creInput - Description for CreateInput
    /// @return - return desc for setPropertiesFromCreateInput
    ///
    int  setPropertiesFromCreateInputBase(const BusinessObject &ifObj,  ::Teamcenter::CreateInput *creInput );


    ///
    /// setproperties from saveas input
    /// @version Teamcenter 9
    /// @param pSavAsInput - desc
    /// @return - returns an int
    ///
    int  setPropertiesFromSaveAsInputBase(const BusinessObject &ifObj,  ::Teamcenter::SaveAsInput *pSavAsInput );


    ///
    /// desc for validate for create
    /// @version Tc 8
    /// @param creInput - desc for creInput parameter
    /// @return - ret desc for validate for create
    ///
    int  validateCreateInputBase(const BusinessObject &ifObj,  ::Teamcenter::CreateInput *creInput );


    ///
    /// validate saveas input
    /// @version Teamcenter 9
    /// @param pSavAsInput - desc
    /// @param vecDeepCopyData - desc
    /// @return - returns an int
    ///
    int  validateSaveAsInputBase(const BusinessObject &ifObj,  ::Teamcenter::SaveAsInput *pSavAsInput, std::vector<  ::Teamcenter::DeepCopyData* > *vecDeepCopyData );



protected:
    //  Pointer to the instance
    static BusinessObjectDelegate*  m_pInstance;

    BusinessObjectDelegate();
    virtual ~BusinessObjectDelegate();
    static void setInstance( BusinessObjectDelegate*  instance );


private:
    friend class  ::Teamcenter::BusinessObjectGenImpl;

};

#include <metaframework/libmetaframework_undef.h>
#endif  //  TEAMCENTER__BUSINESSOBJECTDELEGATE_HXX
