MCPcopy Create free account
hub / github.com/DFHack/dfhack / cloneJobStruct

Method cloneJobStruct

library/modules/Job.cpp:66–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64using namespace df::enums;
65
66df::job *DFHack::Job::cloneJobStruct(df::job *job, bool keepEverything)
67{
68 CHECK_NULL_POINTER(job);
69
70 df::job *pnew = new df::job(*job);
71
72 if ( !keepEverything ) {
73 // Clean out transient fields
74 pnew->flags.whole = 0;
75 pnew->flags.bits.repeat = job->flags.bits.repeat;
76 pnew->flags.bits.suspend = job->flags.bits.suspend;
77
78 pnew->completion_timer = -1;
79 pnew->posting_index = -1;
80 }
81 pnew->list_link = NULL;
82
83 //pnew->items.clear();
84 //pnew->specific_refs.clear();
85 pnew->general_refs.clear();
86 //pnew->job_items.elements.clear();
87
88 if ( keepEverything ) {
89 for ( size_t a = 0; a < pnew->items.size(); a++ )
90 pnew->items[a] = new df::job_item_ref(*pnew->items[a]);
91 for ( size_t a = 0; a < pnew->specific_refs.size(); a++ )
92 pnew->specific_refs[a] = new df::specific_ref(*pnew->specific_refs[a]);
93 } else {
94 pnew->items.clear();
95 pnew->specific_refs.clear();
96 }
97
98 for ( size_t a = 0; a < pnew->job_items.elements.size(); a++ )
99 pnew->job_items.elements[a] = new df::job_item(*pnew->job_items.elements[a]);
100
101 for ( size_t a = 0; a < job->general_refs.size(); a++ )
102 if ( keepEverything || job->general_refs[a]->getType() != general_ref_type::UNIT_WORKER )
103 pnew->general_refs.push_back(job->general_refs[a]->clone());
104
105 return pnew;
106}
107
108void DFHack::Job::deleteJobStruct(df::job *job, bool keptEverything)
109{

Callers

nothing calls this directly

Calls 4

getTypeMethod · 0.80
cloneMethod · 0.80
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected