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 997 by gezelter, Tue Jan 27 19:37:48 2004 UTC vs.
Revision 998 by gezelter, Thu Jan 29 23:01:17 2004 UTC

# Line 13 | Line 13 | RigidBodyStamp::RigidBodyStamp(){
13    have_members = 0;
14    have_extras = 0;
15    n_members = 0;
16 +  which = 0;
17 +
18   }
19  
20   RigidBodyStamp::~RigidBodyStamp(){
21    int i;
22    
23    if( unhandled != NULL ) delete unhandled;
24 <  
25 <  if( members != NULL ){
26 <    for (i=0; i< n_members; i++) delete members[i];
25 <  }
24 >
25 >  free(members);
26 >
27   }
28  
29   char* RigidBodyStamp::assignString( char* lhs, char* rhs ){
# Line 31 | Line 32 | char* RigidBodyStamp::assignString( char* lhs, char* r
32    else unhandled->add( lhs, rhs );
33    have_extras = 1;
34    return NULL;
35 +
36   }
37  
38   char* RigidBodyStamp::assignDouble( char* lhs, double rhs ){
# Line 46 | Line 48 | char* RigidBodyStamp::assignDouble( char* lhs, double
48        return strdup( errMsg );
49      }
50      have_members = 1;
51 <    members = new MemberStamp*[n_members];
50 <    for( i=0; i<n_members; i++ ) members[i] = NULL;
51 >    members = (int *) calloc(n_members, sizeof(int));    
52    }
53    else {
54      if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
# Line 70 | Line 71 | char* RigidBodyStamp::assignInt( char* lhs, int rhs ){
71        return strdup( errMsg );
72      }
73      have_members = 1;
74 <    members = new MemberStamp*[n_members];
74 <    for( i=0; i<n_members; i++ ) members[i] = NULL;
74 >    members = (int *) calloc(n_members, sizeof(int));    
75    }
76    else {  
77      if( unhandled == NULL ) unhandled = new LinkedAssign( lhs, rhs );
# Line 81 | Line 81 | char* RigidBodyStamp::addMember( MemberStamp* the_memb
81    return NULL;
82   }
83  
84 < char* RigidBodyStamp::addMember( MemberStamp* the_member, int memberIndex ){
85 <  
86 <  if( have_members && memberIndex < n_members ) members[memberIndex] = the_member;
87 <  else{
84 > char* RigidBodyStamp::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, "RigidBodyStamp error, %d out of nMembers range",
92 <               memberIndex );
92 >               which );
93        return strdup( errMsg );
94      }
95      else return strdup("RigidBodyStamp error, nMembers not given before"
96 <                       " first member declaration." );
96 >                       " member list declaration." );
97    }
98    return NULL;
99   }
# Line 104 | Line 106 | char* RigidBodyStamp::checkMe( void ){
106    if( !have_members ){
107      return strdup( "RigidBodyStamp error. RigidBody contains no members." );
108    }
109 <  
110 <  no_member = 0;
109 <  for( i=0; i<n_members; i++ ){
110 <    if( members[i] == NULL ) no_member = 1;
111 <  }
112 <  
113 <  if( no_member ){
109 >
110 >  if (which < n_members) {
111      sprintf( errMsg,
112               "RigidBodyStamp error. Not all of the members were"
113 <             " declared in this RigidBody.");
113 >             " declared for this RigidBody.");
114      return strdup( errMsg );
115    }
116    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines