1\section{Property List} 2\label{group__m17nPlist}\index{Property List@{Property List}} 3Property List objects and API for them. 4\subsection*{Typedefs} 5\begin{CompactItemize} 6\item 7typedef struct {\bf MPlist} {\bf MPlist} 8\begin{CompactList}\small\item\em Type of property list objects. \item\end{CompactList}\end{CompactItemize} 9\subsection*{Functions} 10\begin{CompactItemize} 11\item 12{\bf MPlist} $\ast$ {\bf mplist\_\-deserialize} ({\bf MText} $\ast$mt) 13\begin{CompactList}\small\item\em Generate a property list by deserializing an M-text. \item\end{CompactList}\item 14{\bf MPlist} $\ast$ {\bf mplist} (void) 15\begin{CompactList}\small\item\em Create a property list object. \item\end{CompactList}\item 16{\bf MPlist} $\ast$ {\bf mplist\_\-copy} ({\bf MPlist} $\ast$plist) 17\begin{CompactList}\small\item\em Copy a property list. \item\end{CompactList}\item 18{\bf MPlist} $\ast$ {\bf mplist\_\-put} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key, void $\ast$val) 19\begin{CompactList}\small\item\em Set the value of a property in a property list. \item\end{CompactList}\item 20void $\ast$ {\bf mplist\_\-get} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key) 21\begin{CompactList}\small\item\em Get the value of a property in a property list. \item\end{CompactList}\item 22{\bf MPlist} $\ast$ {\bf mplist\_\-put\_\-func} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key, {\bf M17NFunc} func) 23\begin{CompactList}\small\item\em Set the value (function pointer) of a property in a property list. \item\end{CompactList}\item 24{\bf M17NFunc} {\bf mplist\_\-get\_\-func} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key) 25\begin{CompactList}\small\item\em Get the value (function pointer) of a property in a property list. \item\end{CompactList}\item 26{\bf MPlist} $\ast$ {\bf mplist\_\-add} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key, void $\ast$val) 27\begin{CompactList}\small\item\em Add a property at the end of a property list. \item\end{CompactList}\item 28{\bf MPlist} $\ast$ {\bf mplist\_\-push} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key, void $\ast$val) 29\begin{CompactList}\small\item\em Add a property at the beginning of a property list. \item\end{CompactList}\item 30void $\ast$ {\bf mplist\_\-pop} ({\bf MPlist} $\ast$plist) 31\begin{CompactList}\small\item\em Remove a property at the beginning of a property list. \item\end{CompactList}\item 32{\bf MPlist} $\ast$ {\bf mplist\_\-find\_\-by\_\-key} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key) 33\begin{CompactList}\small\item\em Find a property of a specific key in a property list. \item\end{CompactList}\item 34{\bf MPlist} $\ast$ {\bf mplist\_\-find\_\-by\_\-value} ({\bf MPlist} $\ast$plist, void $\ast$val) 35\begin{CompactList}\small\item\em Find a property of a specific value in a property list. \item\end{CompactList}\item 36{\bf MPlist} $\ast$ {\bf mplist\_\-next} ({\bf MPlist} $\ast$plist) 37\begin{CompactList}\small\item\em Return the next sublist of a property list. \item\end{CompactList}\item 38{\bf MPlist} $\ast$ {\bf mplist\_\-set} ({\bf MPlist} $\ast$plist, {\bf MSymbol} key, void $\ast$val) 39\begin{CompactList}\small\item\em Set the first property in a property list. \item\end{CompactList}\item 40int {\bf mplist\_\-length} ({\bf MPlist} $\ast$plist) 41\begin{CompactList}\small\item\em Return the length of a property list. \item\end{CompactList}\item 42{\bf MSymbol} {\bf mplist\_\-key} ({\bf MPlist} $\ast$plist) 43\begin{CompactList}\small\item\em Return the key of the first property in a property list. \item\end{CompactList}\item 44void $\ast$ {\bf mplist\_\-value} ({\bf MPlist} $\ast$plist) 45\begin{CompactList}\small\item\em Return the value of the first property in a property list. \item\end{CompactList}\end{CompactItemize} 46\subsection*{Variables} 47\begin{CompactItemize} 48\item 49{\bf MSymbol} {\bf Minteger} 50\begin{CompactList}\small\item\em Symbol whose name is \char`\"{}integer\char`\"{}. \item\end{CompactList}\item 51{\bf MSymbol} {\bf Mplist} 52\begin{CompactList}\small\item\em Symbol whose name is \char`\"{}plist\char`\"{}. \item\end{CompactList}\item 53{\bf MSymbol} {\bf Mtext} 54\begin{CompactList}\small\item\em Symbol whose name is \char`\"{}mtext\char`\"{}. \item\end{CompactList}\end{CompactItemize} 55 56 57\subsection{Detailed Description} 58Property List objects and API for them. 59 60A {\em property\/} {\em list\/} (or {\em plist\/} for short) is a list of zero or more properties. A property consists of a {\em key\/} and a {\em value\/}, where key is a symbol and value is anything that can be cast to {\tt (void $\ast$)}. 61 62If the key of a property is a {\em managing\/} {\em key\/}, its {\em value\/} is a {\em managed\/} {\em object\/}. A property list itself is a managed objects. 63 64If each key of a plist is one of \doxyref{Msymbol}{p.}{group__m17nSymbol_g6592d4eb3c46fe7fb8993c252b8fedeb}, \doxyref{Mtext}{p.}{group__m17nPlist_g1a22859374071a0ca66f12452afee8bd}, \doxyref{Minteger}{p.}{group__m17nPlist_g0ce08eb57aa339db4d4745e75e80fdd8}, and \doxyref{Mplist}{p.}{group__m17nPlist_g933000e154873f9bfcaa56d976bd259b}, the plist is called as {\em well-formed\/} and represented by the following notation in the documentation. 65 66 67 68\footnotesize\begin{verbatim} 69 PLIST ::= '(' ELEMENT * ')' 70 71 ELEMENT ::= INTEGER | SYMBOL | M-TEXT | PLIST 72 73 M-TEXT ::= '"' text data ... '"' 74\end{verbatim} 75\normalsize 76 77 78For instance, if a plist has four elements; integer -20, symbol of name \char`\"{}sym\char`\"{}, M-text of contents \char`\"{}abc\char`\"{}, and plist of integer 10 and symbol of name \char`\"{}another-symbol\char`\"{}, it is represented as this: 79 80(-20 sym \char`\"{}abc\char`\"{} (10 another-symbol)) 81 82\subsection{Typedef Documentation} 83\index{m17nPlist@{m17nPlist}!MPlist@{MPlist}} 84\index{MPlist@{MPlist}!m17nPlist@{m17nPlist}} 85\subsubsection[MPlist]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf MPlist} {\bf MPlist}}\label{group__m17nPlist_gc8b2ac3c9a8f0a6afb7f189b694035e2} 86 87 88Type of property list objects. 89 90The type \doxyref{MPlist}{p.}{group__m17nPlist_gc8b2ac3c9a8f0a6afb7f189b694035e2} is for a {\em property\/} {\em list\/} object. Its internal structure is concealed from application programs. 91 92\subsection{Function Documentation} 93\index{m17nPlist@{m17nPlist}!mplist\_\-deserialize@{mplist\_\-deserialize}} 94\index{mplist\_\-deserialize@{mplist\_\-deserialize}!m17nPlist@{m17nPlist}} 95\subsubsection[mplist\_\-deserialize]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist} $\ast$ mplist\_\-deserialize ({\bf MText} $\ast$ {\em mt})}\label{group__m17nPlist_g687bcaacf8110e0f60a12c9ebc288b4c} 96 97 98Generate a property list by deserializing an M-text. 99 100The \doxyref{mplist\_\-deserialize()}{p.}{group__m17nPlist_g687bcaacf8110e0f60a12c9ebc288b4c} function parses M-text {\bf mt} and returns a property list. 101 102The syntax of {\bf mt} is as follows. 103 104MT ::= '(' ELEMENT $\ast$ ')' 105 106ELEMENT ::= SYMBOL $|$ INTEGER $|$ M-TEXT $|$ PLIST 107 108SYMBOL ::= ascii-character-sequence 109 110INTEGER ::= '-' ? [ '0' $|$ .. $|$ '9' ]+ $|$ '0x' [ '0' $|$ .. $|$ '9' $|$ 'A' $|$ .. $|$ 'F' $|$ 'a' $|$ .. $|$ 'f' ]+ 111 112M-TEXT ::= '\char`\"{}' character-sequence '\char`\"{}' 113 114Each alternatives of {\tt ELEMENT} is assigned one of these keys: {\tt Msymbol}, {\tt Minteger}, {\tt Mtext}, {\tt Mplist} 115 116In an ascii-character-sequence, a backslash ($\backslash$) is used as the escape character, which means that, for instance, {\tt abc$\backslash$ def} produces a symbol whose name is of length seven with the fourth character being a space. \index{m17nPlist@{m17nPlist}!mplist@{mplist}} 117\index{mplist@{mplist}!m17nPlist@{m17nPlist}} 118\subsubsection[mplist]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist (void)}\label{group__m17nPlist_g86cff73047b6462271d086f7365782ff} 119 120 121Create a property list object. 122 123The \doxyref{mplist()}{p.}{group__m17nPlist_g86cff73047b6462271d086f7365782ff} function returns a newly created property list object of length zero. 124 125\begin{Desc} 126\item[Return value:]This function returns a newly created property list.\end{Desc} 127\begin{Desc} 128\item[Errors:]This function never fails. \end{Desc} 129\index{m17nPlist@{m17nPlist}!mplist\_\-copy@{mplist\_\-copy}} 130\index{mplist\_\-copy@{mplist\_\-copy}!m17nPlist@{m17nPlist}} 131\subsubsection[mplist\_\-copy]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-copy ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_g03cb2253e439ec15d0bbbac6f86f0e37} 132 133 134Copy a property list. 135 136The \doxyref{mplist\_\-copy()}{p.}{group__m17nPlist_g03cb2253e439ec15d0bbbac6f86f0e37} function copies property list {\bf plist}. In the copy, the values are the same as those of {\bf plist}. 137 138\begin{Desc} 139\item[Return value:]This function returns a newly created plist which is a copy of {\bf plist}.\end{Desc} 140\begin{Desc} 141\item[Errors:]This function never fails. \end{Desc} 142\index{m17nPlist@{m17nPlist}!mplist\_\-put@{mplist\_\-put}} 143\index{mplist\_\-put@{mplist\_\-put}!m17nPlist@{m17nPlist}} 144\subsubsection[mplist\_\-put]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-put ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key}, \/ void $\ast$ {\em val})}\label{group__m17nPlist_gfbfabe7a3e97e3dc6968263f61a3bee3} 145 146 147Set the value of a property in a property list. 148 149The \doxyref{mplist\_\-put()}{p.}{group__m17nPlist_gfbfabe7a3e97e3dc6968263f61a3bee3} function searches property list {\bf plist} from the beginning for a property whose key is {\bf key}. If such a property is found, its value is changed to {\bf value}. Otherwise, a new property whose key is {\bf key} and value is {\bf value} is appended at the end of {\bf plist}. See the documentation of \doxyref{mplist\_\-add()}{p.}{group__m17nPlist_gf5d13d2df5af9260356aa415e3965def} for the restriction on {\bf key} and {\bf val}. 150 151If {\bf key} is a managing key, {\bf val} must be a managed object. In this case, the reference count of the old value, if not {\tt NULL}, is decremented by one, and that of {\bf val} is incremented by one. 152 153\begin{Desc} 154\item[Return value:]If the operation was successful, \doxyref{mplist\_\-put()}{p.}{group__m17nPlist_gfbfabe7a3e97e3dc6968263f61a3bee3} returns a sublist of {\bf plist} whose first element is the just modified or added one. Otherwise, it returns {\tt NULL}. \end{Desc} 155\index{m17nPlist@{m17nPlist}!mplist\_\-get@{mplist\_\-get}} 156\index{mplist\_\-get@{mplist\_\-get}!m17nPlist@{m17nPlist}} 157\subsubsection[mplist\_\-get]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ mplist\_\-get ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key})}\label{group__m17nPlist_g2a2f833fccd7b699eb31e5de62cea41b} 158 159 160Get the value of a property in a property list. 161 162The \doxyref{mplist\_\-get()}{p.}{group__m17nPlist_g2a2f833fccd7b699eb31e5de62cea41b} function searches property list {\bf plist} from the beginning for a property whose key is {\bf key}. If such a property is found, its value is returned as the type of {\tt (void $\ast$)}. If not found, {\tt NULL} is returned. 163 164When {\tt NULL} is returned, there are two possibilities: one is the case where no property is found (see above); the other is the case where a property is found and its value is {\tt NULL}. In case that these two cases must be distinguished, use the \doxyref{mplist\_\-find\_\-by\_\-key()}{p.}{group__m17nPlist_g73caf1b7a0082184ff15e1b3e2da8969} function. 165 166\begin{Desc} 167\item[See Also:]\doxyref{mplist\_\-find\_\-by\_\-key()}{p.}{group__m17nPlist_g73caf1b7a0082184ff15e1b3e2da8969} \end{Desc} 168\index{m17nPlist@{m17nPlist}!mplist\_\-put\_\-func@{mplist\_\-put\_\-func}} 169\index{mplist\_\-put\_\-func@{mplist\_\-put\_\-func}!m17nPlist@{m17nPlist}} 170\subsubsection[mplist\_\-put\_\-func]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-put\_\-func ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key}, \/ {\bf M17NFunc} {\em func})}\label{group__m17nPlist_gb1654476aef37dbea02c56476353ab8e} 171 172 173Set the value (function pointer) of a property in a property list. 174 175The \doxyref{mplist\_\-put\_\-func()}{p.}{group__m17nPlist_gb1654476aef37dbea02c56476353ab8e} function is similar to \doxyref{mplist\_\-put()}{p.}{group__m17nPlist_gfbfabe7a3e97e3dc6968263f61a3bee3} but for setting function pointer {\bf func} in property list {\bf plist} for key {\bf key}. {\bf key} must not be a managing key. 176 177\begin{Desc} 178\item[See Also:]\doxyref{mplist\_\-put()}{p.}{group__m17nPlist_gfbfabe7a3e97e3dc6968263f61a3bee3}, \doxyref{M17N\_\-FUNC()}{p.}{group__m17nCore_g56e45d7b0345761359001fe038d121ae} \end{Desc} 179\index{m17nPlist@{m17nPlist}!mplist\_\-get\_\-func@{mplist\_\-get\_\-func}} 180\index{mplist\_\-get\_\-func@{mplist\_\-get\_\-func}!m17nPlist@{m17nPlist}} 181\subsubsection[mplist\_\-get\_\-func]{\setlength{\rightskip}{0pt plus 5cm}{\bf M17NFunc} mplist\_\-get\_\-func ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key})}\label{group__m17nPlist_g215ddb45ee970edbee7ff2e2e6bc1e8d} 182 183 184Get the value (function pointer) of a property in a property list. 185 186The \doxyref{mplist\_\-get\_\-func()}{p.}{group__m17nPlist_g215ddb45ee970edbee7ff2e2e6bc1e8d} function is similar to \doxyref{mplist\_\-get()}{p.}{group__m17nPlist_g2a2f833fccd7b699eb31e5de62cea41b} but for getting a function pointer from property list {\bf plist} by key {\bf key}. 187 188\begin{Desc} 189\item[See Also:]\doxyref{mplist\_\-get()}{p.}{group__m17nPlist_g2a2f833fccd7b699eb31e5de62cea41b} \end{Desc} 190\index{m17nPlist@{m17nPlist}!mplist\_\-add@{mplist\_\-add}} 191\index{mplist\_\-add@{mplist\_\-add}!m17nPlist@{m17nPlist}} 192\subsubsection[mplist\_\-add]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-add ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key}, \/ void $\ast$ {\em val})}\label{group__m17nPlist_gf5d13d2df5af9260356aa415e3965def} 193 194 195Add a property at the end of a property list. 196 197The \doxyref{mplist\_\-add()}{p.}{group__m17nPlist_gf5d13d2df5af9260356aa415e3965def} function appends at the end of property list {\bf plist} a property whose key is {\bf key} and value is {\bf val}. {\bf key} can be any symbol other than {\tt Mnil}. 198 199If {\bf key} is a managing key, {\bf val} must be a managed object. In this case, the reference count of {\bf val} is incremented by one. 200 201\begin{Desc} 202\item[Return value:]If the operation was successful, \doxyref{mplist\_\-add()}{p.}{group__m17nPlist_gf5d13d2df5af9260356aa415e3965def} returns a sublist of {\bf plist} whose first element is the just added one. Otherwise, it returns {\tt NULL}. \end{Desc} 203\index{m17nPlist@{m17nPlist}!mplist\_\-push@{mplist\_\-push}} 204\index{mplist\_\-push@{mplist\_\-push}!m17nPlist@{m17nPlist}} 205\subsubsection[mplist\_\-push]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-push ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key}, \/ void $\ast$ {\em val})}\label{group__m17nPlist_g20e766b438f42a13bdee803908e6096d} 206 207 208Add a property at the beginning of a property list. 209 210The \doxyref{mplist\_\-push()}{p.}{group__m17nPlist_g20e766b438f42a13bdee803908e6096d} function inserts at the beginning of property list {\bf plist} a property whose key is {\bf key} and value is {\bf val}. 211 212If {\bf key} is a managing key, {\bf val} must be a managed object. In this case, the reference count of {\bf val} is incremented by one. 213 214\begin{Desc} 215\item[Return value:]If the operation was successful, this function returns {\bf plist}. Otherwise, it returns {\tt NULL}. \end{Desc} 216\index{m17nPlist@{m17nPlist}!mplist\_\-pop@{mplist\_\-pop}} 217\index{mplist\_\-pop@{mplist\_\-pop}!m17nPlist@{m17nPlist}} 218\subsubsection[mplist\_\-pop]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ mplist\_\-pop ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_ge05459bfe72a34eefe5a04b4aa75d20a} 219 220 221Remove a property at the beginning of a property list. 222 223The \doxyref{mplist\_\-pop()}{p.}{group__m17nPlist_ge05459bfe72a34eefe5a04b4aa75d20a} function removes a property at the beginning of property list {\bf plist}. As a result, the second key and value of the {\bf plist} become the first ones. 224 225\begin{Desc} 226\item[Return value:]If the operation was successful, this function return the value of the just popped property. Otherwise, it returns {\tt NULL}. \end{Desc} 227\index{m17nPlist@{m17nPlist}!mplist\_\-find\_\-by\_\-key@{mplist\_\-find\_\-by\_\-key}} 228\index{mplist\_\-find\_\-by\_\-key@{mplist\_\-find\_\-by\_\-key}!m17nPlist@{m17nPlist}} 229\subsubsection[mplist\_\-find\_\-by\_\-key]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-find\_\-by\_\-key ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key})}\label{group__m17nPlist_g73caf1b7a0082184ff15e1b3e2da8969} 230 231 232Find a property of a specific key in a property list. 233 234The \doxyref{mplist\_\-find\_\-by\_\-key()}{p.}{group__m17nPlist_g73caf1b7a0082184ff15e1b3e2da8969} function searches property list {\bf plist} from the beginning for a property whose key is {\bf key}. If such a property is found, a sublist of {\bf plist} whose first element is the found one is returned. Otherwise, {\tt NULL} is returned. 235 236If {\bf key} is {\tt Mnil}, it returns a sublist of {\bf plist} whose first element is the last one of {\bf plist}. \index{m17nPlist@{m17nPlist}!mplist\_\-find\_\-by\_\-value@{mplist\_\-find\_\-by\_\-value}} 237\index{mplist\_\-find\_\-by\_\-value@{mplist\_\-find\_\-by\_\-value}!m17nPlist@{m17nPlist}} 238\subsubsection[mplist\_\-find\_\-by\_\-value]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-find\_\-by\_\-value ({\bf MPlist} $\ast$ {\em plist}, \/ void $\ast$ {\em val})}\label{group__m17nPlist_geb782bf76f84a8620331c8de70d43ba7} 239 240 241Find a property of a specific value in a property list. 242 243The \doxyref{mplist\_\-find\_\-by\_\-value()}{p.}{group__m17nPlist_geb782bf76f84a8620331c8de70d43ba7} function searches property list {\bf plist} from the beginning for a property whose value is {\bf val}. If such a property is found, a sublist of {\bf plist} whose first element is the found one is returned. Otherwise, {\tt NULL} is returned. \index{m17nPlist@{m17nPlist}!mplist\_\-next@{mplist\_\-next}} 244\index{mplist\_\-next@{mplist\_\-next}!m17nPlist@{m17nPlist}} 245\subsubsection[mplist\_\-next]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-next ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_g5c7598c133f6a177a2ad5781fc712f6e} 246 247 248Return the next sublist of a property list. 249 250The \doxyref{mplist\_\-next()}{p.}{group__m17nPlist_g5c7598c133f6a177a2ad5781fc712f6e} function returns a pointer to the sublist of property list {\bf plist}, which begins at the second element in {\bf plist}. If the length of {\bf plist} is zero, it returns {\tt NULL}. \index{m17nPlist@{m17nPlist}!mplist\_\-set@{mplist\_\-set}} 251\index{mplist\_\-set@{mplist\_\-set}!m17nPlist@{m17nPlist}} 252\subsubsection[mplist\_\-set]{\setlength{\rightskip}{0pt plus 5cm}{\bf MPlist}$\ast$ mplist\_\-set ({\bf MPlist} $\ast$ {\em plist}, \/ {\bf MSymbol} {\em key}, \/ void $\ast$ {\em val})}\label{group__m17nPlist_gb343caba712200f5324c12f668f7e6da} 253 254 255Set the first property in a property list. 256 257The \doxyref{mplist\_\-set()}{p.}{group__m17nPlist_gb343caba712200f5324c12f668f7e6da} function sets the key and the value of the first property in property list {\bf plist} to {\bf key} and {\bf value}, respectively. See the documentation of \doxyref{mplist\_\-add()}{p.}{group__m17nPlist_gf5d13d2df5af9260356aa415e3965def} for the restriction on {\bf key} and {\bf val}. 258 259\begin{Desc} 260\item[Return value:]If the operation was successful, \doxyref{mplist\_\-set()}{p.}{group__m17nPlist_gb343caba712200f5324c12f668f7e6da} returns {\bf plist}. Otherwise, it returns {\tt NULL}. \end{Desc} 261\index{m17nPlist@{m17nPlist}!mplist\_\-length@{mplist\_\-length}} 262\index{mplist\_\-length@{mplist\_\-length}!m17nPlist@{m17nPlist}} 263\subsubsection[mplist\_\-length]{\setlength{\rightskip}{0pt plus 5cm}int mplist\_\-length ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_g334646ff9553354f4b041947f000764d} 264 265 266Return the length of a property list. 267 268The \doxyref{mplist\_\-length()}{p.}{group__m17nPlist_g334646ff9553354f4b041947f000764d} function returns the number of properties in property list {\bf plist}. \index{m17nPlist@{m17nPlist}!mplist\_\-key@{mplist\_\-key}} 269\index{mplist\_\-key@{mplist\_\-key}!m17nPlist@{m17nPlist}} 270\subsubsection[mplist\_\-key]{\setlength{\rightskip}{0pt plus 5cm}{\bf MSymbol} mplist\_\-key ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_g79d757b26382412e7ea69e914bc06a07} 271 272 273Return the key of the first property in a property list. 274 275The \doxyref{mplist\_\-key()}{p.}{group__m17nPlist_g79d757b26382412e7ea69e914bc06a07} function returns the key of the first property in property list {\bf plist}. If the length of {\bf plist} is zero, it returns {\tt Mnil}. \index{m17nPlist@{m17nPlist}!mplist\_\-value@{mplist\_\-value}} 276\index{mplist\_\-value@{mplist\_\-value}!m17nPlist@{m17nPlist}} 277\subsubsection[mplist\_\-value]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ mplist\_\-value ({\bf MPlist} $\ast$ {\em plist})}\label{group__m17nPlist_g855f3010b216bcf5f0914553fc034295} 278 279 280Return the value of the first property in a property list. 281 282The \doxyref{mplist\_\-value()}{p.}{group__m17nPlist_g855f3010b216bcf5f0914553fc034295} function returns the value of the first property in property list {\bf plist}. If the length of {\bf plist} is zero, it returns {\tt NULL}. 283 284\subsection{Variable Documentation} 285\index{m17nPlist@{m17nPlist}!Minteger@{Minteger}} 286\index{Minteger@{Minteger}!m17nPlist@{m17nPlist}} 287\subsubsection[Minteger]{\setlength{\rightskip}{0pt plus 5cm}{\bf MSymbol} {\bf Minteger}}\label{group__m17nPlist_g0ce08eb57aa339db4d4745e75e80fdd8} 288 289 290Symbol whose name is \char`\"{}integer\char`\"{}. 291 292The symbol {\tt Minteger} has the name {\tt \char`\"{}integer\char`\"{}}. The value of a property whose key is {\tt Minteger} must be an integer. \index{m17nPlist@{m17nPlist}!Mplist@{Mplist}} 293\index{Mplist@{Mplist}!m17nPlist@{m17nPlist}} 294\subsubsection[Mplist]{\setlength{\rightskip}{0pt plus 5cm}{\bf MSymbol} {\bf Mplist}}\label{group__m17nPlist_g933000e154873f9bfcaa56d976bd259b} 295 296 297Symbol whose name is \char`\"{}plist\char`\"{}. 298 299The symbol {\tt Mplist} has the name {\tt \char`\"{}plist\char`\"{}}. It is a managing key. A value of a property whose key is {\tt Mplist} must be a plist. \index{m17nPlist@{m17nPlist}!Mtext@{Mtext}} 300\index{Mtext@{Mtext}!m17nPlist@{m17nPlist}} 301\subsubsection[Mtext]{\setlength{\rightskip}{0pt plus 5cm}{\bf MSymbol} {\bf Mtext}}\label{group__m17nPlist_g1a22859374071a0ca66f12452afee8bd} 302 303 304Symbol whose name is \char`\"{}mtext\char`\"{}. 305 306The symbol {\tt Mtext} has the name {\tt \char`\"{}mtext\char`\"{}}. It is a managing key. A value of a property whose key is {\tt Mtext} must be an M-text.