Remove default argument for basic_ptr(pointer,array &)

This commit is contained in:
Kp 2016-01-09 16:38:13 +00:00
parent d17b12da31
commit 98f5afa9f8
22 changed files with 72 additions and 69 deletions

View file

@ -380,10 +380,9 @@ int med_find_closest_threshold_segment_side(vsegptridx_t sp, int side, segptridx
// If there is no connecting segment on the current side, try any segment.
// Copy texture maps in newseg to nsp.
void copy_uvs_seg_to_seg(vsegptr_t nsp,vsegptr_t newseg);
void copy_uvs_seg_to_seg(vsegptr_t nsp, vcsegptr_t newseg);
// Return true if segment is concave.
int check_seg_concavity(vsegptr_t s);
// Return N_found_segs = number of concave segments in mine.
// Segment ids stored at Found_segs

View file

@ -362,7 +362,12 @@ public:
m_ptr(check_allowed_invalid_index(i) ? nullptr : &a[check_index_range(i, &a)])
{
}
basic_ptr(pointer_type p, array_managed_type &a = get_array()) :
basic_ptr(pointer_type p) = delete;
basic_ptr(pointer_type p, array_managed_type &a) :
/* No array consistency check here, since some code incorrectly
* defines instances of `object` outside the Objects array, then
* passes pointers to those instances to this function.
*/
m_ptr(p)
{
if (!allow_nullptr)

View file

@ -161,7 +161,7 @@ extern void init_all_matcens(void);
* reads a matcen_info structure from a PHYSFS_file
*/
#if defined(DXX_BUILD_DESCENT_II)
void fuelcen_check_for_hoard_goal(vsegptr_t segp);
void fuelcen_check_for_hoard_goal(vcsegptr_t segp);
/*
* reads an d1_matcen_info structure from a PHYSFS_file

View file

@ -324,7 +324,7 @@ objptridx_t drop_marker_object(const vms_vector &pos, vsegptridx_t segnum, const
void wake_up_rendered_objects(vobjptr_t gmissp, window_rendered_data &window);
void fuelcen_check_for_goal (vsegptr_t);
void fuelcen_check_for_goal(vcsegptr_t);
#endif
objptridx_t obj_find_first_of_type(int type);

View file

@ -204,11 +204,8 @@ std::size_t create_bfs_list(segnum_t start_seg, segnum_t *const bfs_list, std::s
visited[start_seg] = true;
while ((head != tail) && (head < max_segs)) {
segment *cursegp;
auto curseg = bfs_list[tail++];
cursegp = &Segments[curseg];
const auto &&cursegp = vcsegptr(curseg);
for (int i=0; i<MAX_SIDES_PER_SEGMENT; i++) {
auto connected_seg = cursegp->children[i];
@ -1164,7 +1161,7 @@ static segnum_t choose_thief_recreation_segment()
cur_drop_depth = THIEF_DEPTH;
while ((segnum == segment_none) && (cur_drop_depth > THIEF_DEPTH/2)) {
segnum = pick_connected_segment(&get_local_plrobj(), cur_drop_depth);
segnum = pick_connected_segment(vcobjptr(&get_local_plrobj()), cur_drop_depth);
if (segnum != segment_none && vcsegptr(segnum)->special == SEGMENT_IS_CONTROLCEN)
segnum = segment_none;
cur_drop_depth--;

View file

@ -577,7 +577,11 @@ static int med_copy_group(int delta_flag, const vsegptridx_t base_seg, int base_
//group_seg = &Segments[GroupList[new_current_group].segments[0]]; // connecting segment in group has been changed, so update group_seg
group_seg = Groupsegp[new_current_group] = &Segments[GroupList[new_current_group].segments[gs_index]];
{
const auto &&gs = vsegptr(GroupList[new_current_group].segments[gs_index]);
group_seg = gs;
Groupsegp[new_current_group] = gs;
}
Groupside[new_current_group] = Groupside[current_group];
range_for(const auto &gs, GroupList[new_current_group].segments)
@ -600,7 +604,7 @@ static int med_copy_group(int delta_flag, const vsegptridx_t base_seg, int base_
}
}
copy_uvs_seg_to_seg(&New_segment, Groupsegp[new_current_group]);
copy_uvs_seg_to_seg(vsegptr(&New_segment), group_seg);
// Now do the copy
// First, xlate all vertices so center of group_seg:group_side is at origin
@ -748,7 +752,7 @@ static int med_move_group(int delta_flag, const vsegptridx_t base_seg, int base_
}
}
copy_uvs_seg_to_seg(&New_segment, Groupsegp[current_group]);
copy_uvs_seg_to_seg(vsegptr(&New_segment), vcsegptr(Groupsegp[current_group]));
// Now do the move
// First, xlate all vertices so center of group_seg:group_side is at origin
@ -823,7 +827,7 @@ static int AttachSegmentNewAng(const vms_angvec &pbh)
med_propagate_tmaps_to_segments(Cursegp,nsegp,0);
med_propagate_tmaps_to_back_side(nsegp, Side_opposite[AttachSide],0);
copy_uvs_seg_to_seg(&New_segment,nsegp);
copy_uvs_seg_to_seg(vsegptr(&New_segment),nsegp);
Cursegp = nsegp;
Curside = Side_opposite[AttachSide];
@ -1595,7 +1599,8 @@ int CopyGroup(void)
med_compress_mine();
if (!med_copy_group(0, Cursegp, Curside, Groupsegp[current_group], Groupside[current_group], vmd_identity_matrix)) {
if (!med_copy_group(0, Cursegp, Curside, vcsegptr(Groupsegp[current_group]), Groupside[current_group], vmd_identity_matrix))
{
autosave_mine(mine_filename);
Update_flags |= UF_WORLD_CHANGED;
mine_changed = 1;

View file

@ -382,7 +382,7 @@ void init_editor()
//@@ slew_init(Viewer); //camera is slewing
Viewer = ConsoleObject;
slew_init(ConsoleObject);
slew_init(vobjptr(ConsoleObject));
init_player_object();
Update_flags = UF_ALL;

View file

@ -789,10 +789,10 @@ void draw_world(grs_canvas *screen_canvas,editor_view *v,const vsegptridx_t mine
if (current_group > -1)
if (Groupsegp[current_group]) {
gr_setcolor(GROUPSEG_COLOR);
draw_segment(Groupsegp[current_group]);
draw_segment(vcsegptr(Groupsegp[current_group]));
gr_setcolor(GROUPSIDE_COLOR);
draw_seg_side(Groupsegp[current_group],Groupside[current_group]);
draw_seg_side(vcsegptr(Groupsegp[current_group]), Groupside[current_group]);
}
// Highlight marked segment and side.

View file

@ -367,7 +367,7 @@ int ToggleAutosave()
int AttachSegment()
{
if (med_attach_segment(Cursegp, &New_segment, Curside, AttachSide)==4) // Used to be WBACK instead of Curside
if (med_attach_segment(Cursegp, vsegptr(&New_segment), Curside, AttachSide)==4) // Used to be WBACK instead of Curside
diagnostic_message("Cannot attach segment - already a connection on current side.");
else {
if (Lock_view_to_cursegp)

View file

@ -59,7 +59,7 @@ void sort_seg_list(count_segment_array_t &segnumlist,const vms_vector &pos)
{
array<fix, MAX_SEGMENTS> dist;
range_for (const auto &ss, segnumlist)
dist[ss] = compute_dist(&Segments[ss],pos);
dist[ss] = compute_dist(vcsegptr(ss), pos);
auto predicate = [&dist](count_segment_array_t::const_reference a, count_segment_array_t::const_reference b) {
return dist[a] < dist[b];
};

View file

@ -588,8 +588,7 @@ int save_mine_data_compiled(PHYSFS_file *SaveFile)
for (segnum_t segnum = 0; segnum < Num_segments; segnum++)
{
segment *seg = &Segments[segnum];
const auto &&seg = vcsegptr(segnum);
for (short sidenum = 0; sidenum < MAX_SIDES_PER_SEGMENT; sidenum++)
{
if (seg->children[sidenum] != segment_none)
@ -684,8 +683,8 @@ int save_mine_data_compiled(PHYSFS_file *SaveFile)
#if defined(DXX_BUILD_DESCENT_II)
if (Gamesave_current_version > 5)
for (short i = 0; i < Num_segments; i++)
segment2_write(&Segments[i], SaveFile);
for (segnum_t i = 0; i < Num_segments; i++)
segment2_write(vcsegptr(i), SaveFile);
#endif
return 0;

View file

@ -884,7 +884,7 @@ int med_attach_segment(const vsegptridx_t destseg, const vsegptr_t newseg, int d
rval = med_attach_segment_rotated(destseg,newseg,destside,newside,rotmat);
med_propagate_tmaps_to_segments(ocursegp,Cursegp,0);
med_propagate_tmaps_to_back_side(Cursegp, Side_opposite[newside],0);
copy_uvs_seg_to_seg(&New_segment,Cursegp);
copy_uvs_seg_to_seg(vsegptr(&New_segment), Cursegp);
return rval;
}
@ -1001,7 +1001,7 @@ int med_delete_segment(const vsegptridx_t sp)
}
Cursegp = csp;
med_create_new_segment_from_cursegp();
copy_uvs_seg_to_seg(&New_segment,Cursegp);
copy_uvs_seg_to_seg(vsegptr(&New_segment), Cursegp);
}
sp->segnum = segment_none; // Mark segment as inactive.
@ -1100,12 +1100,12 @@ int med_rotate_segment(const vsegptridx_t seg, const vms_matrix &rotmat)
destside++;
// Before deleting the segment, copy its texture maps to New_segment
copy_tmaps_to_segment(&New_segment,seg);
copy_tmaps_to_segment(vsegptr(&New_segment), seg);
if (Curside == WFRONT)
Curside = WBACK;
med_attach_segment_rotated(destseg,&New_segment,destside,AttachSide,rotmat);
med_attach_segment_rotated(destseg, vsegptr(&New_segment), destside, AttachSide, rotmat);
// Save tmap_num on each side to restore after call to med_propagate_tmaps_to_segments and _back_side
// which will change the tmap nums.
@ -1412,7 +1412,7 @@ void med_create_segment(const vsegptridx_t sp,fix cx, fix cy, fix cz, fix length
sp->static_light = 0;
sp->matcen_num = -1;
copy_tmaps_to_segment(sp, &New_segment);
copy_tmaps_to_segment(sp, vcsegptr(&New_segment));
assign_default_uvs_to_segment(sp);
}
@ -1520,7 +1520,7 @@ void create_coordinate_axes_from_segment(const vsegptr_t sp,array<int, 16> &vert
// -----------------------------------------------------------------------------
// Determine if a segment is concave. Returns true if concave
int check_seg_concavity(const vsegptr_t s)
static int check_seg_concavity(const vcsegptr_t s)
{
int vn;
vms_vector n0;
@ -1548,16 +1548,12 @@ int check_seg_concavity(const vsegptr_t s)
// Find all concave segments and add to list
void find_concave_segs()
{
int i;
segment *s;
Warning_segs.clear();
for (s=&Segments[0],i=Highest_segment_index;i>=0;s++,i--)
range_for (const auto &&s, highest_valid(vcsegptridx))
if (s->segnum != segment_none)
if (check_seg_concavity(s)) Warning_segs.emplace_back(s - Segments);
if (check_seg_concavity(s))
Warning_segs.emplace_back(s);
}

View file

@ -857,7 +857,7 @@ void med_propagate_tmaps_to_segments(const vsegptridx_t base_seg,const vsegptrid
// Copy texture map uvs from srcseg to destseg.
// If two segments have different face structure (eg, destseg has two faces on side 3, srcseg has only 1)
// then assign uvs according to side vertex id, not face vertex id.
void copy_uvs_seg_to_seg(const vsegptr_t destseg,const vsegptr_t srcseg)
void copy_uvs_seg_to_seg(const vsegptr_t destseg, const vcsegptr_t srcseg)
{
int s;

View file

@ -71,9 +71,10 @@ void read_flying_controls(const vobjptr_t obj)
return; //references to player_ship require that this obj be the player
const auto control_guided_missile = [&] {
const auto m = Guided_missile[Player_num];
if (!m)
const auto gm = Guided_missile[Player_num];
if (!gm)
return false;
const auto &&m = vobjptr(gm);
if (m->type != OBJ_WEAPON)
return false;
if (m->signature != Guided_missile_sig[Player_num])

View file

@ -357,7 +357,7 @@ static void digi_link_sound_common(cobjptr_t viewer, sound_object &so, const vms
void digi_link_sound_to_object3( int org_soundnum, const vcobjptridx_t objnum, int forever, fix max_volume, const vm_distance max_distance, int loop_start, int loop_end )
{
const vcobjptr_t viewer{Viewer};
const auto &&viewer = vcobjptr(Viewer);
int volume,pan;
int soundnum;
@ -409,7 +409,7 @@ void digi_link_sound_to_object( int soundnum, const vcobjptridx_t objnum, int fo
static void digi_link_sound_to_pos2(int org_soundnum, const vcsegptridx_t segnum, short sidenum, const vms_vector &pos, int forever, fix max_volume, const vm_distance max_distance)
{
const vcobjptr_t viewer{Viewer};
const auto &&viewer = vcobjptr(Viewer);
int volume, pan;
int soundnum;
@ -531,7 +531,7 @@ void digi_sync_sounds()
SoundQ_process();
if (!Viewer)
return;
const vcobjptr_t viewer{Viewer};
const auto &&viewer = vcobjptr(Viewer);
range_for (auto &s, SoundObjects)
{
if (s.flags & SOF_USED)

View file

@ -745,7 +745,7 @@ void matcen_info_read(PHYSFS_file *fp, matcen_info &mi, int version)
PHYSFSX_serialize_read<const d1mi_v25>(fp, mi);
}
#elif defined(DXX_BUILD_DESCENT_II)
void fuelcen_check_for_goal(const vsegptr_t segp)
void fuelcen_check_for_goal(const vcsegptr_t segp)
{
Assert (game_mode_capture_flag());
@ -776,7 +776,7 @@ void fuelcen_check_for_goal(const vsegptr_t segp)
}
}
void fuelcen_check_for_hoard_goal(const vsegptr_t segp)
void fuelcen_check_for_hoard_goal(const vcsegptr_t segp)
{
Assert (game_mode_hoard());

View file

@ -538,9 +538,9 @@ static void show_extra_views()
DemoDoingLeft=DemoDoLeft;
if (DemoDoLeft==3)
do_cockpit_window_view(0,ConsoleObject,1,WBU_REAR,"REAR");
do_cockpit_window_view(0, vobjptr(ConsoleObject), 1, WBU_REAR, "REAR");
else
do_cockpit_window_view(0,&DemoLeftExtra,DemoRearCheck[DemoDoLeft],DemoWBUType[DemoDoLeft],DemoExtraMessage[DemoDoLeft]);
do_cockpit_window_view(0, vobjptr(&DemoLeftExtra), DemoRearCheck[DemoDoLeft], DemoWBUType[DemoDoLeft], DemoExtraMessage[DemoDoLeft]);
}
else
do_cockpit_window_view(0,WBU_WEAPON);
@ -550,10 +550,10 @@ static void show_extra_views()
DemoDoingRight=DemoDoRight;
if (DemoDoRight==3)
do_cockpit_window_view(1,ConsoleObject,1,WBU_REAR,"REAR");
do_cockpit_window_view(1, vobjptr(ConsoleObject), 1, WBU_REAR, "REAR");
else
{
do_cockpit_window_view(1,&DemoRightExtra,DemoRearCheck[DemoDoRight],DemoWBUType[DemoDoRight],DemoExtraMessage[DemoDoRight]);
do_cockpit_window_view(1, vobjptr(&DemoRightExtra), DemoRearCheck[DemoDoRight], DemoWBUType[DemoDoRight], DemoExtraMessage[DemoDoRight]);
}
}
else
@ -572,12 +572,12 @@ static void show_extra_views()
if (PlayerCfg.GuidedInBigWindow)
{
RenderingType=6+(1<<4);
do_cockpit_window_view(1,Viewer,0,WBU_MISSILE,"SHIP");
do_cockpit_window_view(1, vobjptr(Viewer), 0, WBU_MISSILE, "SHIP");
}
else
{
RenderingType=1+(1<<4);
do_cockpit_window_view(1,Guided_missile[Player_num],0,WBU_GUIDED,"GUIDED");
do_cockpit_window_view(1, vobjptr(Guided_missile[Player_num]), 0, WBU_GUIDED, "GUIDED");
}
did_missile_view=1;
@ -593,7 +593,7 @@ static void show_extra_views()
//do missile view
{
RenderingType=2+(1<<4);
do_cockpit_window_view(1, Missile_viewer, 0, WBU_MISSILE, get_missile_name(get_weapon_id(*Missile_viewer)));
do_cockpit_window_view(1, vobjptr(Missile_viewer), 0, WBU_MISSILE, get_missile_name(get_weapon_id(*Missile_viewer)));
did_missile_view=1;
}
else {
@ -625,11 +625,11 @@ static void show_one_extra_view(const int w)
case CV_REAR:
if (Rear_view) { //if big window is rear view, show front here
RenderingType=3+(w<<4);
do_cockpit_window_view(w,ConsoleObject,0,WBU_REAR,"FRONT");
do_cockpit_window_view(w, vobjptr(ConsoleObject), 0, WBU_REAR, "FRONT");
}
else { //show normal rear view
RenderingType=3+(w<<4);
do_cockpit_window_view(w,ConsoleObject,1,WBU_REAR,"REAR");
do_cockpit_window_view(w, vobjptr(ConsoleObject), 1, WBU_REAR, "REAR");
}
break;
case CV_ESCORT: {
@ -704,10 +704,10 @@ void game_render_frame_mono()
Viewer = Guided_missile[Player_num];
window_rendered_data window;
update_rendered_data(window, Viewer, 0);
update_rendered_data(window, vobjptr(Viewer), 0);
render_frame(0, window);
wake_up_rendered_objects(Viewer, window);
wake_up_rendered_objects(vobjptr(Viewer), window);
show_HUD_names();
Viewer = viewer_save;
@ -737,7 +737,7 @@ void game_render_frame_mono()
#endif
window_rendered_data window;
#if defined(DXX_BUILD_DESCENT_II)
update_rendered_data(window, Viewer, Rear_view);
update_rendered_data(window, vobjptr(Viewer), Rear_view);
#endif
render_frame(0, window);
}

View file

@ -2244,7 +2244,7 @@ void release_guided_missile(int player_num)
Missile_viewer = Guided_missile[player_num];
if (Game_mode & GM_MULTI)
multi_send_guided_info (Guided_missile[Player_num],1);
multi_send_guided_info(vobjptr(Missile_viewer), 1);
if (Newdemo_state==ND_STATE_RECORDING)
newdemo_record_guided_end();
}

View file

@ -4352,7 +4352,7 @@ static void DropOrb ()
seed = d_rand();
auto objnum = spit_powerup(ConsoleObject,POW_HOARD_ORB,seed);
const auto &&objnum = spit_powerup(vobjptr(ConsoleObject), POW_HOARD_ORB, seed);
if (objnum == object_none)
return;
@ -4391,7 +4391,7 @@ void DropFlag ()
return;
}
seed = d_rand();
const auto &&objnum = spit_powerup(ConsoleObject, get_team(Player_num) == TEAM_RED ? POW_FLAG_BLUE : POW_FLAG_RED, seed);
const auto &&objnum = spit_powerup(vobjptr(ConsoleObject), get_team(Player_num) == TEAM_RED ? POW_FLAG_BLUE : POW_FLAG_RED, seed);
if (objnum == object_none)
{
HUD_init_message_literal(HM_MULTI, "Failed to drop flag!");

View file

@ -1608,19 +1608,20 @@ static void object_move_one(const vobjptridx_t obj)
obj->last_pos = obj->pos; // Save the current position
if ((obj->type==OBJ_PLAYER) && (Player_num==get_player_id(obj))) {
const auto &&segp = vsegptr(obj->segnum);
#if defined(DXX_BUILD_DESCENT_II)
if (game_mode_capture_flag())
fuelcen_check_for_goal (&Segments[obj->segnum]);
if (game_mode_hoard())
fuelcen_check_for_hoard_goal (&Segments[obj->segnum]);
if (game_mode_capture_flag())
fuelcen_check_for_goal(segp);
else if (game_mode_hoard())
fuelcen_check_for_hoard_goal(segp);
#endif
fix fuel=fuelcen_give_fuel(vsegptr(obj->segnum), INITIAL_ENERGY - get_local_player_energy() );
const fix fuel=fuelcen_give_fuel(segp, INITIAL_ENERGY - get_local_player_energy());
if (fuel > 0 ) {
get_local_player_energy() += fuel;
}
#if defined(DXX_BUILD_DESCENT_II)
fix shields = repaircen_give_shields( &Segments[obj->segnum], INITIAL_SHIELDS - get_local_player_shields() );
const fix shields = repaircen_give_shields(segp, INITIAL_SHIELDS - get_local_player_shields());
if (shields > 0) {
get_local_player_shields() += shields;
}

View file

@ -1202,7 +1202,7 @@ void render_frame(fix eye_offset, window_rendered_data &window)
//Here:
start_lighting_frame(Viewer); //this is for ugly light-smoothing hack
start_lighting_frame(vobjptr(Viewer)); //this is for ugly light-smoothing hack
g3_start_frame();

View file

@ -1287,7 +1287,7 @@ void DropCurrentWeapon ()
}
const auto seed = d_rand();
const auto objnum = spit_powerup(ConsoleObject, drop_type, seed);
const auto objnum = spit_powerup(vobjptr(ConsoleObject), drop_type, seed);
if (objnum == object_none)
{
HUD_init_message(HM_DEFAULT, "Failed to drop %s!", weapon_name);
@ -1443,7 +1443,7 @@ void DropSecondaryWeapon ()
seed = d_rand();
auto objnum = spit_powerup(ConsoleObject,weapon_drop_id,seed);
auto objnum = spit_powerup(vobjptr(ConsoleObject), weapon_drop_id, seed);
if (objnum == object_none)
return;