Added -cell to dump, copy, delete.

Selects anything with the specified user numbers.

Fixed bug in read_class where end of file caused the
last line of input to be repeated in the output.

removed warning print from copy_entities, which is nicer 
for copy -cell and some reactants are not present.

rewrote read_copy to include -cell, but also changed logic
for selection of appropriate keywords. Now has list that are acceptable, whereas before it was a list of unacceptable.

git-svn-id: svn://136.177.114.72/svn_GW/phreeqcpp/trunk@4823 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
David L Parkhurst 2010-09-17 21:39:00 +00:00
parent f41c9446bf
commit d34b328b06
2 changed files with 33 additions and 22 deletions

View File

@ -137,7 +137,7 @@ read_solution_raw(void)
}
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -231,7 +231,7 @@ read_exchange_raw(void)
free_check_null(exchange_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -325,7 +325,7 @@ read_surface_raw(void)
free_check_null(surface_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -422,7 +422,7 @@ read_equilibrium_phases_raw(void)
free_check_null(pp_assemblage_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -516,7 +516,7 @@ read_kinetics_raw(void)
free_check_null(kinetics_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -614,7 +614,7 @@ read_solid_solutions_raw(void)
free_check_null(s_s_assemblage_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -708,7 +708,7 @@ read_gas_phase_raw(void)
free_check_null(gas_phase_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -803,7 +803,7 @@ read_reaction_raw(void)
free_check_null(irrev_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -898,7 +898,7 @@ read_mix_raw(void)
free_check_null(mix_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
@ -996,7 +996,7 @@ read_temperature_raw(void)
free_check_null(temperature_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1048,7 +1048,7 @@ read_dump(void)
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1100,7 +1100,7 @@ read_delete(void)
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1152,7 +1152,7 @@ read_run_cells(void)
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1239,7 +1239,7 @@ read_solution_modify(void)
solution[n] = soln_ptr;
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1326,7 +1326,7 @@ read_equilibrium_phases_modify(void)
free_check_null(entity_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1415,7 +1415,7 @@ read_exchange_modify(void)
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1502,7 +1502,7 @@ read_surface_modify(void)
free_check_null(entity_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1589,7 +1589,7 @@ read_solid_solutions_modify(void)
free_check_null(entity_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1674,7 +1674,7 @@ read_gas_phase_modify(void)
free_check_null(entity_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */
@ -1761,7 +1761,7 @@ read_kinetics_modify(void)
free_check_null(entity_ptr);
// Need to output the next keyword
output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
if (return_value == OPTION_KEYWORD) output_msg(OUTPUT_CHECKLINE, "\t%s\n", line);
return (return_value);
}
/* ---------------------------------------------------------------------- */

View File

@ -139,7 +139,7 @@ bool StorageBinList::Read(CParser & parser)
static std::vector < std::string > vopts;
if (vopts.empty())
{
vopts.reserve(15);
vopts.reserve(20);
vopts.push_back("solution");
vopts.push_back("pp_assemblage");
vopts.push_back("equilibrium_phases");
@ -154,6 +154,8 @@ bool StorageBinList::Read(CParser & parser)
vopts.push_back("reaction");
vopts.push_back("temperature");
vopts.push_back("all");
vopts.push_back("cell");
vopts.push_back("cells"); // 15
}
std::istream::pos_type next_char;
@ -178,6 +180,7 @@ bool StorageBinList::Read(CParser & parser)
// Select StorageBinListItem
StorageBinListItem *item = NULL;
StorageBinListItem cell_list;
switch (opt)
{
case 0:
@ -213,12 +216,16 @@ bool StorageBinList::Read(CParser & parser)
case 12:
item = &(this->Get_temperature());
break;
case 14:
case 15:
item = &cell_list;
break;
default:
break;
}
// Read dump entity list of numbers or number ranges for line, store in item
if (opt >= 0 && opt <= 12)
if (opt >= 0 && opt <= 12 || opt >= 14 && opt <= 15)
{
for (;;)
{
@ -266,6 +273,10 @@ bool StorageBinList::Read(CParser & parser)
case 13: //all
this->SetAll(true);
break;
case 14:
case 15:
this->TransferAll(cell_list);
break;
default:
case CParser::OPT_DEFAULT:
case CParser::OPT_ERROR: