Changeset 7604db in git for Singular/subexpr.cc
- Timestamp:
- Apr 19, 1999, 1:03:57 PM (24 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- 228c7e51151a4fc3bdf6908acbb09367f243d275
- Parents:
- a30caa3e79912e5d42b9d62c6d2e1aa1239e5486
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/subexpr.cc
ra30caa3 r7604db 657 657 if (!errorreported) 658 658 { 659 /* create a string, which may be freed by FreeL660 * leave the switch with return661 * or with break, which copies the string s*/662 659 char *s; 663 660 const char *n; … … 667 664 { 668 665 case INT_CMD: 669 s=(char *)AllocL(MAX_INT_LEN+2); 670 sprintf(s,"%d",(int)d); 671 break; 666 if (typed) 667 { 668 s=(char *)AllocL(MAX_INT_LEN+7); 669 sprintf(s,"int(%d)",(int)d); 670 } 671 else 672 { 673 s=(char *)AllocL(MAX_INT_LEN+2); 674 sprintf(s,"%d",(int)d); 675 } 676 return s; 677 672 678 case STRING_CMD: 673 if (d != NULL) s = mstrdup((char*)d); 674 else s = mstrdup(""); 675 break; 679 if (d == NULL) 680 { 681 if (typed) return mstrdup("\"\""); 682 return mstrdup(""); 683 } 684 if (typed) 685 { 686 s = (char*) AllocL(strlen((char*) d) + 3); 687 sprintf(s,"\"%s\"", (char*) d); 688 return s; 689 } 690 else 691 { 692 return mstrdup((char*)d); 693 } 694 676 695 case POLY_CMD: 677 696 case VECTOR_CMD: 678 s = mstrdup(pString((poly)d)); 679 break; 697 if (typed) 698 { 699 char* ps = pString((poly) d); 700 s = (char*) AllocL(strlen(ps) + 10); 701 sprintf(s,"%s(%s)", (Typ() == POLY_CMD ? "poly" : "vector"), ps); 702 return s; 703 } 704 else 705 return mstrdup(pString((poly)d)); 706 680 707 case NUMBER_CMD: 681 StringSetS( "");708 StringSetS((typed ? "number(" : "")); 682 709 if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD)) 683 710 { … … 700 727 nDelete(&n); 701 728 } 702 s = StringAppendS( "");703 s =mstrdup(s);704 break;729 s = StringAppendS((typed ? ")" : "")); 730 return mstrdup(s); 731 705 732 case MATRIX_CMD: 706 s= mstrdup(iiStringMatrix((matrix)d,dim)); 707 break; 733 s= iiStringMatrix((matrix)d,dim); 734 if (typed) 735 { 736 char* ns = (char*) AllocL(strlen(s) + 40); 737 sprintf(ns, "matrix(ideal(%s),%d,%d)", s, 738 ((ideal) d)->nrows, ((ideal) d)->ncols); 739 mmTestL(ns); 740 return ns; 741 } 742 else 743 { 744 return mstrdup(s); 745 } 746 708 747 case MODUL_CMD: 709 748 case IDEAL_CMD: 710 749 case MAP_CMD: 711 s= mstrdup(iiStringMatrix((matrix)d,dim)); 712 break; 750 s= iiStringMatrix((matrix)d,dim); 751 if (typed) 752 { 753 char* ns = (char*) AllocL(strlen(s) + 10); 754 sprintf(ns, "%s(%s)", (Typ()==MODUL_CMD ? "module" : "ideal"), s); 755 mmTestL(ns); 756 return ns; 757 } 758 return mstrdup(s); 759 713 760 case INTVEC_CMD: 714 761 case INTMAT_CMD: … … 716 763 intvec *v=(intvec *)d; 717 764 s = v->String(dim); 718 break; 765 if (typed) 766 { 767 char* ns; 768 if (Typ() == INTMAT_CMD) 769 { 770 ns = (char*) AllocL(strlen(s) + 40); 771 sprintf(ns, "intmat(intvec(%s),%d,%d)", s, v->rows(), v->cols()); 772 } 773 else 774 { 775 ns = (char*) AllocL(strlen(s) + 10); 776 sprintf(ns, "intvec(%s)", s); 777 } 778 mmTestL(ns); 779 FreeL(s); 780 return ns; 781 } 782 else 783 return s; 719 784 } 785 720 786 case RING_CMD: 721 {722 s = rString((ring)d);723 break;724 }725 787 case QRING_CMD: 726 { 727 char* r = rString((ring)d); 728 char* i = iiStringMatrix((matrix) ((ring) d)->qideal, 1); 729 s = (char*) AllocL(strlen(r) + strlen(i) + 4); 730 sprintf(s, "%s,(%s)", r, i); 731 FreeL(r); 732 break; 733 } 788 s = rString((ring)d); 789 790 if (typed) 791 { 792 char* ns; 793 if (Typ() == QRING_CMD) 794 { 795 char* id = iiStringMatrix((matrix) ((ring) d)->qideal, dim); 796 ns = (char*) AllocL(strlen(s) + strlen(id) + 20); 797 sprintf(ns, "\"%s\";%sideal(%s)", s,(dim == 2 ? "\n" : " "), id); 798 } 799 else 800 { 801 ns = (char*) AllocL(strlen(s) + 4); 802 sprintf(ns, "\"%s\"", s); 803 } 804 FreeL(s); 805 mmTestL(ns); 806 return ns; 807 } 808 return s; 809 734 810 case RESOLUTION_CMD: 735 811 { … … 737 813 s = lString(l, typed, dim); 738 814 l->Clean(); 739 break;815 return s; 740 816 } 817 741 818 case PROC_CMD: 742 819 { 743 820 procinfo* pi = (procinfo*) d; 744 821 if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL)) 745 s = mstrdup(pi->data.s.body);822 s = (pi->data.s.body); 746 823 else 747 s = mstrdup(""); 748 break; 824 s = ""; 825 if (typed) 826 { 827 char* ns = (char*) AllocL(strlen(s) + 4); 828 sprintf(ns, "\"%s\"", s); 829 mmTestL(ns); 830 return ns; 831 } 832 return mstrdup(s); 749 833 } 750 834 751 835 case LINK_CMD: 752 {753 836 s = slString((si_link) d); 754 break; 755 } 837 if (typed) 838 { 839 char* ns = (char*) AllocL(strlen(s) + 10); 840 sprintf(ns, "link(\"%s\")", s); 841 FreeL(s); 842 mmTestL(ns); 843 return ns; 844 } 845 return s; 846 756 847 757 848 case LIST_CMD: 758 { 759 s = lString((lists) d, typed, dim); 760 } 761 default: 762 #ifdef TEST 763 ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ()); 764 #endif 765 return mstrdup(""); 849 return lString((lists) d, typed, dim); 766 850 } /* end switch: (Typ()) */ 767 768 return s;769 851 } 770 852 return mstrdup(""); 771 853 } 772 854 855 773 856 int sleftv::Typ() 774 857 {
Note: See TracChangeset
for help on using the changeset viewer.