//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, OperationInputDelegate
    Filename:   OperationInputDelegate.hxx
    Module:     metaframework
    @BMIDE autogenerated
==================================================================================================*/

#ifndef TEAMCENTER__OPERATIONINPUTDELEGATE_HXX
#define TEAMCENTER__OPERATIONINPUTDELEGATE_HXX

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

#include <metaframework/libmetaframework_exports.h>

namespace Teamcenter
{
    class OperationInputDelegate;
}
namespace Teamcenter
{
    class OperationInputImpl;
}
namespace Teamcenter
{
    class OperationInput;
}
namespace Teamcenter
{
    class OperationInputGenImpl;
}

namespace Teamcenter_alias = ::Teamcenter;


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

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

    //  Method to create the OperationInputImpl pointer
    static OperationInputImpl*  createImpl( OperationInput&  ifObj );

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


    ///
    /// Returns the Business Object Name
    /// @version Tc 8
    /// @param busObjName - The name of the business object
    /// @return - Returns an Integer
    ///
    int  getBusinessObjectNameBase(const OperationInput &ifObj,  std::string &busObjName );


    ///
    /// 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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &ifObj,  const std::string &dateArrayName, std::vector< date_t > &dateArrayRetValue, std::vector< int > &isNull );


    ///
    /// Returns the Display Values for the input property
    /// @version Teamcenter 11.1
    /// @param stringName - The name of the property
    /// @param vectorDispVals - The display values for the property
    /// @param vectorIsNullVals - vector of isNull Values
    /// @return - Returns the status as Integer
    ///
    int  getDisplayValuesBase(const OperationInput &ifObj,  const std::string *stringName, std::vector< std::string > *vectorDispVals, std::vector< int > *vectorIsNullVals );


    ///
    /// 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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &ifObj,  const std::string &tagArrayName, std::vector< tag_t > &vectorTagVals, std::vector< int > &vectorIsNullVals );


    ///
    /// Sets the Business Object Name
    /// @version Tc 8
    /// @param busObjName - The name of the business object
    /// @return - Returns the String name of the Business Object
    ///
    int  setBusinessObjectNameBase(const OperationInput &ifObj,  const std::string &busObjName );


    ///
    /// 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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &ifObj,  const std::string &dateArrayName, const std::vector< date_t > &vectorDateVals, const std::vector< int > *vectorIsNullVals );


    ///
    /// To set the Display Value
    /// @version Tc 8
    /// @param stringName - name of the string
    /// @param stringValue - value of the string
    /// @return - success or failure
    ///
    int  setDisplayValueBase(const OperationInput &ifObj,  const std::string &stringName, const std::string &stringValue );


    ///
    /// To set the Double Value
    /// @version Tc 8
    /// @param doubleName - doubleName
    /// @param doubleValue - doubleValue
    /// @param isNull - isNull
    /// @return - Returns an Integer
    ///
    int  setDoubleBase(const OperationInput &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 OperationInput &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 OperationInput &ifObj,  const std::string &intName, const int &intValue, bool isNull );


    ///
    /// To the the Array of Integer type data on OperationInput
    /// @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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &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 OperationInput &ifObj,  const std::string &tagArrayName, const std::vector< tag_t > &vectorTagVals, const std::vector< int > *vectorIsNullVals );



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

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


private:
    friend class  ::Teamcenter::OperationInputGenImpl;

};

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