=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/dr.sm1,v retrieving revision 1.43 retrieving revision 1.53 diff -u -p -r1.43 -r1.53 --- OpenXM/src/kan96xx/Kan/dr.sm1 2004/09/14 10:50:49 1.43 +++ OpenXM/src/kan96xx/Kan/dr.sm1 2006/02/04 02:44:39 1.53 @@ -1,4 +1,4 @@ -% $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.42 2004/09/14 02:13:29 takayama Exp $ +% $OpenXM: OpenXM/src/kan96xx/Kan/dr.sm1,v 1.52 2005/11/21 09:12:22 takayama Exp $ %% dr.sm1 (Define Ring) 1994/9/25, 26 %% This file is error clean. @@ -845,7 +845,7 @@ (one may use the command ) ( f (ring) data_conversion /R set) (cf. define_ring, define_qring, system_variable, poly (ring) data_conversion) - (cf. << __ >>) + (cf. << __ >>, getRing) ] ] putUsages @@ -1528,6 +1528,13 @@ (type?) data_conversion RingP eq } def +[(isByteArray) + [(obj isByteArray bool) ] +] putUsages +/isByteArray { + (type?) data_conversion ByteArrayP eq +} def + /toString.tmp { /arg1 set [/obj /fname] pushVariables @@ -1557,6 +1564,8 @@ { obj (string) data_conversion } { } ifelse obj isRational { obj (string) data_conversion } { } ifelse + obj isByteArray + { obj (array) data_conversion toString } { } ifelse obj tag 0 eq { (null) } { } ifelse @@ -1671,9 +1680,10 @@ /RationalFunctionP 16 def /ClassP 17 def /DoubleP 18 def +/ByteArrayP 19 def /@.datatypeConstant.usage [ (IntegerP, LiteralP, StringP, ExecutableArrayP, ArrayP, PolyP, FileP, RingP,) - (UniversalNumberP, RationalFunctionP, ClassP, DoubleP) + (UniversalNumberP, RationalFunctionP, ClassP, DoubleP, ByteArrayP) ( return data type identifiers.) (Example: 7 tag IntegerP eq ---> 1) ] def @@ -1688,6 +1698,7 @@ [(RationalFunctionP) @.datatypeConstant.usage ] putUsages [(ClassP) @.datatypeConstant.usage ] putUsages [(DoubleP) @.datatypeConstant.usage ] putUsages +[(ByteArrayP) @.datatypeConstant.usage ] putUsages [(__) [( string ring __ polynomial) @@ -1720,8 +1731,9 @@ [( string .. universalNumber) (Parse the << string >> as a universalNumber.) (Example: (123431232123123).. /n set) + ({ commands }.. executes the commands. << .. >> is equivalent to exec.) ]] putUsages -/.. { (universalNumber) data_conversion } def +/.. { dup tag 3 eq { exec } { (universalNumber) data_conversion} ifelse } def [(dc) [(Abbreviation of data_conversion.) @@ -3451,11 +3463,12 @@ newline } def [(getRing) [(obj getRing rr) - (ring rr;) + (ring rr; ) (getRing obtains the ring structure from obj.) (If obj is a polynomial, it returns the ring structure associated to) (the polynomial.) (If obj is an array, it recursively looks for the ring structure.) + (cf. ring_def) ]] putUsages /toVectors { /arg1 set @@ -4271,9 +4284,7 @@ $ [ff ff] fromVectors :: $ [(list listToArray a) ]] putUsages -/makeInfix { - [(or_attr) 4 4 -1 roll ] extension -} def +% Body is moved to smacro.sm1 [(makeInfix) [(literal makeInfix) (Change literal to an infix operator.) @@ -4361,6 +4372,160 @@ $ [ff ff] fromVectors :: $ [(setMinus) [(a b setMinus c) ]] putUsages + +% Define some infix operators +/~add~ { add } def /~add~ makeInfix +/~sub~ { sub } def /~sub~ makeInfix +/~mul~ { mul } def /~mul~ makeInfix +/~div~ { div } def /~div~ makeInfix +/~power~ { power } def /~power~ makeInfix +/~put~ { + dup tag 3 eq { exec } { } ifelse put +} def +/~put~ makeInfix + +/toTokensBySpace { + /arg1 set + [(cgiToTokens) arg1 [ ]] extension +} def +[(toTokensBySpace) +[ + ( string toTokensBySpace token_array ) +]] putUsages + +/setAttributeList { + /arg2 set + /arg1 set + [ + [(setAttributeList) arg1 arg2] extension /arg1 set + ] pop + arg1 +} def +/getAttributeList { + /arg1 set + [(getAttributeList) arg1] extension +} def +/setAttribute { + /arg3 set + /arg2 set + /arg1 set + [ + [(setAttribute) arg1 arg2 arg3] extension /arg1 set + ] pop + arg1 +} def +/getAttribute { + /arg2 set + /arg1 set + [(getAttribute) arg1 arg2] extension +} def +[(setAttributeList) +[ + (ob attr setAttributeList new-obj ) + (Example: [(x-1) (y-1)] [(gb) 1] setAttributeList /ff set ) +]] putUsages +[(setAttribute) +[ + (ob key value setAttribute new-obj ) + (Example: [(x-1) (y-1)] (gb) 1 setAttribute /ff set ) +]] putUsages +[(getAttributeList) +[ + (ob getAttributeList attr-obj ) + (Example: [(x-1) (y-1)] [(gb) 1] setAttributeList /ff set ) + ( ff getAttributeList :: ) +]] putUsages +[(getAttribute) +[ + (ob key getAttribute value ) + (Example: [(x-1) (y-1)] (gb) 1 setAttribute /ff set ) + ( ff (gb) getAttribute :: ) +]] putUsages + +% [(gbCheck) 1 (needSyz) 1 (countDown) 100] (attribute format) +% --> [(gbCheck) (needSyz) (countDown) 100] (groebner option format) +% cf. gb +/configureGroebnerOption { + /arg1 set + [/opt /i] pushVariables + [ + /opt arg1 def + opt tag 0 eq { + /arg1 null def + } { + [ + 0 2 opt length 1 sub { + /i set + opt i get + opt i get (countDown) eq { + opt i 1 add get + } { } ifelse + opt i get (stopDegree) eq { + opt i 1 add get + } { } ifelse + } for + ] /arg1 set + } ifelse + ] pop + popVariables + arg1 +} def + +[(getFileType) +[ + (string getFileType type) + $Example: (/www/prog/cohom.sm1) getFileType ==> (sm1)$ +]] putUsages +/getFileType { + /arg1 set + [/ss ] pushVariables + [ /ss arg1 def + [(stringToArgv2) ss (.)] extension /ss set + ss, ss length 1 sub, get /arg1 set + ] pop + popVariables + arg1 +} def + +% Default initial value. +/localizedString.file null def +/localizedString.dic [ ] def +/localizedString.local { } def + +% Clear and load +/localizedString.load { + /localizedString.dic [ ] def + /localizedString.local { } def + localizedString.file tag 0 eq { } + { [(parse) localizedString.file pushfile] extension pop } ifelse +} def + + +[(localizedString) + [ + (string localizedString translatedString) + (It returns localizedString if localizedString.dic [array] and) + (localizedString.local [function] are set.) + ] +] putUsages +/localizedString { + /arg1 set + [/ss /ans /tt] pushVariables + [ + arg1 /ss set + /ans ss def + { + localizedString.dic length 0 eq { exit } { } ifelse + localizedString.dic ss getNode /tt set + tt tag 0 eq { } { tt /ans set exit } ifelse + ss localizedString.local /ans set + exit + } loop + ans /arg1 set + ] pop + popVariables + arg1 +} def ;