aboutsummaryrefslogtreecommitdiff
path: root/pkg/utilities/nttools/threed/titable/tich.gx
blob: bcc83fef2b26c6ff2000db097d33403398cde716 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
include	<tbset.h>

#  TICH  --  Copy data from input header into scalar cell in output.
#
#
#
#
#  Revision history:
#  ----------------
#  20-Jan-97  -  Task created (I.Busko)


$if (datatype == c)
procedure ticht  (itp, ihc, otp, ocp, orow, maxch)
$else
procedure tich$t (itp, ihc, otp, ocp, orow)
$endif

pointer	itp		# i: input table descriptor
int	ihc		# i: header keyword index
pointer	otp		# i: output table descriptor
pointer	ocp		# i: output column descriptor
int	orow		# i: row where to insert
$if (datatype == c)
int	maxch
$endif
#--
$if (datatype == c)
pointer	buf
$else
PIXEL	buf
$endif
pointer	sp, kwname, kwval
int	datatype, parnum

string	corrupt  "Corrupted header in input table."

int	nscan()

begin
	call smark (sp)
	$if (datatype == c)
	call salloc (buf, maxch + 1, TY_CHAR)
	$endif
	call salloc (kwname, SZ_LINE, TY_CHAR)
	call salloc (kwval,  SZ_PARREC, TY_CHAR)

	# Build keyword name and look for it.
	call sprintf (Memc[kwname], SZ_LINE, "TCV_%03d")
	    call pargi (ihc)
	call tbhfkr (itp, Memc[kwname], datatype, Memc[kwval], parnum)

	# Parse and read value. We assume that the keyword existence 
	# was confirmed by previously finding the paired TCD_ keyword.
	if (parnum > 0) {
	    call sscan (Memc[kwval])
	    $if (datatype == c)
	    call gargwrd (buf, maxch) 
	    $else
	    call garg$t (buf)
	    $endif
	    if (nscan() < 1) call error (1, corrupt)
	} else
	    call error (1, corrupt)

	# Write value into scalar cell.
	$if (datatype == c)
	call tbcptt  (otp, ocp, buf, maxch, orow, orow)
	$else
	call tbcpt$t (otp, ocp, buf, orow, orow)
	$endif

	call sfree (sp)
end