/*==================================================================================================

Copyright (c) 2007 UGS
Unpublished - All rights reserved

====================================================================================================
File description:

Filename: setLogicalArrayOperationDispatcher.hxx
Module  : extensionframework

This is the root interface class of the setLogicalArrayOperationDispatcher. It contains of all the generic methods
for setLogicalArrayOperationDispatcher that can be reused by the derived classes.

====================================================================================================
Date      Name                    Description of Change
$HISTORY$
==================================================================================================*/
#ifndef setLogicalArrayOperationDispatcher_HXX
#define setLogicalArrayOperationDispatcher_HXX

#include <extensionframework/PropOperationDispatcher.hxx>
#include <extensionframework/libextensionframework_exports.h>

namespace Teamcenter
{
    class setLogicalArrayOperationDispatcher;
    class PropOperationDispatcher;
}

class EXTENSIONFRAMEWORK_API Teamcenter::setLogicalArrayOperationDispatcher : public Teamcenter::PropOperationDispatcher
{
public:
    setLogicalArrayOperationDispatcher();
    virtual ~setLogicalArrayOperationDispatcher();
    static OperationDispatcher *constructor();

    void executePreConditions( METHOD_message_t &  msg,  va_list  args ) const;
    void executePreActions( METHOD_message_t &  msg,  va_list  args ) const;
    void executePostActions( METHOD_message_t &  msg,  va_list  args ) const;

    void setLogicalArrayPreConditions( Teamcenter::BusinessObject* obj, const std::vector<int>& boolValues,  const std::vector<int>* isNullVals ) const;
    void setLogicalArrayPreActions( Teamcenter::BusinessObject* obj, const std::vector<int>& boolValues,  const std::vector<int>* isNullVals  ) const;
    void setLogicalArrayBaseAction( Teamcenter::BusinessObject* obj, const std::vector<int>& boolValues,  const std::vector<int>* isNullVals  ) const;
    void setLogicalArrayPostActions( Teamcenter::BusinessObject* obj, const std::vector<int>& boolValues,  const std::vector<int>* isNullVals  ) const;

    // Project 011450 changes
    void setLogicalArrayPreConditions( METHOD_message_t* msgData, int num, const logical* boolValues,  const logical* isNullVals ) const;
    void setLogicalArrayPreActions( METHOD_message_t* msgData, int num, const logical* boolValues,  const logical* isNullVals ) const;
    void setLogicalArrayPostActions( METHOD_message_t* msgData, int num, const logical* boolValues,  const logical* isNullVals ) const;
    void setLogicalArrayBaseAction( METHOD_message_t* msgData, int num, const logical* boolValues,  const logical* isNullVals ) const;

    void setLogicalArray( Teamcenter::BusinessObject* obj, const std::vector<int>& boolValues,  const std::vector<int>* isNullVals  ) const;

    void execute(Teamcenter::BusinessObject* obj,  std::vector<void*>&  args ) const;
    void execute( tag_t objTag, va_list  args ) const;
    void execute( Teamcenter::BusinessObject* obj,  va_list  args  ) const;


    //Fix compiler warnings that were hiding virtual functions
    using Teamcenter::OperationDispatcher::executePreConditions;
    using Teamcenter::OperationDispatcher::executePreActions;
    using Teamcenter::OperationDispatcher::executePostActions;

};

#include <extensionframework/libextensionframework_undef.h>
#endif //setLogicalArrayOperationDispatcher_HXX
