zOPER_EXPORT zLONG OPERATION AddRetCode( zVIEW vSubtask ) { zLONG lIDNumber; GetVariableID( &lIDNumber, "nZRetCode" ); if ( lIDNumber == -1 ) // an entity does not exist ... add it { lIDNumber = AddVariableEntityToPI( vSubtask, "nZRetCode", qTSHORT, 0, 0 ); } return( lIDNumber ); }
bool CNetCDFTraj::ReadHeader(CAmberTopology* p_top) { if( p_top == NULL ){ INVALID_ARGUMENT("p_top == NULL"); } if( NCID < 0 ) { ES_ERROR("file is not opened"); return(false); } HasBox = p_top->BoxInfo.GetType() != AMBER_BOX_NONE; NumOfTopologyAtoms = p_top->AtomList.GetNumberOfAtoms(); bool result = true; result &= GetVariableAttribute(NC_GLOBAL,"title",Title); result &= GetVariableAttribute(NC_GLOBAL,"application",Application); result &= GetVariableAttribute(NC_GLOBAL,"program",Program); result &= GetVariableAttribute(NC_GLOBAL,"programVersion",Version); result &= GetVariableAttribute(NC_GLOBAL,"Conventions",Conventions); result &= GetVariableAttribute(NC_GLOBAL,"ConventionVersion",ConventionVersion); if( Conventions != "AMBER" ) { CSmallString error; error << "illegal conventions '" << Conventions << "', expecting 'AMBER'"; ES_ERROR(error); return(false); } if( ConventionVersion != "1.0" ) { CSmallString error; error << "illegal convention version '" << ConventionVersion << "', expecting '1.0'"; ES_ERROR(error); return(false); } GetDimensionInfo("frame", &TotalSnapshots); GetDimensionInfo("spatial", &Spatial); GetDimensionInfo("atom", &ActualAtoms); if( Spatial != 3 ) { CSmallString error; error << "three dim expected but '" << Spatial << "' provided"; ES_ERROR(error); return(false); } if( ActualAtoms != NumOfTopologyAtoms ) { CSmallString error; error << "number of atoms in the topology '" << ActualAtoms << "' is different than in topology '" << NumOfTopologyAtoms << "'"; ES_ERROR(error); return(false); } // sanity check - spatial variable --------------------- SpatialVID = GetVariableID("spatial"); if( SpatialVID < 0 ) { return(false); } size_t start[3],count[3]; char xyz[3]; int err; start[0] = 0; count[0] = Spatial; xyz[0] = (char) 0; err = nc_get_vara_text(NCID,SpatialVID,start,count,xyz); if( err != NC_NOERR ) { CSmallString error; error << "unable to get spatial names (" << nc_strerror(err) << ")"; ES_ERROR(error); return(false); } if( (xyz[0] != 'x') || (xyz[1] != 'y') || (xyz[2] != 'z') ) { CSmallString error; error << "incorrect spatial labels (" << xyz[0] << "," << xyz[1] << "," << xyz[2] << ")"; ES_ERROR(error); return(false); } // sanity check - time --------------------------------- TimeVID = GetVariableID("time"); if( TimeVID < 0 ) { return(false); } CSmallString unit; if( GetVariableAttribute(TimeVID,"units",unit) == false ) { return(false); } if( unit != "picosecond" ) { CSmallString error; error << "incorrect unit for time (" << unit << "), requested picosecond"; ES_ERROR(error); return(false); } // sanity check - coordinates -------------------------- CoordinateVID = GetVariableID("coordinates"); if( CoordinateVID < 0 ) { return(false); } if( GetVariableAttribute(CoordinateVID,"units",unit) == false ) { return(false); } if( unit != "angstrom" ) { CSmallString error; error << "incorrect unit for coordinates (" << unit << "), requested angstrom"; ES_ERROR(error); return(false); } CurrentSnapshot = 0; if( Coordinates != NULL ) { delete Coordinates; } Coordinates = new float[ActualAtoms*3]; // sanity check - box ---------------------------------- if( HasBox ){ // optional CellLengthVID = GetVariableID("cell_lengths"); CellAngleVID = GetVariableID("cell_angles"); } return(true); }
// // OPERATION: AddCompare // // DESCRIPTION: AddCompare // zOPER_EXPORT zLONG OPERATION AddCompareToView( zVIEW vSubtask, zVIEW vTargetView, zPCHAR pchOperationName, LPQEXPRSTRUCT sLeft, zPCHAR pchLeftLiteral, LPQEXPRSTRUCT sRight, zPCHAR pchRightLiteral, zLONG lOperator ) { zLONG lIDNumber; zLONG lZKeyNumber; zCHAR szViewName[ 33 ]; zLONG lViewID; zCHAR szEntityName[ 33 ]; zLONG lEntityID; zCHAR szAttributeName[ 33 ]; zLONG lAttributeID; GetOperationClass( vSubtask, &lIDNumber, pchOperationName ); lZKeyNumber = GetOperationZKey( vSubtask, qZEIDONOPERATION, pchOperationName ); if ( lZKeyNumber < 0 ) return( -1 ); // this is an error situation AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATIONCALL, lIDNumber, qTSHORT, pchOperationName, lZKeyNumber, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, "(", qOPENOPER, 0 ); SplitQualifier( pchLeftLiteral, szViewName, szEntityName, szAttributeName ); GetVariableID( &lViewID, szViewName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qNUMERIC, qTVIEW, "", lViewID, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 ); // was a variable entity name if ( sLeft->lDataClass == qENTITYISUNKNOWN || sLeft->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN ) { GetVariableID( &lEntityID, szEntityName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT, qTENTITYNAME, szEntityName, lEntityID, 0 ); } else // was a constant { AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT, qTENTITYNAME, szEntityName, 0, 0 ); } AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 ); // was a variable attribute name if ( sLeft->lDataClass == qATTRIBUTEISUNKNOWN || sLeft->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN ) { GetVariableID( &lAttributeID, szAttributeName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT, qTATTRIBUTENAME, szAttributeName, lAttributeID, 0 ); } else // was a constant { AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT, qTATTRIBUTENAME, szAttributeName, 0, 0 ); } AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 ); if ( sRight->lElementClass == qVARIABLE || sRight->lElementClass == qCONSTANT ) { AddExprNodeEntityToView( vSubtask, vTargetView, sRight->lElementClass, sRight->lDataClass, sRight->lDataType, pchRightLiteral, sRight->lOffset, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ")", qCLOSEOPER, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, "", lOperator, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qNUMERIC, qTINTEGER, "0", 0, 0 ); return( 0 ); } SplitQualifier( pchRightLiteral, szViewName, szEntityName, szAttributeName ); GetVariableID( &lViewID, szViewName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qNUMERIC, qTVIEW, "", lViewID, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 ); // was a variable entity name if ( sRight->lDataClass == qENTITYISUNKNOWN || sRight->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN ) { GetVariableID( &lEntityID, szEntityName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT, qTENTITYNAME, szEntityName, lEntityID, 0 ); } else // was a constant { AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT, qTENTITYNAME, szEntityName, 0, 0 ); } AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ",", qCOMMA, 0 ); // was a variable attribute name if ( sRight->lDataClass == qATTRIBUTEISUNKNOWN || sRight->lDataClass == qENTITYANDATTRIBUTEAREUNKNOWN ) { GetVariableID( &lAttributeID, szAttributeName ); AddExprNodeEntityToView( vSubtask, vTargetView, qVARIABLE, qTEXT, qTATTRIBUTENAME, szAttributeName, lAttributeID, 0 ); } else // was a constant { AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qTEXT, qTATTRIBUTENAME, szAttributeName, 0, 0 ); } AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, ")", qCLOSEOPER, 0 ); if ( lOperator > 0 ) { AddExprNodeEntityToView( vSubtask, vTargetView, qOPERATOR, qNUMERIC, qTINTEGER, "", lOperator, 0 ); AddExprNodeEntityToView( vSubtask, vTargetView, qCONSTANT, qNUMERIC, qTINTEGER, "0", 0, 0 ); } return( 0 ); }