1 |
\hypertarget{group__alloc}{ |
2 |
\section{Allocation} |
3 |
\label{group__alloc}\index{Allocation@{Allocation}} |
4 |
} |
5 |
|
6 |
|
7 |
\subsection{Detailed Description} |
8 |
\begin{Desc} |
9 |
\item[]Peak's allocation mechanism uses the standard malloc/free pair but can be configured as wish with \hyperlink{group__alloc_ga3}{peak\_\-alloc\_\-configure()} providing your own allocation and deallocation primitives.\end{Desc} |
10 |
\begin{Desc} |
11 |
\item[]Although written in C, peak is object oriented and features a lightweight support for reference counting in all peak objects. This module offers access to the \hyperlink{group__alloc_ga6}{peak\_\-retain()} an \hyperlink{group__alloc_ga7}{peak\_\-release()} method.\par |
12 |
Strings, however, are normal C strings and not wrapped by the peak library. For convenience, a \hyperlink{group__alloc_ga6}{peak\_\-strdup()} method is provided as well. \end{Desc} |
13 |
|
14 |
|
15 |
\subsection*{Typedefs} |
16 |
\begin{CompactItemize} |
17 |
\item |
18 |
\hypertarget{group__alloc_ga0}{ |
19 |
typedef void $\ast$($\ast$ \hyperlink{group__alloc_ga0}{peak\_\-alloc\_\-malloc\_\-func} )(size\_\-t size)} |
20 |
\label{group__alloc_ga0} |
21 |
|
22 |
\begin{CompactList}\small\item\em Malloc-like function pointer type. \item\end{CompactList}\item |
23 |
\hypertarget{group__alloc_ga1}{ |
24 |
typedef void($\ast$ \hyperlink{group__alloc_ga1}{peak\_\-alloc\_\-free\_\-func} )(void $\ast$p)} |
25 |
\label{group__alloc_ga1} |
26 |
|
27 |
\begin{CompactList}\small\item\em Free-like function pointer type. \item\end{CompactList}\end{CompactItemize} |
28 |
\subsection*{Functions} |
29 |
\begin{CompactItemize} |
30 |
\item |
31 |
void \hyperlink{group__alloc_ga2}{peak\_\-alloc\_\-configure} (\hyperlink{group__alloc_ga0}{peak\_\-alloc\_\-malloc\_\-func} malloc\_\-fun, \hyperlink{group__alloc_ga1}{peak\_\-alloc\_\-free\_\-func} free\_\-fun) |
32 |
\begin{CompactList}\small\item\em Configure peak's allocation for your program. \item\end{CompactList}\item |
33 |
void $\ast$ \hyperlink{group__alloc_ga3}{peak\_\-allocate} (size\_\-t size) |
34 |
\begin{CompactList}\small\item\em Allocate memory. \item\end{CompactList}\item |
35 |
void \hyperlink{group__alloc_ga4}{peak\_\-deallocate} (void $\ast$ptr) |
36 |
\begin{CompactList}\small\item\em Free memory. \item\end{CompactList}\item |
37 |
char $\ast$ \hyperlink{group__alloc_ga5}{peak\_\-strdup} (const char $\ast$str) |
38 |
\begin{CompactList}\small\item\em Copy a string. \item\end{CompactList}\item |
39 |
void $\ast$ \hyperlink{group__alloc_ga6}{peak\_\-retain} (void $\ast$obj) |
40 |
\begin{CompactList}\small\item\em Retain a peak object. \item\end{CompactList}\item |
41 |
void \hyperlink{group__alloc_ga7}{peak\_\-release} (void $\ast$obj) |
42 |
\begin{CompactList}\small\item\em Release a peak object. \item\end{CompactList}\item |
43 |
int \hyperlink{group__alloc_ga8}{peak\_\-get\_\-retcnt} (void $\ast$obj) |
44 |
\begin{CompactList}\small\item\em Get the retain count of a peak object. \item\end{CompactList}\end{CompactItemize} |
45 |
|
46 |
|
47 |
\subsection{Function Documentation} |
48 |
\hypertarget{group__alloc_ga2}{ |
49 |
\index{alloc@{alloc}!peak_alloc_configure@{peak\_\-alloc\_\-configure}} |
50 |
\index{peak_alloc_configure@{peak\_\-alloc\_\-configure}!alloc@{alloc}} |
51 |
\subsubsection[peak\_\-alloc\_\-configure]{\setlength{\rightskip}{0pt plus 5cm}void peak\_\-alloc\_\-configure (\hyperlink{group__alloc_ga0}{peak\_\-alloc\_\-malloc\_\-func} {\em malloc\_\-fun}, \hyperlink{group__alloc_ga1}{peak\_\-alloc\_\-free\_\-func} {\em free\_\-fun})}} |
52 |
\label{group__alloc_ga2} |
53 |
|
54 |
|
55 |
Configure peak's allocation for your program. |
56 |
|
57 |
Pointed functions must properly align memory and be thread-safe like malloc() and free()... |
58 |
|
59 |
\begin{Desc} |
60 |
\item[Parameters:] |
61 |
\begin{description} |
62 |
\item[{\em malloc\_\-fun}]A pointer to your custom malloc-like function. \item[{\em free\_\-fun}]A pointer to your custom free-like function. \end{description} |
63 |
\end{Desc} |
64 |
\hypertarget{group__alloc_ga3}{ |
65 |
\index{alloc@{alloc}!peak_allocate@{peak\_\-allocate}} |
66 |
\index{peak_allocate@{peak\_\-allocate}!alloc@{alloc}} |
67 |
\subsubsection[peak\_\-allocate]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ peak\_\-allocate (size\_\-t {\em size})}} |
68 |
\label{group__alloc_ga3} |
69 |
|
70 |
|
71 |
Allocate memory. |
72 |
|
73 |
\begin{Desc} |
74 |
\item[Parameters:] |
75 |
\begin{description} |
76 |
\item[{\em size}]Number of bytes of memory to allocate.\end{description} |
77 |
\end{Desc} |
78 |
\begin{Desc} |
79 |
\item[Returns:]A pointer to the fresh allocated memory. \end{Desc} |
80 |
\hypertarget{group__alloc_ga4}{ |
81 |
\index{alloc@{alloc}!peak_deallocate@{peak\_\-deallocate}} |
82 |
\index{peak_deallocate@{peak\_\-deallocate}!alloc@{alloc}} |
83 |
\subsubsection[peak\_\-deallocate]{\setlength{\rightskip}{0pt plus 5cm}void peak\_\-deallocate (void $\ast$ {\em ptr})}} |
84 |
\label{group__alloc_ga4} |
85 |
|
86 |
|
87 |
Free memory. |
88 |
|
89 |
\begin{Desc} |
90 |
\item[Parameters:] |
91 |
\begin{description} |
92 |
\item[{\em ptr}]Pointer to the memory space to deallocate. \end{description} |
93 |
\end{Desc} |
94 |
\hypertarget{group__alloc_ga8}{ |
95 |
\index{alloc@{alloc}!peak_get_retcnt@{peak\_\-get\_\-retcnt}} |
96 |
\index{peak_get_retcnt@{peak\_\-get\_\-retcnt}!alloc@{alloc}} |
97 |
\subsubsection[peak\_\-get\_\-retcnt]{\setlength{\rightskip}{0pt plus 5cm}int peak\_\-get\_\-retcnt (void $\ast$ {\em obj})}} |
98 |
\label{group__alloc_ga8} |
99 |
|
100 |
|
101 |
Get the retain count of a peak object. |
102 |
|
103 |
\begin{Desc} |
104 |
\item[Parameters:] |
105 |
\begin{description} |
106 |
\item[{\em obj}]Any peak object.\end{description} |
107 |
\end{Desc} |
108 |
\begin{Desc} |
109 |
\item[Returns:]Retain count or -1 for constant objects. \end{Desc} |
110 |
\hypertarget{group__alloc_ga7}{ |
111 |
\index{alloc@{alloc}!peak_release@{peak\_\-release}} |
112 |
\index{peak_release@{peak\_\-release}!alloc@{alloc}} |
113 |
\subsubsection[peak\_\-release]{\setlength{\rightskip}{0pt plus 5cm}void peak\_\-release (void $\ast$ {\em obj})}} |
114 |
\label{group__alloc_ga7} |
115 |
|
116 |
|
117 |
Release a peak object. |
118 |
|
119 |
Decrease the reference count of the object {\em obj\/}. If the refcount is 0, the object is deallocated. |
120 |
|
121 |
\begin{Desc} |
122 |
\item[Parameters:] |
123 |
\begin{description} |
124 |
\item[{\em obj}]Any peak object. \end{description} |
125 |
\end{Desc} |
126 |
\hypertarget{group__alloc_ga6}{ |
127 |
\index{alloc@{alloc}!peak_retain@{peak\_\-retain}} |
128 |
\index{peak_retain@{peak\_\-retain}!alloc@{alloc}} |
129 |
\subsubsection[peak\_\-retain]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ peak\_\-retain (void $\ast$ {\em obj})}} |
130 |
\label{group__alloc_ga6} |
131 |
|
132 |
|
133 |
Retain a peak object. |
134 |
|
135 |
Increase the reference count of the object {\em obj\/}. |
136 |
|
137 |
\begin{Desc} |
138 |
\item[Parameters:] |
139 |
\begin{description} |
140 |
\item[{\em obj}]Any peak object.\end{description} |
141 |
\end{Desc} |
142 |
\begin{Desc} |
143 |
\item[Returns:]For convenience, a pointer to {\em obj\/}. \end{Desc} |
144 |
\hypertarget{group__alloc_ga5}{ |
145 |
\index{alloc@{alloc}!peak_strdup@{peak\_\-strdup}} |
146 |
\index{peak_strdup@{peak\_\-strdup}!alloc@{alloc}} |
147 |
\subsubsection[peak\_\-strdup]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ peak\_\-strdup (const char $\ast$ {\em str})}} |
148 |
\label{group__alloc_ga5} |
149 |
|
150 |
|
151 |
Copy a string. |
152 |
|
153 |
\begin{Desc} |
154 |
\item[Parameters:] |
155 |
\begin{description} |
156 |
\item[{\em str}]The string to copy/duplicate.\end{description} |
157 |
\end{Desc} |
158 |
\begin{Desc} |
159 |
\item[Returns:]A pointer to a new allocated copy of the string. It should be passed to \hyperlink{group__alloc_ga5}{peak\_\-deallocate()} if you want to free it. \end{Desc} |