2#ifndef BL_FABFACTORY_H_
3#define BL_FABFACTORY_H_
4#include <AMReX_Config.H>
59 virtual FAB*
create (const
Box& box,
int ncomps, const
FabInfo& info,
int box_index) const = 0;
61 virtual FAB*
create_alias (FAB const& ,
int ,
int )
const {
return nullptr; }
62 virtual void destroy (FAB* fab)
const = 0;
65 if constexpr (IsBaseFab_v<FAB>) {
66 return box.
numPts() * ncomps * Long(
sizeof(
typename FAB::value_type));
85 FAB*
create_alias (FAB
const& rhs,
int scomp,
int ncomp)
const override
#define AMREX_NODISCARD
Definition AMReX_Extension.H:251
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:100
AMREX_GPU_HOST_DEVICE Long numPts() const noexcept
Returns the number of points contained in the BoxND.
Definition AMReX_Box.H:346
Definition AMReX_FabFactory.H:76
AMREX_NODISCARD FAB * create_alias(FAB const &rhs, int scomp, int ncomp) const override
Definition AMReX_FabFactory.H:85
AMREX_NODISCARD DefaultFabFactory< FAB > * clone() const override
Definition AMReX_FabFactory.H:96
void destroy(FAB *fab) const override
Definition AMReX_FabFactory.H:90
AMREX_NODISCARD FAB * create(const Box &box, int ncomps, const FabInfo &info, int) const override
Definition AMReX_FabFactory.H:79
Definition AMReX_FabFactory.H:50
virtual AMREX_NODISCARD FabFactory< FAB > * clone() const =0
virtual AMREX_NODISCARD FAB * create(const Box &box, int ncomps, const FabInfo &info, int box_index) const =0
virtual AMREX_NODISCARD Long nBytes(const Box &box, int ncomps, int) const
Definition AMReX_FabFactory.H:64
virtual void destroy(FAB *fab) const =0
virtual AMREX_NODISCARD FAB * create_alias(FAB const &, int, int) const
Definition AMReX_FabFactory.H:61
FabFactory() noexcept=default
Definition AMReX_Amr.cpp:49
@ make_alias
Definition AMReX_MakeType.H:7
FabType
Definition AMReX_FabFactory.H:18
Definition AMReX_FabFactory.H:27
FabInfo & SetShared(bool s) noexcept
Definition AMReX_FabFactory.H:37
bool alloc
Definition AMReX_FabFactory.H:28
bool shared
Definition AMReX_FabFactory.H:29
FabInfo & SetAlloc(bool a) noexcept
Definition AMReX_FabFactory.H:32
FabInfo & SetArena(Arena *ar) noexcept
Definition AMReX_FabFactory.H:42
Arena * arena
Definition AMReX_FabFactory.H:30