Changeset 6ac7ee for src/helpers.cpp
- Timestamp:
- Feb 9, 2009, 5:24:10 PM (17 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, Candidate_v1.7.0, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- d8b94a
- Parents:
- 124df1
- git-author:
- Frederik Heber <heber@…> (02/09/09 15:55:37)
- git-committer:
- Frederik Heber <heber@…> (02/09/09 17:24:10)
- File:
-
- 1 edited
-
src/helpers.cpp (modified) (13 diffs, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
src/helpers.cpp
-
Property mode
changed from
100644to100755
r124df1 r6ac7ee 1 1 /** \file helpers.cpp 2 2 * 3 * Implementation of some auxiliary functions for memory dis-/allocation and so on 3 * Implementation of some auxiliary functions for memory dis-/allocation and so on 4 4 */ 5 5 … … 15 15 double ask_value(const char *text) 16 16 { 17 double test = 0.1439851348959832147598734598273456723948652983045928346598365;18 do {19 cout << Verbose(0) << text;20 cin >> test;21 } while (test == 0.1439851348959832147598734598273456723948652983045928346598365);22 return test; 17 double test = 0.1439851348959832147598734598273456723948652983045928346598365; 18 do { 19 cout << Verbose(0) << text; 20 cin >> test; 21 } while (test == 0.1439851348959832147598734598273456723948652983045928346598365); 22 return test; 23 23 }; 24 24 … … 29 29 #ifdef HAVE_DEBUG 30 30 void debug_in(const char *output, const char *file, const int line) { 31 if (output) fprintf(stderr,"DEBUG: in %s at line %i: %s\n", file, line, output);31 if (output) fprintf(stderr,"DEBUG: in %s at line %i: %s\n", file, line, output); 32 32 } 33 33 #else 34 void debug_in(const char *output, const char *file, const int line) {} // print nothing34 void debug_in(const char *output, const char *file, const int line) {} // print nothing 35 35 #endif 36 36 … … 40 40 * \return pointer to memory range 41 41 */ 42 void * Malloc(size_t size, const char* output) 42 void * Malloc(size_t size, const char* output) 43 43 { 44 void *buffer = NULL;45 buffer = (void *)malloc(size); // alloc46 if (buffer == NULL)47 cout << Verbose(0) << "Malloc failed - pointer is NULL: " << output << endl;48 return(buffer);44 void *buffer = NULL; 45 buffer = (void *)malloc(size); // alloc 46 if (buffer == NULL) 47 cout << Verbose(0) << "Malloc failed - pointer is NULL: " << output << endl; 48 return(buffer); 49 49 }; 50 50 … … 54 54 * \return pointer to memory range 55 55 */ 56 void * Calloc(size_t size, const char* output) 56 void * Calloc(size_t size, const char* output) 57 57 { 58 void *buffer = NULL;59 buffer = (void *)calloc(size, (size_t)0); // alloc60 if (buffer == NULL)61 cout << Verbose(0) << "Calloc failed - pointer is NULL: " << output << endl;62 return(buffer);58 void *buffer = NULL; 59 buffer = (void *)calloc(size, (size_t)0); // alloc 60 if (buffer == NULL) 61 cout << Verbose(0) << "Calloc failed - pointer is NULL: " << output << endl; 62 return(buffer); 63 63 }; 64 64 … … 69 69 * \return pointer to memory range 70 70 */ 71 void * ReAlloc(void * OldPointer, size_t size, const char* output) 71 void * ReAlloc(void * OldPointer, size_t size, const char* output) 72 72 { 73 void *buffer = NULL;74 if (OldPointer == NULL)75 //cout << Verbose(0) << "ReAlloc impossible - old is NULL: " << output << endl;76 buffer = (void *)malloc(size); // malloc77 else78 buffer = (void *)realloc(OldPointer, size); // realloc79 if (buffer == NULL)80 cout << Verbose(0) << "ReAlloc failed - new is NULL: " << output << endl;81 return(buffer);73 void *buffer = NULL; 74 if (OldPointer == NULL) 75 //cout << Verbose(0) << "ReAlloc impossible - old is NULL: " << output << endl; 76 buffer = (void *)malloc(size); // malloc 77 else 78 buffer = (void *)realloc(OldPointer, size); // realloc 79 if (buffer == NULL) 80 cout << Verbose(0) << "ReAlloc failed - new is NULL: " << output << endl; 81 return(buffer); 82 82 }; 83 83 … … 86 86 * \param *output message if free fails 87 87 */ 88 void Free(void ** buffer, const char* output) 88 void Free(void ** buffer, const char* output) 89 89 { 90 if (*buffer == NULL) {91 //cout << Verbose(5) << "Free not necesary: " << output << endl;92 } else {93 free(*buffer);94 *buffer = NULL;95 }90 if (*buffer == NULL) { 91 //cout << Verbose(5) << "Free not necesary: " << output << endl; 92 } else { 93 free(*buffer); 94 *buffer = NULL; 95 } 96 96 }; 97 97 … … 101 101 * \return pointer to string array 102 102 */ 103 char* MallocString(size_t size, const char* output) 103 char* MallocString(size_t size, const char* output) 104 104 { 105 size_t i;106 char *buffer;107 buffer = (char *)malloc(sizeof(char) * (size+1)); // alloc108 if (buffer == NULL)109 cout << Verbose(0) << output << endl;110 for (i=size;i--;)// reset111 buffer[i] = i % 2 == 0 ? 'p': 'c';112 buffer[size] = '\0'; // and set length marker on its end113 return(buffer);105 size_t i; 106 char *buffer; 107 buffer = (char *)malloc(sizeof(char) * (size+1)); // alloc 108 if (buffer == NULL) 109 cout << Verbose(0) << output << endl; 110 for (i=size;i--;) // reset 111 buffer[i] = i % 2 == 0 ? 'p': 'c'; 112 buffer[size] = '\0'; // and set length marker on its end 113 return(buffer); 114 114 } 115 115 … … 121 121 void bound(double *b, double lower_bound, double upper_bound) 122 122 { 123 double step = (upper_bound - lower_bound);124 while (*b >= upper_bound)125 *b -= step; 126 while (*b < lower_bound)127 *b += step; 128 }; 123 double step = (upper_bound - lower_bound); 124 while (*b >= upper_bound) 125 *b -= step; 126 while (*b < lower_bound) 127 *b += step; 128 }; 129 129 130 130 /** Flips two doubles. … … 134 134 void flip(double *x, double *y) 135 135 { 136 double tmp;137 tmp = *x;138 *x = *y;139 *y = tmp;136 double tmp; 137 tmp = *x; 138 *x = *y; 139 *y = tmp; 140 140 }; 141 141 … … 147 147 int pot(int base, int n) 148 148 { 149 int res = 1;150 int j;151 for (j=n;j--;)152 res *= base;153 return res;149 int res = 1; 150 int j; 151 for (j=n;j--;) 152 res *= base; 153 return res; 154 154 }; 155 155 … … 161 161 char *FixedDigitNumber(const int FragmentNumber, const int digits) 162 162 { 163 char *returnstring;164 int number = FragmentNumber;165 int order = 0;166 while (number != 0) { // determine number of digits needed167 number = (int)floor(((double)number / 10.));168 order++;169 //cout << "Number is " << number << ", order is " << order << "." << endl;170 }171 // allocate string172 returnstring = (char *) Malloc(sizeof(char)*(order+2), "MoleculeListClass::CreateFragmentNumberForOutput: *returnstring");173 // terminateand fill string array from end backward174 returnstring[order] = '\0';175 number = digits;176 for (int i=order;i--;) {177 returnstring[i] = '0' + (char)(number % 10);178 number = (int)floor(((double)number / 10.));179 }180 //cout << returnstring << endl;181 return returnstring;163 char *returnstring; 164 int number = FragmentNumber; 165 int order = 0; 166 while (number != 0) { // determine number of digits needed 167 number = (int)floor(((double)number / 10.)); 168 order++; 169 //cout << "Number is " << number << ", order is " << order << "." << endl; 170 } 171 // allocate string 172 returnstring = (char *) Malloc(sizeof(char)*(order+2), "MoleculeListClass::CreateFragmentNumberForOutput: *returnstring"); 173 // terminate and fill string array from end backward 174 returnstring[order] = '\0'; 175 number = digits; 176 for (int i=order;i--;) { 177 returnstring[i] = '0' + (char)(number % 10); 178 number = (int)floor(((double)number / 10.)); 179 } 180 //cout << returnstring << endl; 181 return returnstring; 182 182 }; 183 183 … … 186 186 * \return true - is a number, false - is not a valid number 187 187 */ 188 bool IsValidNumber( const char *string) 188 bool IsValidNumber( const char *string) 189 189 { 190 int ptr = 0;191 if ((string[ptr] == '.') || (string[ptr] == '-')) // number may be negative or start with dot192 ptr++;193 if ((string[ptr] >= '0') && (string[ptr] <= '9'))194 return true;195 return false;190 int ptr = 0; 191 if ((string[ptr] == '.') || (string[ptr] == '-')) // number may be negative or start with dot 192 ptr++; 193 if ((string[ptr] >= '0') && (string[ptr] <= '9')) 194 return true; 195 return false; 196 196 }; 197 197 -
Property mode
changed from
Note:
See TracChangeset
for help on using the changeset viewer.
