python-on-a-chip online compiler
seglist.h File Reference
Segmented List data structure. More...
Go to the source code of this file.
Data Structures | |
struct | Segment_s |
Segment - an array of ptrs to objs. More... | |
struct | Seglist_s |
Seglist - linked list of segments with current index info. More... | |
Typedefs | |
typedef struct Segment_s | Segment_t |
Segment - an array of ptrs to objs. | |
typedef struct Seglist_s | Seglist_t |
Seglist - linked list of segments with current index info. | |
Functions | |
PmReturn_t | seglist_appendItem (pSeglist_t pseglist, pPmObj_t pobj) |
Puts the new object at the end of the list. | |
PmReturn_t | seglist_clear (pSeglist_t pseglist) |
Clears the the seglist by unlinking the root segment. | |
PmReturn_t | seglist_findEqual (pSeglist_t pseglist, pPmObj_t pobj, int16_t *r_index) |
Finds the first obj equal to pobj in the seglist. | |
PmReturn_t | seglist_getItem (pSeglist_t pseglist, int16_t index, pPmObj_t *r_pobj) |
Gets the item in the seglist at the given coordinates. | |
PmReturn_t | seglist_new (pSeglist_t *r_pseglist) |
Allocates a new empty seglist. | |
PmReturn_t | seglist_insertItem (pSeglist_t pseglist, pPmObj_t pobj, int16_t index) |
Puts the item in the next available slot in the first available segment. | |
PmReturn_t | seglist_setItem (pSeglist_t pseglist, pPmObj_t pobj, int16_t index) |
Puts the item in the designated slot and segment. | |
PmReturn_t | seglist_removeItem (pSeglist_t pseglist, uint16_t index) |
Removes the item at the given index. |
Detailed Description
Segmented List data structure.
A seglist is a linked list of segments. A segment is an array of ptrs to objects (with a pointer to the next segment). Seglists are used to implement Lists and Dicts.
This implementation of Seglist is straight. That is, the next pointer in the final segment contains C_NULL.
This implementation of Seglist is dense. That is, there are no gaps in a segment. All entries point to an object, except entries that are beyond the index of the last item.
Definition in file seglist.h.
Typedef Documentation
Function Documentation
PmReturn_t seglist_appendItem | ( | pSeglist_t | pseglist, |
pPmObj_t | pobj | ||
) |
Puts the new object at the end of the list.
This is intended for the List type where the List index matches the order of the Seglist index. Makes room if necessary by adding new segments.
- Parameters:
-
pseglist Ptr to seglist pobj Pointer to object to append
- Returns:
- Return status
PmReturn_t seglist_clear | ( | pSeglist_t | pseglist ) |
PmReturn_t seglist_findEqual | ( | pSeglist_t | pseglist, |
pPmObj_t | pobj, | ||
int16_t * | r_index | ||
) |
Finds the first obj equal to pobj in the seglist.
Starts searching the list at the given segnum and indx.
- Parameters:
-
pseglist The seglist to search pobj The object to match r_index Return arg; the index of where to start the search. If a match is found, return the index by reference. If no match is found, this value is undefined.
- Returns:
- Return status; PM_RET_OK means a matching object was found. PM_RET_ERR otherwise.
PmReturn_t seglist_getItem | ( | pSeglist_t | pseglist, |
int16_t | index, | ||
pPmObj_t * | r_pobj | ||
) |
Gets the item in the seglist at the given coordinates.
The segment number and the index within the segment are the coordinates of the object to get.
- Parameters:
-
pseglist Ptr to seglist to scan index Index of item to get r_pobj Return arg; Ptr to object at the index
- Returns:
- Return status; PM_RET_OK if object found. PM_RET_ERR otherwise.
PmReturn_t seglist_insertItem | ( | pSeglist_t | pseglist, |
pPmObj_t | pobj, | ||
int16_t | index | ||
) |
Puts the item in the next available slot in the first available segment.
This is intended for the Dict type where the Seglist index is insignificant. Pushing an object assures it will be found early during a call to seglist_findEqual().
- Parameters:
-
pseglist Ptr to seglist in which object is placed. pobj Ptr to object which is inserted. index Index into seglist before which item is inserted
- Returns:
- Return status; PM_RET_OK if the item was inserted. Any error condition comes from heap_getChunk.
PmReturn_t seglist_new | ( | pSeglist_t * | r_pseglist ) |
PmReturn_t seglist_removeItem | ( | pSeglist_t | pseglist, |
uint16_t | index | ||
) |
PmReturn_t seglist_setItem | ( | pSeglist_t | pseglist, |
pPmObj_t | pobj, | ||
int16_t | index | ||
) |
Puts the item in the designated slot and segment.
This is intended to be used after seglist_findEqual() returns the proper indeces.
- Parameters:
-
pseglist Ptr to seglist in which object is placed. pobj Ptr to object which is set. index Index into seglist of where to put object.
- Returns:
- Return status; PM_RET_OK if object is set. PM_RET_ERR otherwise.
Generated on Tue Jul 12 2022 23:13:47 by 1.7.2