X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=cint%2Fginaccint.cpp;h=724bffb38476141e7f4a563b4eae28d3b46d4f25;hp=27c643f715a5558e12ffe524fac1d1ae3579425e;hb=cb8bbf6189842aacf91bc9cc90c396e346287018;hpb=6a9911249d7121c57ba279c77a2e5c4b24212354 diff --git a/cint/ginaccint.cpp b/cint/ginaccint.cpp index 27c643f7..724bffb3 100644 --- a/cint/ginaccint.cpp +++ b/cint/ginaccint.cpp @@ -23,7 +23,6 @@ string ToString(T const & t) } basic * ex::last_created_or_assigned_bp=0; -bool ex::last_created_or_assigned_bp_modified=false; #endif // def OBSCURE_CINT_HACK @@ -108,31 +107,29 @@ char * process_permanentfile(string const & command) 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 @@ -140,7 +137,13 @@ void process_tempfile(string const & command) 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 + << " (__) * | . 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; } @@ -162,7 +165,7 @@ int main(void) 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; @@ -199,7 +202,7 @@ int main(void) end_of_command=true; } } - strcpy(prompt," (more) > "); + strcpy(prompt," > "); } string stripped_command=strip_whitespace(command); if ((stripped_command=="quit;")||