Esempio n. 1
0
hash_map* lat_clonar_hash(lat_vm* vm, hash_map* h)
{
  int c = 0;
  hash_map* ret = make_hash_map();
  list_node* l;
  for (c = 0; c < 256; ++c) {
    l = h->buckets[c];
    if (l != NULL) {
      ret->buckets[c] = lat_crear_lista();
      if (l != NULL) {
        list_node* cur;
        for (cur = l->next; cur != NULL; cur = cur->next) {
          if (cur->data != NULL) {
            hash_val* hv = (hash_val*)lat_asignar_memoria(sizeof(hash_val));
            //vm->memory_usage += sizeof(hash_val);
            strncpy(hv->key, ((hash_val*)cur->data)->key, 256);
            hv->val = lat_clonar_objeto(vm, (lat_objeto*)((hash_val*)cur->data)->val);
            insert_list(ret->buckets[c], hv);
          }
        }
      }
    }
  }
  return ret;
}
Esempio n. 2
0
solid_object *solid_instance(solid_vm *vm)
{
	solid_object *ret = solid_make_object(vm);
	ret->type = T_INSTANCE;
	ret->data_size = sizeof(hash_map);
	ret->data = (void *) make_hash_map();
	return ret;
}
Esempio n. 3
0
lat_objeto* lat_instancia(lat_vm* vm)
{
  lat_objeto* ret = lat_crear_objeto(vm);
  ret->type = T_INSTANCE;
  ret->data_size = sizeof(hash_map*);
  ret->data.instance = make_hash_map();
  return ret;
}
Esempio n. 4
0
void initialize_projectile()
{
	PROJECTILES = make_list();

	PROJECTILE_PROTOTYPES = make_hash_map();

	__api_projectile_tag = scm_make_smob_type("projectile", sizeof(projectile));
	scm_c_define_gsubr("build-projectile-prototype", 6, 0, 0, __api_build_projectile_prototype);
	scm_c_define_gsubr("make-projectile", 5, 0, 0, __api_make_projectile);
	scm_c_define_gsubr("spawn-projectile", 1, 0, 0, __api_spawn_projectile);

	load_all("script/projectiles");
}
Esempio n. 5
0
hash_map *copy_hash(hash_map *m)
{
    hash_map *ret = make_hash_map();
    int i;
    for (i = 0; i < 256; i++)
    {
        list_node *c = m->buckets[i];
        if (c != NULL)
        {
            for (; c->next != NULL; c = c->next)
            {
                if (c->data != NULL)
                {
                    set_hash(ret, ((hash_val *)c->data)->key, ((hash_val *)c->data)->val);
                }
            }
        }
    }
    return ret;
}