/* * get a Blefuscuoan float */ WSLUA_METHOD TvbRange_float(lua_State* L) { /* Get a Big Endian (network order) floating point number from a TvbRange. The range must be 4 or 8 octets long. */ TvbRange tvbr = checkTvbRange(L,1); if (!(tvbr && tvbr->tvb)) return 0; if (tvbr->tvb->expired) { luaL_error(L,"expired tvb"); return 0; } switch (tvbr->len) { case 4: lua_pushnumber(L,(double)tvb_get_ntohieee_float(tvbr->tvb->ws_tvb,tvbr->offset)); return 1; case 8: lua_pushnumber(L,tvb_get_ntohieee_double(tvbr->tvb->ws_tvb,tvbr->offset)); WSLUA_RETURN(1); /* The floating point value */ default: luaL_error(L,"TvbRange:float() does not handle %d byte floating numbers",tvbr->len); return 0; } }
static void add_double_coordinates( proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, guint32 offset, guint32 xoffset, guint32 yoffset, guint32 zoffset) { proto_item *ti; proto_tree * coord_tree; ti = proto_tree_add_none_format(tree, hf_mc_double_coords, tvb, offset, -1, "Coordinates: %f, %f, %f", tvb_get_ntohieee_double(tvb, offset+xoffset), tvb_get_ntohieee_double(tvb, offset+yoffset), tvb_get_ntohieee_double(tvb, offset+zoffset)); coord_tree = proto_item_add_subtree(ti, ett_mc_double_coords); proto_tree_add_item(coord_tree, hf_mc_x, tvb, offset + xoffset, 8, FALSE); proto_tree_add_item(coord_tree, hf_mc_y, tvb, offset + yoffset, 8, FALSE); proto_tree_add_item(coord_tree, hf_mc_z, tvb, offset + zoffset, 8, FALSE); }