python-on-a-chip online compiler

Dependencies:   mbed TSI

Embed: (wiki syntax)

« Back to documentation index

seglist.h File Reference

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

typedef struct Seglist_s Seglist_t

Seglist - linked list of segments with current index info.

typedef struct Segment_s Segment_t

Segment - an array of ptrs to objs.


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:
pseglistPtr to seglist
pobjPointer to object to append
Returns:
Return status

Definition at line 55 of file seglist.c.

PmReturn_t seglist_clear ( pSeglist_t  pseglist )

Clears the the seglist by unlinking the root segment.

Parameters:
pseglistPtr to seglist to empty

Definition at line 62 of file seglist.c.

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:
pseglistThe seglist to search
pobjThe object to match
r_indexReturn 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.

Definition at line 88 of file seglist.c.

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:
pseglistPtr to seglist to scan
indexIndex of item to get
r_pobjReturn arg; Ptr to object at the index
Returns:
Return status; PM_RET_OK if object found. PM_RET_ERR otherwise.

Definition at line 140 of file seglist.c.

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:
pseglistPtr to seglist in which object is placed.
pobjPtr to object which is inserted.
indexIndex 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.

Definition at line 165 of file seglist.c.

PmReturn_t seglist_new ( pSeglist_t r_pseglist )

Allocates a new empty seglist.

Parameters:
r_pseglistreturn; Address of ptr to new seglist
Returns:
Return status

Definition at line 238 of file seglist.c.

PmReturn_t seglist_removeItem ( pSeglist_t  pseglist,
uint16_t  index 
)

Removes the item at the given index.

Parameters:
pseglistPtr to seglist in which object is removed.
indexIndex into seglist of where to put object.
Returns:
Return status

Definition at line 277 of file seglist.c.

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:
pseglistPtr to seglist in which object is placed.
pobjPtr to object which is set.
indexIndex into seglist of where to put object.
Returns:
Return status; PM_RET_OK if object is set. PM_RET_ERR otherwise.

Definition at line 254 of file seglist.c.