Changeset 4782:f92e1cd67192 in roaraudio


Ignore:
Timestamp:
03/10/11 23:42:19 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support to get trap group name->id and id->name

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • include/libroar/trap.h

    r4779 r4782  
    6363 
    6464unsigned int roar_trap_register_group(const char * name); 
     65const char * roar_trap_get_groupname(const unsigned int group); 
     66unsigned int roar_trap_get_groupid(const char * name); 
    6567 
    6668void roar_strap_impl(const unsigned int group, const char * name, unsigned int line, const char * file); 
  • libroar/trap.c

    r4779 r4782  
    3636#include "libroar.h" 
    3737 
     38static struct _group { 
     39 unsigned int id; 
     40 const char * name; 
     41} _libroar_trap_groups[] = { 
     42 {ROAR_TRAP_GROUP_LIBROAR, "libroar"}, 
     43 {ROAR_TRAP_GROUP_ROARD,   "roard"}, 
     44 {ROAR_TRAP_GROUP_APP,     "app"}, 
     45 {ROAR_TRAP_GROUP_LIB,     "lib"}, 
     46 {ROAR_TRAP_GROUP_NETWORK, "network"}, 
     47 {ROAR_TRAP_GROUP_PROTO,   "proto"}, 
     48 {-1, NULL} 
     49}; 
     50 
    3851unsigned int roar_trap_register_group(const char * name) { 
    3952 static unsigned int state = ROAR_TRAP_GROUP_USER_MIN; 
     53 unsigned int ret; 
     54 size_t i; 
    4055 
    41  return state++; 
     56 for (i = 0; i < (sizeof(_libroar_trap_groups)/sizeof(*_libroar_trap_groups)) && _libroar_trap_groups[i].id != -1; i++); 
     57 if ( i == (sizeof(_libroar_trap_groups)/sizeof(*_libroar_trap_groups)) ) 
     58  return -1; 
     59 
     60 ret = state++; 
     61 _libroar_trap_groups[i].id   = ret; 
     62 _libroar_trap_groups[i].name = name; 
     63 
     64 return ret; 
     65} 
     66 
     67const char * roar_trap_get_groupname(const unsigned int group) { 
     68 size_t i; 
     69 
     70 for (i = 0; i < (sizeof(_libroar_trap_groups)/sizeof(*_libroar_trap_groups)) && _libroar_trap_groups[i].id != -1; i++) { 
     71  if ( _libroar_trap_groups[i].id == group ) 
     72   return _libroar_trap_groups[i].name; 
     73 } 
     74 
     75 return NULL; 
     76} 
     77 
     78unsigned int roar_trap_get_groupid(const char * name) { 
     79 size_t i; 
     80 
     81 for (i = 0; i < (sizeof(_libroar_trap_groups)/sizeof(*_libroar_trap_groups)) && _libroar_trap_groups[i].id != -1; i++) { 
     82  if ( !strcasecmp(_libroar_trap_groups[i].name, name) ) 
     83   return _libroar_trap_groups[i].id; 
     84 } 
     85 
     86 return -1; 
    4287} 
    4388 
     
    5499   break; 
    55100  case ROAR_TRAP_WARN: 
    56     ROAR_WARN("roar_strap_impl(group=%u, name='%s', line=%u, file='%s') = (void)", group, name, line, file); 
     101    ROAR_WARN("roar_strap_impl(group=%u(\"%s\"), name='%s', line=%u, file='%s') = (void)", 
     102               group, roar_trap_get_groupname(group), name, line, file); 
    57103   break; 
    58104  case ROAR_TRAP_ABORT: 
Note: See TracChangeset for help on using the changeset viewer.