The qDecoder Project: C/C++ Library

- Main Page
- Data Structures
- Files

- File List
- Globals

# qHashtbl.c File Reference

Hash-table Data Structure API. More...

## Functions
Q_HASHTBL * | qHashtblInit (int max)
| Initialize dynamic-hash table.
bool | qHashtblFree (Q_HASHTBL *tbl)
| De-allocate hash table.
bool | qHashtblPut (Q_HASHTBL *tbl, const char *key, const void *value, int size)
| Put object into hash table.
bool | qHashtblPutStr (Q_HASHTBL *tbl, const char *key, const char *value)
| Put string into hash table.
bool | qHashtblPutInt (Q_HASHTBL *tbl, const char *key, const int value)
| Put integer into hash table.
void * | qHashtblGet (Q_HASHTBL *tbl, const char *key, int *size)
| Get object from hash table.
char * | qHashtblGetStr (Q_HASHTBL *tbl, const char *key)
| Get string from hash table.
int | qHashtblGetInt (Q_HASHTBL *tbl, const char *key)
| Get integer from hash table.
const char * | qHashtblGetFirstKey (Q_HASHTBL *tbl, int *idx)
| Get first key name.
const char * | qHashtblGetNextKey (Q_HASHTBL *tbl, int *idx)
| Get next key name.
bool | qHashtblRemove (Q_HASHTBL *tbl, const char *key)
| Remove key from hash table.
bool | qHashtblPrint (Q_HASHTBL *tbl, FILE *out, bool showvalue)
| Print hash table for debugging purpose.
bool | qHashtblStatus (Q_HASHTBL *tbl, int *used, int *max)
| Get hash table internal status.

## Detailed Description

Hash-table Data Structure API.

## Function Documentation

Q_HASHTBL* qHashtblInit | ( | int | max | ) |

Initialize dynamic-hash table.

Parameters:

  | max | a number of maximum size of Q_HASHARR

Returns:
  a pointer of malloced Q_HASHTBL, otherwise returns false

       Q_HASHTBL *hashtbl = qHashtblInit(1000);
       qHashtblFree(hashtbl);

bool qHashtblFree | ( | Q_HASHTBL * | tbl | ) |

De-allocate hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL

Returns:
  true if successful, otherwise returns false

bool qHashtblPut | ( | Q_HASHTBL * | tbl,
|  | const char * | key,
|  | const void * | value,
|  | int | size |
| ) |  |  |

Put object into hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string
  | value | value object data
  | size | size of value

Returns:
  true if successful, otherwise returns false

bool qHashtblPutStr | ( | Q_HASHTBL * | tbl,
|  | const char * | key,
|  | const char * | value |
| ) |  |  |

Put string into hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string
  | value | value string

Returns:
  true if successful, otherwise returns false

bool qHashtblPutInt | ( | Q_HASHTBL * | tbl,
|  | const char * | key,
|  | const int | value |
| ) |  |  |

Put integer into hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string
  | value | value integer

Returns:
  true if successful, otherwise returns false

void* qHashtblGet | ( | Q_HASHTBL * | tbl,
|  | const char * | key,
|  | int * | size |
| ) |  |  |

Get object from hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string
  | size | if not NULL, oject size will be stored

Returns:
  malloced object pointer if successful, otherwise(not found) returns NULL

Note:
  returned object must be freed after done using.

char* qHashtblGetStr | ( | Q_HASHTBL * | tbl,
|  | const char * | key |
| ) |  |  |

Get string from hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string

Returns:
  string pointer if successful, otherwise(not found) returns NULL

Note:
  returned object must be freed after done using.

int qHashtblGetInt | ( | Q_HASHTBL * | tbl,
|  | const char * | key |
| ) |  |  |

Get integer from hash table.

Parameters:

  | tbl | a pointer of Q_HASHARR
  | key | key string

Returns:
  value integer if successful, otherwise(not found) returns 0

const char* qHashtblGetFirstKey | ( | Q_HASHTBL * | tbl,
|  | int * | idx |
| ) |  |  |

Get first key name.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | idx | index pointer

Returns:
  key name string if successful, otherwise returns NULL

Note:
  Do not free returned key string.

       char *key;
       int idx;
       for(key = qHashtblGetFirstKey(tbl, &idx); key != NULL; key = qHashtblGetNextKey(tbl, &idx) {
         char *value = qHashtblGetStr(tbl, key);
         if(value != NULL) free(value);
       }

const char* qHashtblGetNextKey | ( | Q_HASHTBL * | tbl,
|  | int * | idx |
| ) |  |  |

Get next key name.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | idx | index pointer

Returns:
  key name string if successful, otherwise(end of table) returns NULL

Note:
  Do not free returned key string.

bool qHashtblRemove | ( | Q_HASHTBL * | tbl,
|  | const char * | key |
| ) |  |  |

Remove key from hash table.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | key | key string

Returns:
  true if successful, otherwise(not found) returns false

bool qHashtblPrint | ( | Q_HASHTBL * | tbl,
|  | FILE * | out,
|  | bool | showvalue |
| ) |  |  |

Print hash table for debugging purpose.

Parameters:

  | tbl | a pointer of Q_HASHTBL
  | out | output stream
  | showvalue | print out value if set to true

Returns:
  true if successful, otherwise returns false

bool qHashtblStatus | ( | Q_HASHTBL * | tbl,
|  | int * | used,
|  | int * | max |
| ) |  |  |

Get hash table internal status.

Parameters:

  | tbl | a pointer of Q_HASHARR
  | used | if not NULL, a number of used keys will be stored
  | max | if not NULL, the maximum usable number of keys will be stored

Returns:
  true if successful, otherwise returns false

[Home] [About] [Examples] [Changes] [Download] [SVN Repository] [Install] [Reference]