static Region *getRegion(int compnr) { char name[20]; Region* regionp = 0; sprintf(name, "%d", compnr); std::string key = name; if (regionTable.find(key) == regionTable.end()) { std::cout << "WARNING: region " << key << " not in material list" << std::endl; char unknown[] = "UNKNOWN"; if (regionTable.find(unknown) == regionTable.end()) { regionp = new Region(atoi(unknown), unknown); regionp->addMaterial(0); key = unknown; regionTable[key] = regionp; } else regionp = regionTable[unknown]; } else regionp = regionTable[key]; return regionp; }
int readMaterials(FILE *fp) { char title[LINELEN]; char name[20]; int mat; if (bu_fgets(title, LINELEN, fp) == NULL) return 1; char descr[LINELEN]; while (fscanf(fp, "%s%d%[^\n]", name, &mat, descr) != EOF) { if (name[0] == '-') continue; Region *regionp; regionp = new Region(atoi(name), descr); regionp->addMaterial(mat); std::string key = name; regionTable[key] = regionp; fgetc(fp); // newline lezen } return 0; }