aboutsummaryrefslogtreecommitdiff
path: root/src/BTLS/CreateWithFinalizer.hs
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbaren@google.com>2018-08-02 17:08:44 -0400
committerGravatar Benjamin Barenblat <bbaren@google.com>2018-08-02 17:08:44 -0400
commit2152e7728db7e0cf86ea23d29a05294af24b6898 (patch)
tree68d29e2afe6a92391350e36ef67c4f7489ed715d /src/BTLS/CreateWithFinalizer.hs
parent5214c3f61d3aaaf18baff8020a066cc2160d612d (diff)
Begin cleaning up internal modules
Clarify the division between internal and external modules in the source by consolidating all internal modules except Data.Digest.Internal into a flatter BTLS directory.
Diffstat (limited to 'src/BTLS/CreateWithFinalizer.hs')
-rw-r--r--src/BTLS/CreateWithFinalizer.hs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/BTLS/CreateWithFinalizer.hs b/src/BTLS/CreateWithFinalizer.hs
new file mode 100644
index 0000000..3862225
--- /dev/null
+++ b/src/BTLS/CreateWithFinalizer.hs
@@ -0,0 +1,27 @@
+-- Copyright 2018 Google LLC
+--
+-- Licensed under the Apache License, Version 2.0 (the "License"); you may not
+-- use this file except in compliance with the License. You may obtain a copy of
+-- the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+-- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+-- License for the specific language governing permissions and limitations under
+-- the License.
+
+module BTLS.CreateWithFinalizer (createWithFinalizer) where
+
+import Foreign
+ (FinalizerPtr, ForeignPtr, Ptr, Storable, addForeignPtrFinalizer,
+ mallocForeignPtr, withForeignPtr)
+
+createWithFinalizer ::
+ Storable a => (Ptr a -> IO ()) -> FinalizerPtr a -> IO (ForeignPtr a)
+createWithFinalizer initialize finalize = do
+ fp <- mallocForeignPtr
+ withForeignPtr fp initialize
+ addForeignPtrFinalizer finalize fp
+ return fp