# class ov::frontend::DecoderTransformationExtension¶

## Overview¶

Holds a transformation that is applied just after the original model graph is decoded. This class is a holder for transformation. The transformation can be specified as FunctionPass or MathcerPass derivatives or as a function that can be used to build corresponding FunctionPass or MatcherPass object. The type of the extension is determined in the moment of creation by calling corresponding ctor. More…

#include <decoder_transformation.hpp>

class DecoderTransformationExtension: public ov::Extension
{
public:
// typedefs

typedef std::shared_ptr<DecoderTransformationExtension> Ptr;

// construction

DecoderTransformationExtension();
DecoderTransformationExtension(const std::function<bool(std::shared_ptr<ov::Model>)>& function_pass);
DecoderTransformationExtension(const std::function<void(ov::pass::MatcherPass \*)>& matcher_pass_initializer);

template <
typename Transformation,
typename std::enable_if<std::is_base_of<ov::pass::PassBase, Transformation>::value, bool>::type = true
>
DecoderTransformationExtension(const Transformation& transformation);

// methods

void register_pass(ov::pass::Manager& manager) const;
};

// direct descendants

class JsonConfigExtension;
class JsonTransformationExtension;

### Inherited Members¶

public:
// typedefs

typedef std::shared_ptr<Extension> Ptr;

## Detailed Documentation¶

Holds a transformation that is applied just after the original model graph is decoded. This class is a holder for transformation. The transformation can be specified as FunctionPass or MathcerPass derivatives or as a function that can be used to build corresponding FunctionPass or MatcherPass object. The type of the extension is determined in the moment of creation by calling corresponding ctor.

### Construction¶

DecoderTransformationExtension(const std::function<bool(std::shared_ptr<ov::Model>)>& function_pass)

Create a custom functional pass where code of the pass is implemented as a function.

DecoderTransformationExtension(const std::function<void(ov::pass::MatcherPass \*)>& matcher_pass_initializer)

Create a custom matcher pass where the code of matcher pass initialization is a given function.

template <
typename Transformation,
typename std::enable_if<std::is_base_of<ov::pass::PassBase, Transformation>::value, bool>::type = true
>
DecoderTransformationExtension(const Transformation& transformation)

Register existing transformation object which will be copied and kept for further registration.

### Methods¶

void register_pass(ov::pass::Manager& manager) const

Register pass from this object in a given pass manager object.