Closed Bug 767240 Opened 7 years ago Closed 7 years ago

Make it easier to create type-specific scoped pointers (TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE)

Categories

(Core :: MFBT, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla18

People

(Reporter: briansmith, Assigned: briansmith)

References

Details

Attachments

(1 file)

Some types (usually C types) need to be deleted with something other than free or delete. For example, PRFileDesc* needs to be deleted with PR_Close(), and NSS types usually need to be deleted using XXXX_DestroyYYYYYYY() functions.

This macro and template make it easy to define types like "ScopedPRFileDesc" that work like ScopedDeletePtr.
Attachment #635572 - Flags: review?(jwalden+bmo)
Assignee: nobody → bsmith
Comment on attachment 635572 [details] [diff] [review]
Add TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE to mftb/Scoped.h

Review of attachment 635572 [details] [diff] [review]:
-----------------------------------------------------------------

::: mfbt/Scoped.h
@@ +240,5 @@
> + *       ScopedPRFileDesc file(PR_OpenFile(...));
> + *       ...
> + *   } // file is closed with PR_Close here
> + */
> +#define TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(name, Type, Deleter) \

This file doesn't do it right now, something got missed during reviews, but this macro (and all other macros in exported mfbt headers, except for the whole-file include guards) should be MOZ_-prefixed.  Please do that for these new macros, so that the mistake doesn't propagate, at least?

@@ +248,5 @@
> +template <typename T>
> +struct TypeSpecificScopedPointerTraits
> +{
> +    typedef T* type;
> +    const static type empty() { return nsnull; }

mfbt uses NULL.

@@ +253,5 @@
> +    const static void release(type value)
> +    {
> +      if (value) {
> +        TypeSpecificDelete(value);
> +      }

No braces around single-line statements in mfbt code, see mfbt/STYLE.
Attachment #635572 - Flags: review?(jwalden+bmo) → review+
https://hg.mozilla.org/integration/mozilla-inbound/rev/7faf6b82017f

Thanks for the review. I addressed all of the review comments.
Target Milestone: --- → mozilla18
https://hg.mozilla.org/mozilla-central/rev/7faf6b82017f
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.