14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  linklist.h  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* each node stores pointer to data, and pointer to next node */
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LNode {
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void *data;
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  struct LNode *next;
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  struct LNode *prev;
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}LNode;
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct LList {
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  struct LNode *head;
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  struct LNode *curr;
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  struct LNode *tail;
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}LList;
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef enum{
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LListSuccess = 1,
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LListResourceAllocError,
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LListEmpty,
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  LListInternalError
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}LListResult;
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Inserts after current element
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   At return, current element will be point to newly created node
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   handle static allocation later - possibly using a pool of nodes?
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   For now, dynamically allocate a new list node with the data
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLListResult Insert(LList *list, void *data);
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Deletes at current element
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   At return, current element will point to previous node
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   handle static deallocation later - possibly using a pool of nodes?
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   For now, dynamically free a new list node
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project*/
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLListResult Delete(LList *list);
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* If dynamic allocation is not allowed, provide small pool of nodes */
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef USE_STATIC_SLTS
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid ClearLNodeArray();
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
65