wxTarEntry *wxTarInputStream::GetNextEntry() { m_lasterror = ReadHeaders(); if (!IsOk()) return NULL; wxTarEntryPtr entry(new wxTarEntry); entry->SetMode(GetHeaderNumber(TAR_MODE)); entry->SetUserId(GetHeaderNumber(TAR_UID)); entry->SetGroupId(GetHeaderNumber(TAR_UID)); entry->SetSize(GetHeaderNumber(TAR_SIZE)); entry->SetOffset(m_offset); entry->SetDateTime(GetHeaderDate(wxT("mtime"))); entry->SetAccessTime(GetHeaderDate(wxT("atime"))); entry->SetCreateTime(GetHeaderDate(wxT("ctime"))); entry->SetTypeFlag(*m_hdr->Get(TAR_TYPEFLAG)); bool isDir = entry->IsDir(); entry->SetLinkName(GetHeaderString(TAR_LINKNAME)); if (m_tarType != TYPE_OLDTAR) { entry->SetUserName(GetHeaderString(TAR_UNAME)); entry->SetGroupName(GetHeaderString(TAR_GNAME)); entry->SetDevMajor(GetHeaderNumber(TAR_DEVMAJOR)); entry->SetDevMinor(GetHeaderNumber(TAR_DEVMINOR)); } entry->SetName(GetHeaderPath(), wxPATH_UNIX); if (isDir) entry->SetIsDir(); if (m_HeaderRecs) m_HeaderRecs->clear(); m_size = GetDataSize(*entry); m_pos = 0; return entry.release(); }
void Sensitivity::Init() { mbs->OpenFiles(0); //open files already here, do not append ElementDataContainer* edc = mbs->GetMBS_EDC_Options(); mystr method = edc->TreeGetString("SolverOptions.Sensitivity.method"); // choose type of analysis if(method.Compare(mystr("Forward"))) { type_diff = 1; // 1 ... df/dx =~ (f(x+dx)-f(x))/dx forward differentiation } else if(method.Compare(mystr("Backward"))) { type_diff = -1; // -1 ... df/dx =~ (f(x)-f(x-dx))/dx backward differentiation } else { type_diff = 0; // 0 ... df/dx =~ (f(x+dx/2)-f(x-dx/2))/dx central differentiation } // get parameter names if(edc->TreeGetInt("SolverOptions.Sensitivity.use_optimization_parameters")) { number_of_params = edc->TreeGetInt("SolverOptions.Optimization.Parameters.number_of_params"); for (int col=1; col <= number_of_params; col++) { mystr str = edc->TreeGetString(mystr("SolverOptions.Optimization.Parameters.param_name")+mystr(col)); param_names(col) = new mystr(str); } } else { number_of_params = edc->TreeGetInt("SolverOptions.Sensitivity.Parameters.number_of_params"); for (int col=1; col <= number_of_params; col++) { mystr str = edc->TreeGetString(mystr("SolverOptions.Sensitivity.Parameters.param_name")+mystr(col)); param_names(col) = new mystr(str); } } abs_diff_val = edc->TreeGetDouble("SolverOptions.Sensitivity.num_diff_parameter_absolute"); rel_diff_val = edc->TreeGetDouble("SolverOptions.Sensitivity.num_diff_parameter_relative"); NCompSensors = 0; // sensor with computation value (case use_final_sensor_values == 0) for(int i = 1; i<=mbs->NSensors();i++) { mystr str = ""; if(mbs->GetMBS_EDC_Options()->TreeGetInt("SolverOptions.Sensitivity.use_final_sensor_values",0)) { str = mbs->GetSensor(i).GetSensorName(); sensor_names(i) = new mystr(str); // store names for header } else { if(mbs->GetSensor(i).HasSensorProcessingEvaluationData()) { str = mbs->GetSensor(i).GetSensorName(); NCompSensors++; sensor_names(NCompSensors) = new mystr(str); // store names for header } } } mbs->SolParFile() << GetHeaderString(); // write header into output file (use sensor_names and parameter_names) }