((declare (special descr_index data_index))
(declare (special descr_index data_index))
(err '|Bad type code encountered by GetType|))
(assq (GetInteger index array)
(GetInteger (|1+| (times 3 index)) array)))
(GetInteger (plus 2 (times 3 index)) array)))
(GetType (times 3 index) array)))
(lambda (locpt ltyp rempt rtyp id mtyp msg ls descr data)
(IPCSetLocalPort locpt msg)
(IPCSetRemotePort rempt msg)
(IPCSetType 'LINEARSTRUCTURE msg)
(IPCSetLSDataPtr data ls)
(IPCSetLSSize (times (getlength descr) (getdelta descr)) ls)
(IPCSetLSDataSize (times (getlength data) (getdelta data)) ls)))
(lambda (index num_elts array)
(PutInteger (|1+| (times 3 index)) num_elts array)))
(lambda (index offset array)
(PutInteger (plus 2 (times 3 index)) offset array)))
(lambda (index type array)
(PutType (times 3 index) type array)))
(lambda (index dtype dnumelts doffset array)
(IPCPutDType index dtype array)
(IPCPutDNumElts index dnumelts array)
(IPCPutDOffset index doffset array)
((lambda (x locpt ltyp rempt rtyp id mtyp msg ls descr data port_atom)
(IPCInitLSMsg locpt ltyp rempt rtyp id mtyp msg ls descr data)
(cond (port_atom (IPCSExprEncode x descr data 0 0 port_atom))
((IPCSExprEncode x descr data 0 0))))
(cond ((greaterp nargs 11) (arg 12))))))
(lambda (descr data descr_index data_index)
(IPCSExprDecode1 descr data)))
(cond ((eq data_type 'REAL)
(prog1 (GetReal data_index data)
(setq data_index (plus 2 data_index))
(setq descr_index (|1+| descr_index))))
(prog1 (GetInteger data_index data)
(setq data_index (add1 data_index))
(setq descr_index (|1+| descr_index))))
(setq descr_index (|1+| descr_index))
(prog1 (GetAtom1 (times 4 data_index) data)
(Divide (plus (IPCGetDNumElts descr_index
(setq descr_index (|1+| descr_index))))))
(prog (result temp num_elts)
(setq num_elts (IPCGetDNumElts descr_index descr))
(setq descr_index (|1+| descr_index))
(cons (IPCSExprDecode1 descr data) nil))
(setq num_elts (|1-| num_elts))
loop (cond ((eq num_elts 1)
(rplacd temp (IPCSExprDecode1 descr data))
(cons (IPCSExprDecode1 descr
(setq num_elts (|1-| num_elts))
(IPCGetDType descr_index descr))))
((lambda (x descr data descr_index data_index port_atom)
(cond ((or (atom x) (and (car x) (equal (car x) port_atom)))
(IPCPutLSDescriptor descr_index
(PutReal data_index x data)
(cons (|1+| descr_index) (plus 2 data_index)))
(IPCPutLSDescriptor descr_index
(PutInteger data_index (caddr x) data)
(cons (|1+| descr_index) (|1+| data_index)))
(IPCPutLSDescriptor descr_index
(PutInteger data_index x data)
(cons (|1+| descr_index) (|1+| data_index)))
(IPCPutLSDescriptor descr_index
(cons (|1+| descr_index) data_index))
(IPCPutLSDescriptor descr_index
(Divide (plus atom_length
(PutAtom1 (times 4 data_index) x data)))
(concat '|Unknown type to IPCSExprEncode -- |
(IPCPutLSDescriptor descr_index
(do ((num_elts 0 (|1+| num_elts))
((atom list) (|1+| num_elts)))
(cons (|1+| descr_index) data_index))
(concat '|Unknown type to IPCSExprEncode -- |
(cond ((greaterp args 5) (arg 6))))))
((lambda (LS) (IPCSExprDecode (IPCGetLSPtr LS) (IPCGetLSDataPtr LS) 0 0))
(IPCGetDataPtr message))))
(lambda (index type array)
(cond ((not type_integer) (err '|Bad type atom to PutType|))
((PutInteger index type_integer array))))