This file is indexed.

/usr/share/doc/fcm/user_guide/api.html is in fcm 2016.12.0-1.

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<!DOCTYPE html>
<html>
<head>
  <title>FCM: User Guide: A Brief Introduction to the FCM Perl API</title>
  <meta name="author" content="FCM team" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="icon" href="../etc/fcm-icon.png" type="image/png" />
  <link rel="shortcut icon" href="../etc/fcm-icon.png" type="image/png" />
  <link href="../etc/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
  <link href="../etc/fcm.css" rel="stylesheet" media="screen" />
</head>
<body>
  <div class="navbar navbar-inverse">
    <div class="container-fluid">
      <div class="navbar-header">
        <a class="navbar-brand" href=".."><span class="fcm-version">FCM</span></a>
      </div>
      <div class="collapse navbar-collapse">
        <ul class="nav navbar-nav">
          <li><a href="../installation/">Installation</a></li>

          <li><a class="active" href="#">User Guide</a></li>
        </ul>
      </div>
    </div>
  </div>

  <div class="page-header">
    <div class="fcm-page-content pull-right well well-sm"></div>
    <h1>FCM: User Guide: A Brief Introduction to the FCM Perl API</h1>
  </div>

  <div class="container">
  <div class="row">
  <div class="col-md-12">

  <p>The majority of FCM functionalities are provided by a set of Perl modules.
  Old modules developed prior to <a href="../release_notes/2-0.html">release
  2-0</a> reside in the <code>FCM1::*</code> name-space. Modules developed
  thereafter reside in the <code>FCM::*</code> name-space. These are
  sub-divided into the following name-spaces:</p>

  <dl>
    <dt><code>FCM::Class</code></dt>

    <dd>
      <p>Provides an internal object class framework.</p>

      <p>The majority of the classes in the <code>FCM::*</code> name-space are
      sub-classes of either <code>FCM::Class::CODE</code> or
      <code>FCM::Class::HASH</code>. The former creates classes that are
      blessed <code>CODE</code> references, and is intended for configurable
      functional (i.e. mostly <em>stateless</em>) objects. The latter creates
      classes that are blessed <code>HASH</code> references, and is intended
      for data objects.</p>

      <p>Note: In theory, we could use the standard module <code><a href=
      "http://search.cpan.org/~rjbs/perl-5.12.3/lib/Class/Struct.pm">Class::Struct</a></code>
      or the modern <a href="http://www.iinteractive.com/moose/">MOOSE</a>
      framework. The problem is that the former is not powerful enough to give
      us what we need, and the latter is not a standard module and is too heavy
      weight for our intends and purposes. Instead, the developer decides that
      it is easier to go for a light weight and in house solution.</p>
    </dd>

    <dt><code>FCM::CLI</code></dt>

    <dd>
      <p>Provides the logic and configuration of the command line interface
      (CLI).</p>

      <p>It is made up of the following components:</p>

      <dl>
        <dt><code>FCM::CLI</code></dt>

        <dd>Logic to provide help and invoke functions of
        <code>FCM::System</code>.</dd>

        <dt><code>FCM::CLI::Exception</code></dt>

        <dd>CLI exception.</dd>

        <dt><code>FCM::CLI::Parser</code></dt>

        <dd>CLI option parser and configuration.</dd>

        <dt><samp>fcm-*.pod</samp></dt>

        <dd>Help files for the CLI commands.</dd>
      </dl>
    </dd>

    <dt><code>FCM::Context::*</code></dt>

    <dd>
      <p>Provides the data structures for storing the run time contexts.</p>

      <p>The objects of these classes do very little, but they provide the data
      structures that define the <em>states</em> of the program at run
      time.</p>
    </dd>

    <dt><code>FCM::Exception</code></dt>

    <dd>
      <p>Provides the base class for exceptions.</p>
    </dd>

    <dt><code>FCM::System</code></dt>

    <dd>
      <p>Provides a façade to the functionalities of the FCM system.</p>

      <p>The actual implementation is delegated to the following:</p>

      <dl>
        <dt><code>FCM::System::CM</code></dt>

        <dd>The code management system. Currently a thin adapter to
        <code>FCM1::Cm</code>.</dd>

        <dt><code>FCM::System::Misc</code></dt>

        <dd>Miscellaneous functions, e.g. <code>browse</code>,
        <code>cfg-print</code>, <code>keyword-print</code>.</dd>

        <dt><code>FCM::System::Old</code></dt>

        <dd>Thin adapter to the old extract and build systems.</dd>

        <dt><code>FCM::System::Make</code></dt>

        <dd>The logic of the FCM make system.</dd>

        <dt><code>FCM::System::Make::Build</code></dt>

        <dd>FCM make: build system logic.</dd>

        <dt><code>FCM::System::Make::Build::*</code></dt>

        <dd>FCM make: build system components: File type and task specific
        logic.</dd>

        <dt><code>FCM::System::Make::Extract</code></dt>

        <dd>FCM make: extract system logic.</dd>

        <dt><code>FCM::System::Make::Mirror</code></dt>

        <dd>FCM make: mirror system logic.</dd>

        <dt><code>FCM::System::Make::Preprocess</code></dt>

        <dd>FCM make: preprocess system logic, actually a configuration of
        <code>FCM::System::Make::Build</code>.</dd>

        <dt><code>FCM::System::Make::Share::*</code></dt>

        <dd>Shared logic between all subsystems in
        <code>FCM::System::Make::*</code>.</dd>
      </dl>
    </dd>

    <dt><code>FCM::Util</code></dt>

    <dd>
      <p>Provides supporting utilities.</p>

      <p>Functionalities include:</p>

      <ul>
        <li>abstract utilities for SVN URLs and file system paths.</li>

        <li>configuration file reader.</li>

        <li>event handler.</li>

        <li>file utilities.</li>

        <li>message report.</li>

        <li>name space utilities.</li>

        <li>shell invocation.</li>

        <li>multi-process task runner.</li>

        <li>timer.</li>
      </ul>

      <p>The logic of the more complex utilities are delegated to modules in
      the <code>FCM::Util::*</code> name space.</p>
    </dd>
  </dl>

  <p>Note: The majority of modules in the old <code>FCM1::*</code> name space
  are considered deprecated, with the exception of <code>FCM1::Cm</code> and
  those providing support functionalities for it. The functionalities of these
  modules will eventually be absorbed into the <code>FCM::System::CM</code>
  framework.</p>

  </div>
  </div>
  </div>

  <hr/>
  <div class="container-fluid text-center">
    <div class="row"><div class="col-md-12">
    <address><small>
      &copy; British Crown Copyright 2006-16
      <a href="http://www.metoffice.gov.uk">Met Office</a>.
      See <a href="../etc/fcm-terms-of-use.html">Terms of Use</a>.<br />
      This document is released under the British <a href=
      "http://www.nationalarchives.gov.uk/doc/open-government-licence/" rel=
      "license">Open Government Licence</a>.<br />
    </small></address>
    </div></div>
  </div>

  <script type="text/javascript" src="../etc/jquery.min.js"></script>
  <script type="text/javascript" src="../etc/bootstrap/js/bootstrap.min.js"></script>
  <script type="text/javascript" src="../etc/fcm.js"></script>
  <script type="text/javascript" src="../etc/fcm-version.js"></script>
</body>
</html>