StringArray *StringArray_NewSub(const StringArray *ar, int fromIndex, int count) { assert(ar); if(count < 0) { count = ar->remainder(fromIndex); } ar->assertValidRange(fromIndex, count); StringArray *sub = StringArray_New(); for(int i = 0; i < count; ++i) { StringArray_Append(sub, StringArray_At(ar, fromIndex + i)); } return sub; }
return (self) { .term = term, .deps = deps, .logger = logger, .output = String_New(0), .cc = String_Clone($("/usr/bin/clang")), .inclhdr = String_New(0), .runtime = String_New(0), .manifest = false, .library = false, .dbgsym = false, .std = String_Clone($("gnu99")), .blocks = true, .optmlevel = 0, .verbose = false, .link = StringArray_New(0), .mappings = MappingArray_New(0), .linkpaths = StringArray_New(0), .workers = CPU_getCores() }; } def(void, destroy) { String_Destroy(&this->output); String_Destroy(&this->cc); String_Destroy(&this->inclhdr); String_Destroy(&this->runtime); String_Destroy(&this->std); StringArray_Destroy(this->link); StringArray_Free(this->link);