ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/CutoffGroupStamp.cpp
Revision: 1153
Committed: Tue May 11 04:21:52 2004 UTC (20 years, 1 month ago) by gezelter
File size: 2623 byte(s)
Log Message:
BASS changes for adding CutoffGroups to molecules.  Also restructured
the plethora of cutoff radii into one cutoffRadius and one
switchingRadius.  Also removed the useMolecularCutoffs keyword

File Contents

# User Rev Content
1 gezelter 1153 #include <stdlib.h>
2     #include <stdio.h>
3     #include <string.h>
4     #include <iostream>
5    
6     #include "CutoffGroupStamp.hpp"
7    
8     char CutoffGroupStamp::errMsg[500];
9    
10     CutoffGroupStamp::CutoffGroupStamp(){
11    
12     unhandled = NULL;
13     have_members = 0;
14     have_extras = 0;
15     n_members = 0;
16     which = 0;
17    
18     }
19    
20     CutoffGroupStamp::~CutoffGroupStamp(){
21     int i;
22    
23     if( unhandled != NULL ) delete unhandled;
24    
25     free(members);
26    
27     }
28    
29     char* CutoffGroupStamp::assignString( char* lhs, char* rhs ){
30    
31     if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
32     else unhandled->add( lhs, rhs );
33     have_extras = 1;
34     return NULL;
35    
36     }
37    
38     char* CutoffGroupStamp::assignDouble( char* lhs, double rhs ){
39     int i;
40    
41     if( !strcmp( lhs, "nMembers" ) ){
42     n_members = (int)rhs;
43    
44     if( have_members ){
45     sprintf( errMsg,
46     "CutoffGroupStamp error, nMembers already declared"
47     " for this CutoffGroup.\n");
48     return strdup( errMsg );
49     }
50     have_members = 1;
51     members = (int *) calloc(n_members, sizeof(int));
52     }
53     else {
54     if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
55     else unhandled->add( lhs, rhs );
56     have_extras = 1;
57     }
58     return NULL;
59     }
60    
61     char* CutoffGroupStamp::assignInt( char* lhs, int rhs ){
62     int i;
63    
64     if( !strcmp( lhs, "nMembers" ) ){
65     n_members = rhs;
66    
67     if( have_members ){
68     sprintf( errMsg,
69     "CutoffGroupStamp error, nMembers already declared for"
70     " this CutoffGroup.\n");
71     return strdup( errMsg );
72     }
73     have_members = 1;
74     members = (int *) calloc(n_members, sizeof(int));
75     }
76     else {
77     if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
78     else unhandled->add( lhs, rhs );
79     have_extras = 1;
80     }
81     return NULL;
82     }
83    
84     char* CutoffGroupStamp::addMember( int atomIndex ){
85    
86     if( have_members && which < n_members ) {
87     members[which] = atomIndex;
88     which++;
89     } else {
90     if( have_members ){
91     sprintf( errMsg, "CutoffGroupStamp error, %d out of nMembers range",
92     which );
93     return strdup( errMsg );
94     }
95     else return strdup("CutoffGroupStamp error, nMembers not given before"
96     " member list declaration." );
97     }
98     return NULL;
99     }
100    
101     char* CutoffGroupStamp::checkMe( void ){
102    
103     int i;
104     short int no_member;
105    
106     if( !have_members ){
107     return strdup( "CutoffGroupStamp error. CutoffGroup contains no members." );
108     }
109    
110     if (which < n_members) {
111     sprintf( errMsg,
112     "CutoffGroupStamp error. Not all of the members were"
113     " declared for this CutoffGroup.");
114     return strdup( errMsg );
115     }
116    
117     return NULL;
118    
119     }