Skip to content
  • Mark OLESEN's avatar
    ENH: regIOobject store() now also registers the object · b0072bfa
    Mark OLESEN authored and Mattijs Janssens's avatar Mattijs Janssens committed
    - previously the store() method just set the ownedByRegistry flag.
      Now ensure that it is indeed registered first.
    
    - support register/store of tmp<> items.
      The tmp parameter is not cleared, but changed from PTR to CREF
      to allow further use.
    
      The implicit registration allows code simplification using the
      GeometricField::New factory method, for example.
    
      Old Code
      ========
          volScalarField* ptr = new volScalarField
          (
              IOobject
              (
                  fieldName,
                  mesh.time().timeName(),
                  mesh,
                  IOobject::NO_READ,
                  IOobject::NO_WRITE,
                  true  // Register
              ),
              mesh,
              dimless,
              zeroGradientFvPatchField<scalar>::typeName
          );
          ptr->store();
    
      New Code
      ========
          auto tptr = volScalarField::New
          (
              fieldName,
              mesh,
              dimless,
              zeroGradientFvPatchField<scalar>::typeName
          );
          regIOobject::store(tptr);
    
      or even
          regIOobject::store
          (
              volScalarField::New
              (
                  fieldName,
                  mesh,
                  dimless,
                  zeroGradientFvPatchField<scalar>::typeName
              )
          );
    b0072bfa