示例#1
0
文件: ip_addr.c 项目: k8king/junkie
SCM scm_from_ip_addr_number(struct ip_addr const *ip)
{
    if (ip->family == AF_INET) {
        return scm_from_uint32(ntohl(ip->u.v4.s_addr));
    } else {
        uint32_t w4, w3, w2, w1;
        memcpy(&w4, ((char *)ip->u.v6.s6_addr)+0*sizeof(w4), sizeof(w4));
        memcpy(&w3, ((char *)ip->u.v6.s6_addr)+1*sizeof(w4), sizeof(w3));
        memcpy(&w2, ((char *)ip->u.v6.s6_addr)+2*sizeof(w4), sizeof(w2));
        memcpy(&w1, ((char *)ip->u.v6.s6_addr)+3*sizeof(w4), sizeof(w1));
        uint64_t hi = ((uint64_t)ntohl(w4) << 32ULL) | ntohl(w3);
        uint64_t lo = ((uint64_t)ntohl(w2) << 32ULL) | ntohl(w1);
        return scm_logior(scm_ash(scm_from_uint64(hi), scm_from_uint(64)), scm_from_uint64(lo));
    }
}
示例#2
0
文件: ip_addr.c 项目: k8king/junkie
// While we are at it, convert from eth addr to SCM (as a uint64!)
SCM scm_from_eth_addr(unsigned char const addr[ETH_ADDR_LEN])
{
#   define A(idx, loc) (((uint64_t)addr[idx])<<((loc)*8))
    uint64_t const v = A(0,5) | A(1,4) | A(2,3) | A(3,2) | A(4,1) | A(5,0);
    return scm_from_uint64(v);
#   undef A
}
示例#3
0
SCM script_ogre_create_child_scene_node(SCM s_parent, SCM s_name)
{
  void *parent = (void*)scm_to_uint64(s_parent);
  const char *name = scm_to_locale_string(s_name);

  uint64_t ret = ogre_create_child_scene_node(parent, name);
  return scm_from_uint64(ret);
}
示例#4
0
SCM script_ogre_create_entity(SCM s_name, SCM s_mesh_path)
{
  const char *name      = scm_to_locale_string(s_name),
             *mesh_path = scm_to_locale_string(s_mesh_path);

  uint64_t ret = ogre_create_entity(name, mesh_path);
  return scm_from_uint64(ret);
}
示例#5
0
static SCM guileAddPropertyListener(SCM element, SCM keySymbol, SCM callback)
{
  char* key = scm_to_utf8_string(scm_symbol_to_string(keySymbol));
  guihckElementId listenerId = guihckStackGetElement(threadLocalContext.ctx);
  guihckPropertyListenerId id = guihckElementAddListener(threadLocalContext.ctx, listenerId, scm_to_uint64(element), key,
                                                         guilePropertyListenerCallback, callback, guilePropertyListenerFreeCallback);
  scm_gc_protect_object(callback);
  free(key);
  return scm_from_uint64(id);
}
示例#6
0
SCM guileGetElement()
{
  guihckElementId id = guihckStackGetElement(threadLocalContext.ctx);
  return scm_from_uint64(id);
}
示例#7
0
SCM script_ogre_create_light(SCM s_name)
{
  const char *name = scm_to_locale_string(s_name);
  uint64_t ret = ogre_create_light(name);
  return scm_from_uint64(ret);
}
示例#8
0
SCM script_ogre_get_root_scene_node()
{
  uint64_t ret = ogre_get_root_scene_node();
  return scm_from_uint64(ret);
}
示例#9
0
SCM script_ogre_get_scene_mgr()
{
  uint64_t ret = ogre_get_scene_mgr();
  return scm_from_uint64(ret);
}