}
basic * ex::last_created_or_assigned_bp=0;
-bool ex::last_created_or_assigned_bp_modified=false;
#endif // def OBSCURE_CINT_HACK
void process_tempfile(string const & command)
{
#ifdef OBSCURE_CINT_HACK
- static G__value ref_ex=exec_tempfile("ex ginac_cint_internal; ginac_cint_internal;");
- ex dummy_ex;
- ex::last_created_or_assigned_bp_modified=false;
+ static G__value ref_symbol=exec_tempfile("symbol ginac_cint_internal_symbol; ginac_cint_internal_symbol;");
+ static G__value ref_ex=exec_tempfile("ex ginac_cint_internal_ex; ginac_cint_internal_ex;");
+ static G__value ref_function=exec_tempfile("sin(ginac_cint_internal_symbol);");
+ static G__value ref_power=exec_tempfile("power(ginac_cint_internal_symbol,ginac_cint_internal_symbol);");
#endif // def OBSCURE_CINT_HACK
G__value retval=exec_tempfile(command);
#ifdef OBSCURE_CINT_HACK
+
+ #define TYPES_EQUAL(A,B) (((A).type==(B).type)&&((A).tagnum==(B).tagnum))
+
static unsigned out_count=0;
- if (!ex::last_created_or_assigned_bp_modified) {
- if ((ref_ex.type==retval.type)&&(ref_ex.tagnum==retval.tagnum)) {
- ex * ep=(ex *)(retval.obj.i);
- dummy_ex=*ep;
- }
- }
- if (ex::last_created_or_assigned_bp_modified) {
+ if (TYPES_EQUAL(retval,ref_ex)) {
if (ex::last_created_or_assigned_bp_can_be_converted_to_ex()) {
- string varname="Out"+ToString(++out_count);
+ string varname="out"+ToString(++out_count);
exec_tempfile("ex "+varname+"(*ex::last_created_or_assigned_bp);\n"
- +"LLLAST=LLAST;\n"
- +"LLAST=LAST;\n"
- +"LAST="+varname+";\n"
- +"cout << \""+varname+" = \" << "+varname+" << endl << endl;");
+ +"LLLAST=LLAST;\n"
+ +"LLAST=LAST;\n"
+ +"LAST="+varname+";\n"
+ +"cout << \""+varname+" \" << "+varname+" << endl << endl;");
} else {
- cout << "warning: last_created_or_assigned_bp modified but 0 or not evaluated or not dynallocated" << endl;
+ cout << "warning: last_created_or_assigned_bp modified 0 or not evaluated or not dynallocated" << endl;
}
}
#endif // def OBSCURE_CINT_HACK
void greeting(void)
{
- cout << "Welcome to GiNaCcint V0.2" << endl << endl;
+ cout << "Welcome to GiNaC-cint V" << VERSION << endl;
+ cout << "This software is provided \"as is\" without any warranty. Copyright of Cint is" << endl
+ << "owned by Agilent Technologies Japan and Masaharu Goto. Registration is" << endl
+ << " __, _______ requested, at this moment, for commercial use. Send e-mail to" << endl
+ << " (__) * | <MXJ02154@niftyserve.or.jp>. The registration is free." << endl
+ << " ._) i N a C | The GiNaC framework is Copyright by Johannes Gutenberg Univ." << endl
+ << "<-------------' Germany and licensed under the terms and conditions of the GPL." << endl << endl;
cout << "To quit, type 'quit;', 'exit;', 'bye;', '.q', '.quit', '.exit' or '.bye'" << endl;
}
bool quit=false;
bool next_command_is_function=false;
while (!quit) {
- strcpy(prompt,"GiNaCcint> ");
+ strcpy(prompt,"GiNaC> ");
int open_braces=0;
bool end_of_command=false;
string command;
end_of_command=true;
}
}
- strcpy(prompt," (more) > ");
+ strcpy(prompt," > ");
}
string stripped_command=strip_whitespace(command);
if ((stripped_command=="quit;")||