Exemple #1
0
static int cheevos_read__json_key( void *userdata, const char *name, size_t length)
{
   cheevos_readud_t *ud = (cheevos_readud_t*)userdata;
   uint32_t        hash = cheevos_djb2(name, length);

   ud->field = NULL;

   if (hash == 0x69749ae1U /* Achievements */)
      ud->in_cheevos = 1;
   else if (ud->in_cheevos)
   {
      switch ( hash )
      {
         case 0x005973f2U: /* ID          */ ud->field = &ud->id;       break;
         case 0x1e76b53fU: /* MemAddr     */ ud->field = &ud->memaddr;  break;
         case 0x0e2a9a07U: /* Title       */ ud->field = &ud->title;    break;
         case 0xe61a1f69U: /* Description */ ud->field = &ud->desc;     break;
         case 0xca8fce22U: /* Points      */ ud->field = &ud->points;   break;
         case 0xa804edb8U: /* Author      */ ud->field = &ud->author;   break;
         case 0xdcea4fe6U: /* Modified    */ ud->field = &ud->modified; break;
         case 0x3a84721dU: /* Created     */ ud->field = &ud->created;  break;
         case 0x887685d9U: /* BadgeName   */ ud->field = &ud->badge;    break;
         case 0x0d2e96b2U: /* Flags       */ ud->field = &ud->flags;    break;
      }
   }

   return 0;
}
Exemple #2
0
static int cheevos_getvalue__json_key(void *userdata, const char *name, size_t length)
{
   cheevos_getvalueud_t* ud = (cheevos_getvalueud_t*)userdata;

   ud->is_key = cheevos_djb2(name, length) == ud->key_hash;
   return 0;
}
Exemple #3
0
static int cheevos_count__json_key(void *userdata, const char *name, size_t length)
{
   cheevos_countud_t* ud = (cheevos_countud_t*)userdata;
   ud->field_hash        = cheevos_djb2(name, length);

   if (ud->field_hash == 0x69749ae1U /* Achievements */)
      ud->in_cheevos = 1;

   return 0;
}
Exemple #4
0
static int cheevos_count_key(void* userdata,
      const char* name, size_t length)
{
   cheevos_countud_t* ud = (cheevos_countud_t*)userdata;

   ud->field_hash        = cheevos_djb2(name, length);

   if (ud->field_hash == CHEEVOS_JSON_KEY_ACHIEVEMENTS)
      ud->in_cheevos     = 1;
   else if (ud->field_hash == CHEEVOS_JSON_KEY_LEADERBOARDS)
      ud->in_lboards     = 1;

   return 0;
}
Exemple #5
0
static int cheevos_read_key(void* userdata,
      const char* name, size_t length)
{
   cheevos_readud_t* ud = (cheevos_readud_t*)userdata;

   int common           = ud->in_cheevos || ud->in_lboards;
   uint32_t hash        = cheevos_djb2(name, length);
   ud->field            = NULL;

   switch (hash)
   {
      case CHEEVOS_JSON_KEY_ACHIEVEMENTS:
         ud->in_cheevos = 1;
         break;
      case CHEEVOS_JSON_KEY_LEADERBOARDS:
         ud->in_lboards = 1;
         break;
      case CHEEVOS_JSON_KEY_CONSOLE_ID:
         ud->is_console_id = 1;
         break;
      case CHEEVOS_JSON_KEY_ID:
         if (common)
            ud->field = &ud->id;
         break;
      case CHEEVOS_JSON_KEY_MEMADDR:
         if (ud->in_cheevos)
            ud->field = &ud->memaddr;
         break;
      case CHEEVOS_JSON_KEY_MEM:
         if (ud->in_lboards)
            ud->field = &ud->memaddr;
         break;
      case CHEEVOS_JSON_KEY_TITLE:
         if (common)
            ud->field = &ud->title;
         break;
      case CHEEVOS_JSON_KEY_DESCRIPTION:
         if (common)
            ud->field = &ud->desc;
         break;
      case CHEEVOS_JSON_KEY_POINTS:
         if (ud->in_cheevos)
            ud->field = &ud->points;
         break;
      case CHEEVOS_JSON_KEY_AUTHOR:
         if (ud->in_cheevos)
            ud->field = &ud->author;
         break;
      case CHEEVOS_JSON_KEY_MODIFIED:
         if (ud->in_cheevos)
            ud->field = &ud->modified;
         break;
      case CHEEVOS_JSON_KEY_CREATED:
         if (ud->in_cheevos)
            ud->field = &ud->created;
         break;
      case CHEEVOS_JSON_KEY_BADGENAME:
         if (ud->in_cheevos)
            ud->field = &ud->badge;
         break;
      case CHEEVOS_JSON_KEY_FLAGS:
         if (ud->in_cheevos)
            ud->field = &ud->flags;
         break;
      case CHEEVOS_JSON_KEY_FORMAT:
         if (ud->in_lboards)
            ud->field = &ud->format;
         break;
      default:
         break;
   }

   return 0;
}