atomic_three_ctor

View page source

Atomic Function Constructor

Syntax

class atomic_user : public CppAD::atomic_three< Base > {
public:
      atomic_user ( ctor_arg_list ) : CppAD::atomic_three< Base >( name )
      …
};
atomic_user afun ( ctor_arg_list )

Prototype

template <class Base>
atomic_three<Base>::atomic_three(const std::string& name )

atomic_user

ctor_arg_list

Is a list of arguments for the atomic_user constructor.

afun

The object afun must stay in scope for as long as the corresponding atomic function is used. This includes use by any ADFun<Base> that has this atomic_user operation in its operation sequence .

Implementation

The user defined atomic_user class is a publicly derived class of atomic_three < Base > . It should be declared as follows:

      class atomic_user : public CppAD::atomic_three< Base > {
      public:
            atomic_user ( ctor_arg_list ) : atomic_three < Base >( name )
      …
      };

where … denotes the rest of the implementation of the derived class. This includes completing the constructor and all the virtual functions that have their atomic_three implementations replaced by atomic_user implementations.

atomic_three

Restrictions

The atomic_three constructor and destructor cannot be called in parallel mode.

Base

The template parameter determines the Base type for this AD < Base > atomic operation.

name

This atomic_three constructor argument has the following prototype

const std::string& name

It is the name for this atomic function and is used for error reporting. The suggested value for name is afun or atomic_user , i.e., the name of the corresponding atomic object or class.

Example

Define Constructor

The following is an example of a atomic function constructor definition: get_started.cpp .

Use Constructor

The following is an example using a atomic function constructor: get_started.cpp .