ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/RigidBodyStamp.cpp
(Generate patch)

Comparing trunk/OOPSE/libBASS/RigidBodyStamp.cpp (file contents):
Revision 987 by gezelter, Mon Jan 26 21:26:40 2004 UTC vs.
Revision 988 by gezelter, Tue Jan 27 19:37:48 2004 UTC

# Line 10 | Line 10 | RigidBodyStamp::RigidBodyStamp(){
10   RigidBodyStamp::RigidBodyStamp(){
11    
12    unhandled = NULL;
13 <  have_position = 0;
14 <  have_orientation = 0;
15 <  have_atoms = 0;
13 >  have_members = 0;
14    have_extras = 0;
15 +  n_members = 0;
16   }
17  
18   RigidBodyStamp::~RigidBodyStamp(){
19    int i;
20    
21    if( unhandled != NULL ) delete unhandled;
22 <
23 <  if( atoms != NULL ){
24 <    for( i=0; i<n_atoms; i++ ) delete atoms[i];
22 >  
23 >  if( members != NULL ){
24 >    for (i=0; i< n_members; i++) delete members[i];
25    }
26   }
27  
29 void RigidBodyStamp::setPosition( double x, double y, double z ){
30
31  pos[0] = x;
32  pos[1] = y;
33  pos[2] = z;
34
35  // Do I tell atoms about this?
36
37  have_position = 1;
38 }
39
40 void RigidBodyStamp::setOrientation( double phi, double theta, double psi ){
41
42  // in order of application (see Goldstein)
43
44  ornt[0] = phi;
45  ornt[1] = theta;
46  ornt[2] = psi;
47
48  // Do I tell atoms about this?
49
50  have_orientation = 1;
51 }
52
28   char* RigidBodyStamp::assignString( char* lhs, char* rhs ){
29  
30    if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
# Line 61 | Line 36 | char* RigidBodyStamp::assignDouble( char* lhs, double
36   char* RigidBodyStamp::assignDouble( char* lhs, double rhs ){
37    int i;
38  
39 <  if( !strcmp( lhs, "nAtoms" ) ){
40 <    n_atoms = (int)rhs;
41 <
42 <    if( have_atoms ){
39 >  if( !strcmp( lhs, "nMembers" ) ){
40 >    n_members = (int)rhs;
41 >    
42 >    if( have_members ){
43        sprintf( errMsg,
44 <               "RigidBodyStamp error, n_atoms already declared"
44 >               "RigidBodyStamp error, nMembers already declared"
45                 " for this RigidBody.\n");
46        return strdup( errMsg );
47      }
48 <    have_atoms = 1;
49 <    atoms = new AtomStamp*[n_atoms];
50 <    for( i=0; i<n_atoms; i++ ) atoms[i] = NULL;
48 >    have_members = 1;
49 >    members = new MemberStamp*[n_members];
50 >    for( i=0; i<n_members; i++ ) members[i] = NULL;
51    }
52    else {
53      if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
# Line 85 | Line 60 | char* RigidBodyStamp::assignInt( char* lhs, int rhs ){
60   char* RigidBodyStamp::assignInt( char* lhs, int rhs ){
61    int i;
62  
63 <  if( !strcmp( lhs, "nAtoms" ) ){
64 <    n_atoms = rhs;
63 >  if( !strcmp( lhs, "nMembers" ) ){
64 >    n_members = rhs;
65  
66 <    if( have_atoms ){
66 >    if( have_members ){
67        sprintf( errMsg,
68 <               "RigidBodyStamp error, n_atoms already declared for"
68 >               "RigidBodyStamp error, nMembers already declared for"
69                 " this RigidBody.\n");
70        return strdup( errMsg );
71      }
72 <    have_atoms = 1;
73 <    atoms = new AtomStamp*[n_atoms];
74 <    for( i=0; i<n_atoms; i++ ) atoms[i] = NULL;
72 >    have_members = 1;
73 >    members = new MemberStamp*[n_members];
74 >    for( i=0; i<n_members; i++ ) members[i] = NULL;
75    }
76    else {  
77      if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
# Line 106 | Line 81 | char* RigidBodyStamp::addAtom( AtomStamp* the_atom, in
81    return NULL;
82   }
83  
84 < char* RigidBodyStamp::addAtom( AtomStamp* the_atom, int atomIndex ){
84 > char* RigidBodyStamp::addMember( MemberStamp* the_member, int memberIndex ){
85    
86 <  if( have_atoms && atomIndex < n_atoms ) atoms[atomIndex] = the_atom;
86 >  if( have_members && memberIndex < n_members ) members[memberIndex] = the_member;
87    else{
88 <    if( have_atoms ){
89 <      sprintf( errMsg, "RigidBodyStamp error, %d out of nAtoms range",
90 <               atomIndex );
88 >    if( have_members ){
89 >      sprintf( errMsg, "RigidBodyStamp error, %d out of nMembers range",
90 >               memberIndex );
91        return strdup( errMsg );
92      }
93 <    else return strdup("RigidBodyStamp error, nAtoms not given before"
94 <                       "first atom declaration." );
93 >    else return strdup("RigidBodyStamp error, nMembers not given before"
94 >                       " first member declaration." );
95    }
96    return NULL;
97   }
# Line 124 | Line 99 | char* RigidBodyStamp::checkMe( void ){
99   char* RigidBodyStamp::checkMe( void ){
100  
101    int i;
102 <  short int no_atom;
102 >  short int no_member;
103    
104 <  if( !have_atoms ){
105 <    return strdup( "RigidBodyStamp error. RigidBody contains no atoms." );
104 >  if( !have_members ){
105 >    return strdup( "RigidBodyStamp error. RigidBody contains no members." );
106    }
107    
108 <  no_atom = 0;
109 <  for( i=0; i<n_atoms; i++ ){
110 <    if( atoms[i] == NULL ) no_atom = 1;
108 >  no_member = 0;
109 >  for( i=0; i<n_members; i++ ){
110 >    if( members[i] == NULL ) no_member = 1;
111    }
112    
113 <  if( no_atom ){
113 >  if( no_member ){
114      sprintf( errMsg,
115 <             "RigidBodyStamp error. Not all of the atoms were"
115 >             "RigidBodyStamp error. Not all of the members were"
116               " declared in this RigidBody.");
117      return strdup( errMsg );
118    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines