2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file FBaseColIList.h
19 * @brief This is the header file for the %IList interface.
21 * This header file contains the declarations of the %IList interface.
23 #ifndef _FBASE_COL_ILIST_H_
24 #define _FBASE_COL_ILIST_H_
26 #include <FBaseColIBidirectionalEnumerator.h>
27 #include <FBaseColICollection.h>
28 #include <FBaseColIComparer.h>
29 #include <FBaseColTypes.h>
30 #include <FBaseObject.h>
32 namespace Tizen { namespace Base { namespace Collection
37 * @brief This interface represents a collection of objects that can be individually accessed by an index.
41 * The %IList interface represents a collection of objects that can be individually accessed by an index.
44 class _OSP_EXPORT_ IList
45 : public virtual ICollection
49 * This polymorphic destructor should be overridden if required. @n
50 * This way, the destructors of the derived classes are called when the destructor of this interface is called.
54 virtual ~IList(void) {}
58 * Adds the specified object to the list.
60 * @brief <i> [Deprecated] </i>
61 * @deprecated This method is deprecated because it has a problem of constant reference argument.
62 * Instead of using this method, use Add(Object* pObj).
65 * @return An error code
66 * @param[in] obj The object to add
67 * @exception E_SUCCESS The method is successful.
68 * @exception E_OUT_OF_MEMORY The memory is insufficient.
70 * - In a collection of contiguous elements, such as a list, the elements
71 * that follow the insertion point move down to accommodate the new element. @n
72 * If the collection is indexed, the indexes of the elements that are moved
73 * are also updated. @n
74 * This behavior does not apply to collections where
75 * elements are conceptually grouped into buckets, such as a hashtable.
76 * - This method performs a shallow copy. It adds just the pointer only and not the element itself.
80 result Add(const Object& obj)
82 return Add(const_cast< Object* >(&obj));
86 * Adds the specified object to the list.
90 * @return An error code
91 * @param[in] pObj A pointer to the object to add
92 * @exception E_SUCCESS The method is successful.
93 * @exception E_INVALID_ARG The specified input parameter is invalid.
95 * - In a collection of contiguous elements, such as a list, the elements
96 * that follow the insertion point move down to accommodate the new element. @n
97 * If the collection is indexed, the indexes of the elements that are moved
98 * are also updated. @n
99 * This behavior does not apply to collections where
100 * elements are conceptually grouped into buckets, such as a hashtable.
101 * - This method performs a shallow copy. It adds just the pointer only and not the element itself.
104 virtual result Add(Object* pObj) = 0;
107 * Adds the elements of the specified @c collection to the end of the list.
111 * @return An error code
112 * @param[in] collection The collection to add to the list
113 * @exception E_SUCCESS The method is successful.
114 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
115 * - The current state of the instance prohibits the execution of the specified operation.
116 * - The specified @c collection is modified during the operation of this method.
117 * @remarks This method performs a shallow copy. It adds just the pointer only and not the element itself.
120 virtual result AddItems(const ICollection& collection) = 0;
123 * Searches for an object in this list. @n
124 * Gets the @c index of the object if found.
128 * @return An error code
129 * @param[in] obj The object to locate
130 * @param[out] index The index of the object
131 * @exception E_SUCCESS The method is successful.
132 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
134 virtual result IndexOf(const Object& obj, int& index) const = 0;
138 * Inserts an object at the specified location in the list.
140 * @brief <i> [Deprecated] </i>
141 * @deprecated This method is deprecated because it has a problem of constant reference argument.
142 * Instead of using this method, use InsertAt(const Object* pObj, int index).
145 * @return An error code
146 * @param[in] obj The object to insert
147 * @param[in] index The index at which the object is inserted
148 * @exception E_SUCCESS The method is successful.
149 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
150 * - The specified @c index is outside the bounds of the data structure.
151 * - The specified @c index is greater than the number of elements in the list.
152 * - The specified @c index is less than @c 0.
154 * - If the @c index equals the number of elements in the list, the new element
155 * is added at the end of the list.
156 * - This method performs a shallow copy. It inserts just the pointer only and not the element itself.
161 result InsertAt(const Object& obj, int index)
163 return InsertAt(const_cast< Object* >(&obj), index);
167 * Inserts an object at the specified location in the list.
171 * @return An error code
172 * @param[in] pObj A pointer to the object to insert
173 * @param[in] index The index at which the object is inserted
174 * @exception E_SUCCESS The method is successful.
175 * @exception E_INVALID_ARG The specified input parameter is invalid.
176 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
177 * - The specified index is outside the bounds of the data structure.
178 * - The specified @c index is greater than the number of elements in the list.
179 * - The specified @c index is less than @c 0.
181 * - If the @c index equals the number of elements in the list, the new element
182 * is added at the end of the list.
183 * - This method performs a shallow copy. It inserts just the pointer only and not the element itself.
187 virtual result InsertAt(Object* pObj, int index) = 0;
190 * Searches for an object starting from the specified @c index. @n
191 * Gets the @c index of the object if found.
195 * @return An error code
196 * @param[in] obj The object to locate
197 * @param[in] startIndex The starting index for the search @n
198 * It must be less than the number of elements.
199 * @param[out] index The index of the object
200 * @exception E_SUCCESS The method is successful.
201 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
202 * - The specified @c index is outside the bounds of the data structure.
203 * - The specified @c startIndex is either greater than or equal to the number of elements in the list.
204 * - The specified @c startIndex is less than @c 0.
205 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
208 virtual result IndexOf(const Object& obj, int startIndex, int& index) const = 0;
211 * Searches for an object within the specified range. @n
212 * Gets the @c index of the object if found.
216 * @return An error code
217 * @param[in] obj The object to locate
218 * @param[in] startIndex The starting index of the range
219 * @param[in] count The number of elements to read
220 * @param[out] index The index of the object
221 * @exception E_SUCCESS The method is successful.
222 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
223 * - The specified @c index is outside the bounds of the data structure.
224 * - The specified @c startIndex is either greater than or equal to the number of elements in the list.
225 * - The specified @c startIndex is less than @c 0.
226 * - The specified @c count is greater than the number of elements starting from @c startIndex.
227 * - The specified @c count is less than @c 0.
228 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
231 virtual result IndexOf(const Object& obj, int startIndex, int count, int& index) const = 0;
234 * Searches for the last occurrence of an object in the list. @n
235 * Gets the @c index of the object if found.
239 * @return An error code
240 * @param[in] obj The object to locate
241 * @param[out] index The index of the last occurrence of the specified object
242 * @exception E_SUCCESS The method is successful.
243 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
246 virtual result LastIndexOf(const Object& obj, int& index) const = 0;
249 * Inserts the elements of a collection in the list at the specified location.
253 * @return An error code
254 * @param[in] collection The collection to insert
255 * @param[in] startIndex The starting index at which the collection is inserted
256 * @exception E_SUCCESS The method is successful.
257 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
258 * - The specified @c index is outside the bounds of the data structure.
259 * - The specified @c startIndex is greater than the number of elements in the list.
260 * - The specified @c startIndex is less than @c 0.
261 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
262 * - The current state of the instance prohibits the execution of the specified operation.
263 * - The specified @c collection is modified during the operation of this method.
265 * - If the @c startIndex is equal to the number of elements in the list, the new elements
266 * are added at the end of the list.
267 * - This method performs a shallow copy. It inserts just the pointer and not the element itself.
271 virtual result InsertItemsFrom(const ICollection& collection, int startIndex) = 0;
274 * Gets the object at the specified location.
278 * @return The object at the specified location, @n
279 * else @c null if the @c index invalid
280 * @param[in] index The index of the object to get
281 * @exception E_SUCCESS The method is successful.
282 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
283 * - The specified @c index is outside the bounds of the data structure.
284 * - The specified @c index is either greater than or equal to the number of elements in the list.
285 * - The specified @c index is less than @c 0.
286 * @remarks The specific error code can be accessed using the GetLastResult() method.
289 virtual const Object* GetAt(int index) const = 0;
292 * Gets the object at the specified location.
296 * @return The object at the specified location, @n
297 * else @c null if the @c index invalid
298 * @param[in] index The index of the object to get
299 * @exception E_SUCCESS The method is successful.
300 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
301 * - The specified @c index is outside the bounds of the data structure.
302 * - The specified @c index is either greater than or equal to the number of elements in the list.
303 * - The specified @c index is less than @c 0.
304 * @remarks The specific error code can be accessed using the GetLastResult() method.
307 virtual Object* GetAt(int index) = 0;
310 * Gets all the elements of the list within the specified range.
314 * @return A pointer to the %IList that contains elements lying within the specified range, @n
315 * else @c null if an exception occurs
316 * @param[in] startIndex The starting index of the range
317 * @param[in] count The number of elements to read
318 * @exception E_SUCCESS The method is successful.
319 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
320 * - The specified @c index is outside the bounds of the data structure.
321 * - The specified @c startIndex is either greater than or equal to the number of elements in the list.
322 * - The specified @c startIndex is less than @c 0.
323 * - The specified @c count is greater than the number of elements in the list starting from @c startIndex.
324 * - The specified @c count is less than @c 0.
326 * - The %IList stores just the pointers to the elements in the list and not the elements themselves.
327 * - The specific error code can be accessed using the GetLastResult() method.
329 virtual IList* GetItemsN(int startIndex, int count) const = 0;
332 * Removes the first occurrence of the specified object.
336 * @return An error code
337 * @param[in] obj The object to remove
338 * @param[in] forceDeletion Set to @c true to deallocate the object, @n
340 * @exception E_SUCCESS The method is successful.
341 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
343 * - Based on the specified element deleter, the remove operation not only gets rid of an element from the list, but also deletes its object instance. @n
344 * The element deleter style is recommended rather than using @c forceDeletetion in the removing method. @n
345 * If both the element deleter and the @c forceDeletion are set, the remove operation follows the @c forceDeletion setting.
346 * - Remove(obj, @b true) internally works as the below code:
348 * DeleterFunctionType deleter = GetDeleter();
349 * SetDeleter(SingleObjectDeleter);
351 * SetDeleter(deleter);
353 * - Remove(obj, @b false) internally works as the below code:
355 * DeleterFunctionType deleter = GetDeleter();
356 * SetDeleter(NoOpDeleter);
358 * SetDeleter(deleter);
363 result Remove(const Object& obj, bool forceDeletion)
365 DeleterFunctionType deleter = GetDeleter();
369 SetDeleter(SingleObjectDeleter);
373 SetDeleter(NoOpDeleter);
376 result r = Remove(obj);
382 * Removes the first occurrence of the specified object.
386 * @return An error code
387 * @param[in] obj The object to remove
388 * @exception E_SUCCESS The method is successful.
389 * @exception E_OBJ_NOT_FOUND The specified @c obj has not been found.
393 virtual result Remove(const Object& obj) = 0;
396 * Removes the object at the specified location.
400 * @return An error code
401 * @param[in] index The index at which the object is removed
402 * @param[in] forceDeletion Set to @c true to deallocate the object, @n
404 * @exception E_SUCCESS The method is successful.
405 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
406 * - The specified @c index is outside the bounds of the data structure.
407 * - The specified @c index is either greater than or equal to the number of elements in the list.
408 * - The specified @c index is less than @c 0.
410 * - Based on the specified element deleter, the remove operation not only gets rid of an element from the list, but also deletes its object instance. @n
411 * The element deleter style is recommended rather than using @c forceDeletetion in the removing method. @n
412 * If both the element deleter and the @c forceDeletion are set, the remove operation follows the @c forceDeletion setting.
413 * - RemoveAt(index, @b true) internally works as the below code:
415 * DeleterFunctionType deleter = GetDeleter();
416 * SetDeleter(SingleObjectDeleter);
418 * SetDeleter(deleter);
420 * - RemoveAt(index, @b false) internally works as the below code:
422 * DeleterFunctionType deleter = GetDeleter();
423 * SetDeleter(NoOpDeleter);
425 * SetDeleter(deleter);
428 result RemoveAt(int index, bool forceDeletion)
430 DeleterFunctionType deleter = GetDeleter();
434 SetDeleter(SingleObjectDeleter);
438 SetDeleter(NoOpDeleter);
441 result r = RemoveAt(index);
447 * Removes the object at the specified location.
451 * @return An error code
452 * @param[in] index The index at which the object is removed
453 * @exception E_SUCCESS The method is successful.
454 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
455 * - The specified index is outside the bounds of the data structure.
456 * - The specified @c index is either greater than or equal to the number of elements in the list.
457 * - The specified @c index is less than @c 0.
459 virtual result RemoveAt(int index) = 0;
462 * Removes all the elements within the specified range.
466 * @return An error code
467 * @param[in] startIndex The starting index of the range
468 * @param[in] count The number of elements in the range
469 * @param[in] forceDeletion Set to @c true to deallocate the object, @n
471 * @exception E_SUCCESS The method is successful.
472 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
473 * - The specified @c index is outside the bounds of the data structure.
474 * - The specified @c startIndex is either greater than or equal to the number of elements in the list.
475 * - The specified @c startIndex is less than @c 0.
476 * - The specified @c count is greater than the number of elements starting from @c startIndex.
477 * - The specified @c count is less than @c 0.
479 * - Based on the specified element deleter, the remove operation not only gets rid of an element from the list, but also deletes its object instance. @n
480 * The element deleter style is recommended rather than using @c forceDeletetion in the removing method. @n
481 * If both the element deleter and the @c forceDeleteion are set, the remove operation follows the @c forceDeletion setting.
482 * - RemoveItems(startIndex, count, @b true) internally works as the below code:
484 * DeleterFunctionType deleter = GetDeleter();
485 * SetDeleter(SingleObjectDeleter);
486 * RemoveItems(startIndex, count);
487 * SetDeleter(deleter);
489 * - RemoveItems(startIndex, count, @b false) internally works as the below code:
491 * DeleterFunctionType deleter = GetDeleter();
492 * SetDeleter(NoOpDeleter);
493 * RemoveItems(startIndex, count);
494 * SetDeleter(deleter);
498 result RemoveItems(int startIndex, int count, bool forceDeletion)
500 DeleterFunctionType deleter = GetDeleter();
504 SetDeleter(SingleObjectDeleter);
508 SetDeleter(NoOpDeleter);
511 result r = RemoveItems(startIndex, count);
517 * Removes all the elements within the specified range.
521 * @return An error code
522 * @param[in] startIndex The starting index of the range
523 * @param[in] count The number of elements in the range
524 * @exception E_SUCCESS The method is successful.
525 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
526 * - The specified @c index is outside the bounds of the data structure.
527 * - The specified @c startIndex is either greater than or equal to the number of elements in the list.
528 * - The specified @c startIndex is less than @c 0.
529 * - The specified @c count is greater than the number of elements starting from @c startIndex.
530 * - The specified @c count is less than @c 0.
533 virtual result RemoveItems(int startIndex, int count) = 0;
536 * Removes all the elements from the list that are common to the specified collection.
540 * @return An error code
541 * @param[in] collection The collection to remove from this list
542 * @param[in] forceDeletion Set to @c true to deallocate the object, @n
544 * @exception E_SUCCESS The method is successful.
545 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
546 * - The current state of the instance prohibits the execution of the specified operation.
547 * - The specified @c collection is modified during the operation of this method.
549 * - Based on the specified element deleter, the remove operation not only gets rid of an element from the list, but also deletes its object instance. @n
550 * The element deleter style is recommended rather than using @c forceDeletetion in the removing method. @n
551 * If both the element deleter and the @c forceDeleteion are set, the remove operation follows the @c forceDeletion setting.
552 * - RemoveItems(collection, @b true) internally works as the below code:
554 * DeleterFunctionType deleter = GetDeleter();
555 * SetDeleter(SingleObjectDeleter);
556 * RemoveItems(collection);
557 * SetDeleter(deleter);
559 * - RemoveItems(collection, @b false) internally works as the below code:
561 * DeleterFunctionType deleter = GetDeleter();
562 * SetDeleter(NoOpDeleter);
563 * RemoveItems(collection);
564 * SetDeleter(deleter);
569 result RemoveItems(const ICollection& collection, bool forceDeletion)
571 DeleterFunctionType deleter = GetDeleter();
575 SetDeleter(SingleObjectDeleter);
579 SetDeleter(NoOpDeleter);
582 result r = RemoveItems(collection);
588 * Removes all the elements from the list that are common to the specified @c collection.
592 * @return An error code
593 * @param[in] collection The collection to remove from this list
594 * @exception E_SUCCESS The method is successful.
595 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
596 * - The current state of the instance prohibits the execution of the specified operation.
597 * - The specified @c collection is modified during the operation of this method.
601 virtual result RemoveItems(const ICollection& collection) = 0;
604 * Removes all the object pointers in the collection. @n
605 * If @c forceDeletion is set to @c true, it removes all the objects from the collection. @n
606 * This method can be called just before deleting the collection.
610 * @return An error code
611 * @param[in] forceDeletion Set to @c true to deallocate all the objects, @n
614 * - Based on the specified element deleter, the remove operation not only gets rid of an element from the list, but also deletes its object instance. @n
615 * The element deleter style is recommended rather than using @c forceDeletetion in the removing method. @n
616 * If both the element deleter and the @c forceDeleteion are set, the remove operation follows the @c forceDeletion setting.
617 * - RemoveAll(@b true) internally works as the below code:
619 * DeleterFunctionType deleter = GetDeleter();
620 * SetDeleter(SingleObjectDeleter);
622 * SetDeleter(deleter);
624 * - RemoveAll(@b false) internally works as the below code:
626 * DeleterFunctionType deleter = GetDeleter();
627 * SetDeleter(NoOpDeleter);
629 * SetDeleter(deleter);
632 void RemoveAll(bool forceDeletion)
634 DeleterFunctionType deleter = GetDeleter();
638 SetDeleter(SingleObjectDeleter);
642 SetDeleter(NoOpDeleter);
650 * Removes all the object pointers from the collection. @n
651 * This method can be called just before deleting the collection.
655 virtual void RemoveAll(void) = 0;
658 * Replaces the object at the specified @c index with the specified object.
662 * @return An error code
663 * @param[in] obj The new object
664 * @param[in] index The index at which the new object is set
665 * @param[in] forceDeletion Set to @c true to deallocate the object, @n
667 * @exception E_SUCCESS The method is successful.
668 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
669 * - The specified @c index is outside the bounds of the data structure.
670 * - The specified @c index is either greater than or equal to the number of elements in the list.
671 * - The specified @c index is less than @c 0.
673 * - Based on the specified element deleter, the set operation not only gets rid of an element from the list, but also deletes its object instance. @n
674 * The element deleter style is recommended rather than using @c forceDeletetion in the set method. @n
675 * If both the element deleter and the @c forceDeleteion are set, the set operation follows the @c forceDeletion setting.
676 * - SetAt(obj, index, @b true) internally works as the below code:
678 * DeleterFunctionType deleter = GetDeleter();
679 * SetDeleter(SingleObjectDeleter);
680 * SetAt(const_cast< Object* >(&obj), index);
681 * SetDeleter(deleter);
683 * - SetAt(obj, index, @b false) internally works as the below code:
685 * DeleterFunctionType deleter = GetDeleter();
686 * SetDeleter(NoOpDeleter);
687 * SetAt(const_cast< Object* >(&obj), index);
688 * SetDeleter(deleter);
692 result SetAt(const Object& obj, int index, bool forceDeletion = false)
694 DeleterFunctionType deleter = GetDeleter();
698 SetDeleter(SingleObjectDeleter);
702 SetDeleter(NoOpDeleter);
705 result r = SetAt(const_cast< Object* >(&obj), index);
711 * Replaces the object at the specified @c index with the specified object.
715 * @return An error code
716 * @param[in] pObj A pointer to the new object
717 * @param[in] index The index at which the new object is set
718 * @exception E_SUCCESS The method is successful.
719 * @exception E_INVALID_ARG A specified input parameter is invalid.
720 * @exception E_OUT_OF_RANGE Either of the following conditions has occurred:
721 * - The specified index is outside the bounds of the data structure.
722 * - The specified @c index is either greater than or equal to the number of elements in the list.
723 * - The specified @c index is less than @c 0.
726 virtual result SetAt(Object* pObj, int index) = 0;
729 * Sorts the elements of the list using the @c comparer provided.
733 * @return An error code
734 * @param[in] comparer The IComparer implementation to use when comparing the elements
735 * @exception E_SUCCESS The method is successful.
736 * @exception E_INVALID_ARG The specified input parameter is invalid.
738 virtual result Sort(const IComparer& comparer) = 0;
741 * Checks whether the list contains the specified object.
745 * @return @c true if the list contains the specified object, @n
747 * @param[in] obj The object to locate
749 virtual bool Contains(const Object& obj) const = 0;
753 * Checks whether the list contains all the elements of the specified @c collection.
755 * @brief <i> [Deprecated] </i>
756 * @deprecated This method is deprecated because it transfers the result of the comparison in an out-parameter form.
757 * The return type is changed to boolean and this method returns the result.
758 * Instead of using this method, use bool ContainsAll(const ICollection& collection).
761 * @return An error code
762 * @param[in] collection The collection to check for containment in this list
763 * @param[out] out Set to @c true if the list contains all the elements of the specified collection, @n
765 * @exception E_SUCCESS The method is successful.
766 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
767 * - The current state of the instance prohibits the execution of the specified operation.
768 * - The specified @c collection is modified during the operation of this method.
769 * @remarks If the given @c collection is empty, then @c out is set to @c true.
773 result ContainsAll(const ICollection& collection, bool& out) const
775 out = ContainsAll(collection);
776 result r = GetLastResult();
781 * Checks whether the list contains all the elements of the specified @c collection.
785 * @return @c true if the list contains all the elements of the specified collection, @n
787 * @param[in] collection The collection to check for containment in this list
788 * @exception E_SUCCESS The method is successful.
789 * @exception E_INVALID_OPERATION Either of the following conditions has occurred:
790 * - The current state of the instance prohibits the execution of the specified operation.
791 * - The specified @c collection is modified during the operation of this method.
793 * - The specific error code can be accessed using the GetLastResult() method.
794 * - If the given @c collection is empty, this method returns @c true.
797 virtual bool ContainsAll(const ICollection& collection) const = 0;
800 * Gets the bidirectional enumerator (an instance of the IBidirectionalEnumerator derived class) of this list.
804 * @return A pointer to the bidirectional enumerator interface of the %IList derived class, @n
805 * else @c null if an exception occurs
807 * - Use this method to obtain a bidirectional enumerator (an instance of the IBidirectionalEnumerator derived class)
808 * to iterate over a collection (an instance of the %IList derived class).
809 * - The specific error code can be accessed using GetLastResult() method.
811 virtual IBidirectionalEnumerator* GetBidirectionalEnumeratorN(void) const = 0;
814 * Checks whether the instance is an ArrayList or a LinkedList.
818 * @return @c true if it is an ArrayList, @n
819 * else @c false if it is a LinkedList
821 virtual bool IsRandomAccessible(void) const
827 * Gets the element deleter of the collection.
831 * @return A function pointer to the existing element deleter
833 virtual DeleterFunctionType GetDeleter(void) const = 0;
837 // This method is for internal use only. Using this method can cause behavioral, security-related,
838 // and consistency-related issues in the application.
839 // This method is reserved and may change its name at any time without prior notice.
843 virtual void IList_Reserved1(void) {}
846 // This method is for internal use only. Using this method can cause behavioral, security-related,
847 // and consistency-related issues in the application.
848 // This method is reserved and may change its name at any time without prior notice.
852 virtual void IList_Reserved2(void) {}
856 * Sets the element deleter of the collection.
860 * @param[in] deleter A function pointer to the element deleter to set
862 virtual void SetDeleter(DeleterFunctionType deleter) = 0;
866 }}} // Tizen::Base::Collection
868 #endif // _FBASE_COL_ILIST_H_