diff options
author | dos-reis <gdr@axiomatics.org> | 2011-09-15 18:48:07 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-09-15 18:48:07 +0000 |
commit | 12c856f9901ef3d6d82fb99855ecdf3e0b91484b (patch) | |
tree | 96fc5a4bf51d9777f8d46ac1e4023c0d8e545f8a /src/algebra/invnode.as.pamphlet | |
parent | 9025c74466dcd1c38dde5e4c63934ff0b2e4f18d (diff) | |
download | open-axiom-12c856f9901ef3d6d82fb99855ecdf3e0b91484b.tar.gz |
* algebra/axtimer.as.pamphlet: Remove.
* algebra/ffrac.as.pamphlet: Likewise.
* algebra/herm.as.pamphlet: Likewise.
* algebra/interval.as.pamphlet: Likewise.
* algebra/invnode.as.pamphlet: Likewise.
* algebra/invrender.as.pamphlet: Likewise.
* algebra/invtypes.as.pamphlet: Likewise.
* algebra/invutils.as.pamphlet: Likewise.
* algebra/iviews.as.pamphlet: Likewise.
* algebra/ndftip.as.pamphlet: Likewise.
* algebra/nepip.as.pamphlet: Likewise.
* algebra/noptip.as.pamphlet: Likewise.
* algebra/nqip.as.pamphlet: Likewise.
* algebra/nrc.as.pamphlet: Likewise.
* algebra/nsfip.as.pamphlet: Likewise.
Diffstat (limited to 'src/algebra/invnode.as.pamphlet')
-rw-r--r-- | src/algebra/invnode.as.pamphlet | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/src/algebra/invnode.as.pamphlet b/src/algebra/invnode.as.pamphlet deleted file mode 100644 index 3d0958c2..00000000 --- a/src/algebra/invnode.as.pamphlet +++ /dev/null @@ -1,340 +0,0 @@ -\documentclass{article} -\usepackage{open-axiom} -\begin{document} -\title{\$SPAD/src/algebra invnode.as} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{IVNodeCategory} -<<IVNodeCategory>>= -#include "axiom" - -POINT ==> Point DoubleFloat; - -local DF2S; -DF2S(u:DoubleFloat):String == { - STRINGIMAGE ==> VMLISP_:_:STRINGIMAGE; - import { STRINGIMAGE : DoubleFloat -> String} from Foreign Lisp; - STRINGIMAGE(u); -} - -+++ Category of all open inventor node types -+++ Uses IVObject as a 'generic' value. -define IVNodeCategory: Category == SetCategory with { - quickWrite: (TextFile, %) -> (); - ++ Quick version. Not guaranteed to terminate - children: % -> List IVNodeObject; - addChild!: (%, IVNodeObject) -> (); - fields: % -> List IVField; - className: % -> String; - coerce: % -> IVNodeObject; - default { - import from Symbol; - quickWrite(out: TextFile, node: %): () == { - write!(out, className(node)); - write!(out, " {"); - writeLine!(out); - import from List IVField; - import from IVValue; - for field in fields node repeat { - write!(out, string name field); - write!(out, " "); - invWrite(out, value field); - } - writeLine!(out, "}"); - } - coerce(x: %): IVNodeObject == - make(% pretend IVNodeCategory, x); - - coerce(x: %): OutputForm == { - import from String; - coerce className x; - } - } -} - -@ -\section{IVLeafNodeCategory} -<<IVLeafNodeCategory>>= -+++ Category for leaves --- just adds a few defaults to make life -+++ easy. -define IVLeafNodeCategory: Category == IVNodeCategory with { - default { - children(v: %): List IVNodeObject == []; - addChild!(v: %, new: IVNodeObject): () == - error "can't add child to a leaf"; - } -} - -@ -\section{IVNodeObject} -<<IVNodeObject>>= --- virtual functions for fun and profit... -IVNodeObject: IVNodeCategory with { - make: (T: IVNodeCategory, T) -> %; - coerce: (T: IVNodeCategory, %) -> T; - uniqueID: % -> Integer; -} == add { - Rep ==> Record(NT: IVNodeCategory, val: NT, idx: Integer); - import from Rep; - default z: Integer; - - local iCount: Integer := 0; - local explode: (o: %) -> (NodeType: IVNodeCategory, NodeType); - - uniqueID(o: %): Integer == rep(o).idx; - - explode(o: %): (NodeType: IVNodeCategory, v: NodeType) == { - (NT, val, id) == explode rep o; - (NT, val); - } - - make(T: IVNodeCategory, val: T): % == { - free iCount := iCount + 1; - per [T, val, iCount]; - } - coerce(T: IVNodeCategory, val: %): T == { - (type, v, id) == explode rep val; - v pretend T; - } - - -- The '0' functions are needed to turn non-constants - -- (eg. fn return values) -- into constants. - children(v: %): List IVNodeObject == { - children0(NodeType: IVNodeCategory, val: NodeType): - List IVNodeObject == - children val; - children0 explode v; - } - - fields(v: %): List IVField == { - fields0(NodeType: IVNodeCategory, val: NodeType): List IVField == - fields val; - fields0 explode v; - } - - className(v: %): String == { - name0(NodeType: IVNodeCategory, val: NodeType): String == - className(val)$NodeType; - name0 explode v; - } - - addChild!(v: %, child: %): () == { - addChild0!(NodeType: IVNodeCategory, val: NodeType): () == - addChild!(val, child); - addChild0! explode v; - } - - -- BasicType stuff - sample: % == % pretend %; - (=)(a: %, b: %): Boolean == error "no equality on ivobject"; -} - -@ -\section{IVNodeConnection} -<<IVNodeConnection>>= -IVNodeConnection: with { - bracket: (IVNodeObject, Symbol) -> %; - field: % -> Symbol; - node: % -> IVNodeObject; -} == add { - Rep ==> Record(o: IVNodeObject, f: Symbol); - import from Rep; - - [o: IVNodeObject, f: Symbol]: % == per [o,f]; - field(c: %): Symbol == rep(c).f; - node(c: %): IVNodeObject == rep(c).o; -} - -@ -\section{IVValue} -<<IVValue>>= -IVValue: BasicType with { - DECL(T, fld, flg) ==> { - coerce: % -> T; - flg: % -> Boolean; - fld: T -> %; - } - DECL(DoubleFloat, float, float?); - DECL(IVNodeObject, node, node?); - DECL(Boolean, bool, bool?); - DECL(SingleInteger, int, int?); - DECL(String, string, string?); - DECL(Symbol, symbol, symbol?); - DECL(POINT, point, point?); - DECL(List DoubleFloat, floatlist, floatlist?); - DECL(List SingleInteger, intlist, intlist?); - DECL(List POINT, pointlist, pointlist?); - DECL(IVNodeConnection, connect, connect?); - - invWrite: (TextFile, %) -> (); -} == add { - Rep ==> Union( float: DoubleFloat, - node: IVNodeObject, - bool: Boolean, - int: SingleInteger, - string: String, - symbol: Symbol, - point: POINT, - intlist: List SingleInteger, - floatlist: List DoubleFloat, - pointlist: List POINT, - connect: IVNodeConnection - ); - import from Rep; - - Accessor(T, fld, flg) ==> { - coerce(x: %): T == rep(x).fld; - flg(x: %): Boolean == rep(x) case fld; - fld(x: T): % == per [x, fld]; - } - Accessor(DoubleFloat, float, float?); - Accessor(IVNodeObject, node, node?); - Accessor(Boolean, bool, bool?); - Accessor(SingleInteger, int, int?); - Accessor(String, string, string?); - Accessor(Symbol, symbol, symbol?); - Accessor(POINT, point, point?); - Accessor(List DoubleFloat, floatlist, floatlist?); - Accessor(List SingleInteger, intlist, intlist?); - Accessor(List POINT, pointlist, pointlist?); - Accessor(IVNodeConnection, connect, connect?); - - local ppoint(out: TextFile, val: POINT, dim: Integer): () == { - for i in 1..dim repeat { - write!(out, DF2S(val.(i::Integer))); - write!(out, " "); - } - } - invWrite(out: TextFile, val: %): () == { - import from Float, Integer; - float? val => { - writeLine!(out, - convert(convert(val::DoubleFloat)$Float)); - } - node? val or connect? val => { - error "Sorry, can't write a node here"; - --writeLine!(out, val::IVNodeObject); - } - bool? val => { - writeLine!(out, - if val::Boolean then "true" else "false"); - } - int? val => { - writeLine!(out, - convert(convert(val::SingleInteger)@Integer)); - } - string? val => { - writeLine!(out, val::String); - } - symbol? val => { - writeLine!(out, string(val::Symbol)); - } - point? val => { - ppoint(out, rep(val).point, 3); - writeLine!(out, ""); - } - floatlist? val => { - write!(out, "[ "); - for fl in val::List DoubleFloat repeat { - write!(out,convert(convert(fl)$Float)); - write!(out, ", "); - } - writeLine!(out, "]"); - } - intlist? val => { - write!(out, "[ "); - for i in val::List SingleInteger repeat { - write!(out,convert(convert(i)@Integer)); - write!(out, ", "); - } - writeLine!(out, "]"); - } - pointlist? val => { - write!(out, "[ "); - for p in val::List POINT repeat { - ppoint(out, p, 3); - writeLine!(out, ","); - } - writeLine!(out, "]"); - } - never - } - -- - sample: % == % pretend %; - (=)(a: %, b: %): Boolean == error "no equality for values"; -} - -@ -\section{IVField} -<<IVField>>= -IVField: BasicType with { - new: (Symbol,IVValue) -> %; - name: % -> Symbol; - value: % -> IVValue; -} == add { - Rep ==> Record(name: Symbol, v: IVValue); - import from Rep; - - new(name: Symbol, val: IVValue): % == per [name, val]; - name(f: %): Symbol == rep(f).name; - value(f: %): IVValue == rep(f).v; - - -- - sample: % == % pretend %; - (=)(a: %, b: %): Boolean == error "no equality for values"; -} - -@ -\section{License} -<<license>>= ---Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ---All rights reserved. --- ---Redistribution and use in source and binary forms, with or without ---modification, are permitted provided that the following conditions are ---met: --- --- - Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in --- the documentation and/or other materials provided with the --- distribution. --- --- - Neither the name of The Numerical ALgorithms Group Ltd. nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. --- ---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS ---IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED ---TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ---PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ---OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ---EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ---PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ---PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ---LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ---NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> - -<<IVNodeCategory>> -<<IVLeafNodeCategory>> -<<IVNodeObject>> -<<IVNodeConnection>> -<<IVValue>> -<<IVField>> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} |