Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2. #ifndef _NINE_PDATA_H_
  3. #define _NINE_PDATA_H_
  4.  
  5. struct pheader
  6. {
  7.     boolean unknown;
  8.     DWORD size;
  9.     char data[1];
  10. };
  11.  
  12. static int
  13. ht_guid_compare( void *a,
  14.                  void *b )
  15. {
  16.     return GUID_equal(a, b) ? 0 : 1;
  17. }
  18.  
  19. static unsigned
  20. ht_guid_hash( void *key )
  21. {
  22.     unsigned i, hash = 0;
  23.     const unsigned char *str = key;
  24.  
  25.     for (i = 0; i < sizeof(GUID); i++) {
  26.         hash = (unsigned)(str[i]) + (hash << 6) + (hash << 16) - hash;
  27.     }
  28.  
  29.     return hash;
  30. }
  31.  
  32. static enum pipe_error
  33. ht_guid_delete( void *key,
  34.                 void *value,
  35.                 void *data )
  36. {
  37.     struct pheader *header = value;
  38.  
  39.     if (header->unknown) { IUnknown_Release(*(IUnknown **)header->data); }
  40.     FREE(header);
  41.  
  42.     return PIPE_OK;
  43. }
  44.  
  45. #endif /* _NINE_PDATA_H_ */
  46.