This file is indexed.

/usr/share/doc/libcnf-dev/html/node32.html is in libcnf-dev 4.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 98.2 beta6 (August 14th, 1998)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Pointer
Registration and Conversion</TITLE>
<META NAME="description" CONTENT="Pointer
Registration and Conversion">
<META NAME="keywords" CONTENT="sun209">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" HREF="sun209.css">
<LINK REL="next" HREF="node33.html">
<LINK REL="previous" HREF="node31.html">
<LINK REL="up" HREF="node31.html">
<LINK REL="next" HREF="node33.html">
</HEAD>
<BODY >
<BR> <HR>
<A NAME="tex2html537"
 HREF="node33.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_motif.gif"></A> 
<A NAME="tex2html535"
 HREF="node31.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_motif.gif"></A> 
<A NAME="tex2html529"
 HREF="node31.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="previous_motif.gif"></A>   <A HREF="sun209.html#stardoccontents"><IMG
 ALIGN="BOTTOM" BORDER="0" SRC="contents_motif.gif"
 ALT="252"></A>
<BR>
<B> Next:</B> <A NAME="tex2html538"
 HREF="node33.html">Allocating Exportable Dynamic Memory</A>
<BR>
<B>Up:</B> <A NAME="tex2html536"
 HREF="node31.html">Pointers</A>
<BR>
<B> Previous:</B> <A NAME="tex2html530"
 HREF="node31.html">Pointers</A>
<BR> <HR> <P>

<!--End of Navigation Panel-->

<H2><A NAME="SECTION00081000000000000000"></A><A NAME="xref_pointer_registration_and_conversion"></A>
<BR>
Pointer
Registration and Conversion
</H2>

<P>
To overcome these problems, some method is needed of converting
between (say) 64-bit C pointers and the typical 32 bits of a FORTRAN
<TT>INTEGER</TT>. The same method must also work if the two pointer
representations are actually of equal length.  To allow this, CNF
maintains an internal table which contains all the C pointers which
will be exported and used from FORTRAN. The pointers stored in this
table are said to have been ``registered'' for use from both C and
FORTRAN.

<P>
When converting a C pointer into a FORTRAN pointer, it is sufficient
simply to mask out all bits except those that will fit into a FORTRAN
<TT>INTEGER</TT>. This is performed by the function
<A HREF="node170.html#cnfFptr"><TT>cnfFptr</TT></A>.  
When converting in the opposite direction, the
internal table must be searched to locate a pointer which has the same
value stored in the set of masked bits (e.g. the lowest 32 bits) as
the FORTRAN pointer value. The full value of the C pointer can then be
read from the table. This conversion is performed by
<A HREF="node157.html#cnfCptr"><TT>cnfCptr</TT></A>.

<P>
Apart from the requirement that all pointers which will be used from
both C and FORTRAN must be registered by entering them in the internal
table, this scheme also requires that all registered pointers should
be unique in their lowest 32 bits (or whatever length a FORTRAN
<TT>INTEGER</TT> has) in order for the conversion from FORTRAN to C to
select a unique pointer from the table. In practice, these
requirements are most easily fulfilled by providing a set of memory
allocation functions in CNF which mirror the standard C run time
library functions <TT>malloc</TT>, <TT>calloc</TT> and <TT>free</TT>.

<P>
<BR> <HR>
<A NAME="tex2html537"
 HREF="node33.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_motif.gif"></A> 
<A NAME="tex2html535"
 HREF="node31.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_motif.gif"></A> 
<A NAME="tex2html529"
 HREF="node31.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="previous_motif.gif"></A>   <A HREF="sun209.html#stardoccontents"><IMG
 ALIGN="BOTTOM" BORDER="0" SRC="contents_motif.gif"
 ALT="252"></A>
<BR>
<B> Next:</B> <A NAME="tex2html538"
 HREF="node33.html">Allocating Exportable Dynamic Memory</A>
<BR>
<B>Up:</B> <A NAME="tex2html536"
 HREF="node31.html">Pointers</A>
<BR>
<B> Previous:</B> <A NAME="tex2html530"
 HREF="node31.html">Pointers</A>
<BR> <HR> <P>

<!--End of Navigation Panel-->
<ADDRESS>
<I>CNF and F77 Mixed Language Programming -- FORTRAN and C<BR>Starlink User Note 209<BR>P.M. Allan<BR>A.J. Chipperfield<BR>R.F. Warren-Smith<BR>19 January 2000<BR>E-mail:<A HREF="mailto:ussc@star.rl.ac.uk">ussc@star.rl.ac.uk</A></I>
</ADDRESS>
</BODY>
</HTML>