Added PHYSFS_getAllocator().
authorRyan C. Gordon <icculus@icculus.org>
Sat, 28 Mar 2009 16:15:03 -0400
changeset 973 48ad89e6042c
parent 972 254427fc42ab
child 974 5cabc31eb563
Added PHYSFS_getAllocator().
src/physfs.c
src/physfs.h
--- a/src/physfs.c	Fri Mar 27 15:10:42 2009 -0400
+++ b/src/physfs.c	Sat Mar 28 16:15:03 2009 -0400
@@ -2153,6 +2153,13 @@
 } /* PHYSFS_setAllocator */
 
 
+const PHYSFS_Allocator *PHYSFS_getAllocator(void)
+{
+    BAIL_IF_MACRO(!initialized, ERR_NOT_INITIALIZED, NULL);
+    return &allocator;
+} /* PHYSFS_getAllocator */
+
+
 static void *mallocAllocatorMalloc(PHYSFS_uint64 s)
 {
     BAIL_IF_MACRO(__PHYSFS_ui64FitsAddressSpace(s), ERR_OUT_OF_MEMORY, NULL);
--- a/src/physfs.h	Fri Mar 27 15:10:42 2009 -0400
+++ b/src/physfs.h	Sat Mar 28 16:15:03 2009 -0400
@@ -2380,6 +2380,44 @@
 
 /* Everything above this line is part of the PhysicsFS 2.0 API. */
 
+/**
+ * \fn const PHYSFS_Allocator *PHYSFS_getAllocator(void)
+ * \brief Discover the current allocator.
+ *
+ * (This is for limited, hardcore use. If you don't immediately see a need
+ *  for it, you can probably ignore this forever.)
+ *
+ * This function exposes the function pointers that make up the currently-used
+ *  allocator. This can be useful for apps that want to access PhysicsFS's
+ *  internal, default allocation routines, as well as for external code that
+ *  wants to share the same allocator, even if the application specified their
+ *  own.
+ *
+ * This call is only valid between PHYSFS_init() and PHYSFS_deinit() calls;
+ *  it will return NULL if the library isn't initialized. As we can't
+ *  guarantee the state of the internal allocators unless the library is
+ *  initialized, you shouldn't use any allocator returned here after a call
+ *  to PHYSFS_deinit().
+ *
+ * Do not call the returned allocator's Init() or Deinit() methods under any
+ *  circumstances.
+ *
+ * If you aren't immediately sure what to do with this function, you can
+ *  safely ignore it altogether.
+ *
+ *  \return Current allocator, as set by PHYSFS_setAllocator(), or PhysicsFS's
+ *          internal, default allocator if no application-defined allocator
+ *          is currently set. Will return NULL if the library is not
+ *          initialized.
+ *
+ * \sa PHYSFS_Allocator
+ * \sa PHYSFS_setAllocator
+ */
+__EXPORT__ const PHYSFS_Allocator *PHYSFS_getAllocator(void);
+
+
+/* Everything above this line is part of the PhysicsFS 2.1 API. */
+
 
 #ifdef __cplusplus
 }