Improve alignment of its behaviour with std::unique_ptr - element_type typedef - release() method - identical to ptr() method - get() method to get the pointer without checking and without releasing it. - operator*() for dereferencing Method name changes - renamed rawPtr() to get() - renamed rawRef() to ref(), removed unused const version. Removed methods/operators - assignment from a raw pointer was deleted (was rarely used). Can be convenient, but uncontrolled and potentially unsafe. Do allow assignment from a literal nullptr though, since this can never leak (and also corresponds to the unique_ptr API). Additional methods - clone() method: forwards to the clone() method of the underlying data object with argument forwarding. - reset(autoPtr&&) as an alternative to operator=(autoPtr&&) STYLE: avoid implicit conversion from autoPtr to object type in many places - existing implementation has the following: operator const T&() const { return operator*(); } which means that the following code works: autoPtr<mapPolyMesh> map = ...; updateMesh(*map); // OK: explicit dereferencing updateMesh(map()); // OK: explicit dereferencing updateMesh(map); // OK: implicit dereferencing for clarity it may preferable to avoid the implicit dereferencing - prefer operator* to operator() when deferenced a return value so it is clearer that a pointer is involve and not a function call etc Eg, return *meshPtr_; vs. return meshPtr_();
48 lines
1.1 KiB
C
48 lines
1.1 KiB
C
IOdictionary pdfDictionary
|
|
(
|
|
IOobject
|
|
(
|
|
"pdfDict",
|
|
runTime.constant(),
|
|
runTime,
|
|
IOobject::MUST_READ_IF_MODIFIED,
|
|
IOobject::NO_WRITE
|
|
)
|
|
);
|
|
|
|
const label nIntervals(readLabel(pdfDictionary.lookup("nIntervals")));
|
|
|
|
const label nSamples(readLabel(pdfDictionary.lookup("nSamples")));
|
|
|
|
const bool writeData(readBool(pdfDictionary.lookup("writeData")));
|
|
|
|
|
|
const fileName pdfPath = runTime.path()/"pdf";
|
|
mkDir(pdfPath);
|
|
|
|
Random rndGen;
|
|
|
|
autoPtr<distributionModel> p
|
|
(
|
|
distributionModel::New
|
|
(
|
|
pdfDictionary,
|
|
rndGen
|
|
)
|
|
);
|
|
|
|
const scalar xMin = p->minValue();
|
|
const scalar xMax = p->maxValue();
|
|
|
|
autoPtr<OFstream> filePtr;
|
|
if (writeData)
|
|
{
|
|
fileName fName = pdfPath/(p->type() + ".data");
|
|
Info<< "Writing " << p->type() << " data samples to file:" << nl
|
|
<< fName << nl << endl;
|
|
|
|
filePtr.reset(new OFstream(fName));
|
|
}
|
|
|
|
scalarField samples(nIntervals, 0);
|