+ * @ingroup HashListAccess
+ * @brief Get the data located where HashPos Iterator points at
+ * @param Hash your Hashlist to follow
+ * @param At the position retrieve the data from
+ * @param HKLen returns Length of Hashkey Returned
+ * @param HashKey returns the Hashkey corrosponding to HashPos
+ * @param Data returns the Data found at HashPos
+ * @return whether the item was found or not.
+ */
+int GetHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data)
+{
+ long PayloadPos;
+
+ if ((Hash == NULL) ||
+ (At->Position >= Hash->nLookupTableItems) ||
+ (At->Position < 0) ||
+ (At->Position > Hash->nLookupTableItems))
+ return 0;
+ *HKLen = Hash->LookupTable[At->Position]->HKLen;
+ *HashKey = Hash->LookupTable[At->Position]->HashKey;
+ PayloadPos = Hash->LookupTable[At->Position]->Position;
+ *Data = Hash->Members[PayloadPos]->Data;
+
+ return 1;
+}
+
+/**
+ * @ingroup HashListAccess
+ * @brief Move HashPos one forward
+ * @param Hash your Hashlist to follow
+ * @param At the position to move forward
+ * @return whether there is a next item or not.
+ */
+int NextHashPos(HashList *Hash, HashPos *At)
+{
+ if ((Hash == NULL) ||
+ (At->Position >= Hash->nLookupTableItems) ||
+ (At->Position < 0) ||
+ (At->Position > Hash->nLookupTableItems))
+ return 0;
+
+ /* Position is NULL-Based, while Stepwidth is not... */
+ if ((At->Position % abs(At->StepWidth)) == 0)
+ At->Position += At->StepWidth;
+ else
+ At->Position += ((At->Position) % abs(At->StepWidth)) *
+ (At->StepWidth / abs(At->StepWidth));
+ return !((At->Position >= Hash->nLookupTableItems) ||
+ (At->Position < 0) ||
+ (At->Position > Hash->nLookupTableItems));
+}
+
+/**
+ * @ingroup HashListAccess
+ * @brief Get the data located where At points to
+ * note: you should prefer iterator operations instead of using me.
+ * @param Hash your Hashlist peek from
+ * @param At get the item in the position At.
+ * @param HKLen returns Length of Hashkey Returned
+ * @param HashKey returns the Hashkey corrosponding to HashPos
+ * @param Data returns the Data found at HashPos
+ * @return whether the item was found or not.
+ */
+int GetHashAt(HashList *Hash,long At, long *HKLen, const char **HashKey, void **Data)
+{
+ long PayloadPos;
+
+ if ((Hash == NULL) ||
+ (At < 0) ||
+ (At >= Hash->nLookupTableItems))
+ return 0;
+ *HKLen = Hash->LookupTable[At]->HKLen;
+ *HashKey = Hash->LookupTable[At]->HashKey;
+ PayloadPos = Hash->LookupTable[At]->Position;
+ *Data = Hash->Members[PayloadPos]->Data;
+ return 1;
+}
+
+/**
+ * @ingroup HashListSort
+ * @brief Get the data located where At points to
+ * note: you should prefer iterator operations instead of using me.
+ * @param Hash your Hashlist peek from
+ * @param HKLen returns Length of Hashkey Returned
+ * @param HashKey returns the Hashkey corrosponding to HashPos
+ * @param Data returns the Data found at HashPos
+ * @return whether the item was found or not.
+ */
+/*
+long GetHashIDAt(HashList *Hash,long At)
+{
+ if ((Hash == NULL) ||
+ (At < 0) ||
+ (At > Hash->nLookupTableItems))
+ return 0;
+
+ return Hash->LookupTable[At]->Key;
+}
+*/
+
+
+/**
+ * @ingroup HashListSort
+ * @brief sorting function for sorting the Hash alphabeticaly by their strings
+ * @param Key1 first item
+ * @param Key2 second item