IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 348


Ignore:
Timestamp:
Mar 31, 2004, 6:40:36 PM (22 years ago)
Author:
Paul Price
Message:

Fixing typos.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/psLibSDRS.tex

    r347 r348  
    1 %%% $Id: psLibSDRS.tex,v 1.20 2004-04-01 04:40:14 eugene Exp $
     1%%% $Id: psLibSDRS.tex,v 1.21 2004-04-01 04:40:36 price Exp $
    22\documentclass[panstarrs]{panstarrs}
    33
     
    387387\end{verbatim}
    388388%
    389 The corresponding callback have the following form:
     389The corresponding callbacks have the following form:
    390390%
    391391\begin{verbatim}
     
    402402\code{psMemAllocateCBSet} and \code{psMemFreeCBSet} are used to
    403403increment the values of \code{p_psMemAllocateID} and
    404 \code{p_psMemFreeID} respectively.  For example, the return value
     404\code{p_psMemFreeID} respectively.  For example, a return value of
    405405\code{0} implies that the value is unchanged; if the value is \code{2}
    406406the callback will be called again when the memory ID counter has
    407407increased by two.  This functionality may be useful to check, for
    408 example, every 100th block allocated.  The function, \code{long
    409 psMemGetId(void);} returns the next identification number to be
    410 assigned to a memory block.  This function can be used to guide the
    411 choice of ID set with the functions above.
     408example, every 100th block allocated.  The function, \code{long psMemGetId(void);}
     409returns the next identification number to be assigned to a memory
     410block.  This function can be used to guide the choice of ID set with
     411the functions above.
    412412
    413413\subsubsection{Memory Tracing and Corruption Checks}
     
    438438or the corresponding memory reference will be lost.
    439439
    440 If the argument \code{fd} is non\code{NULL}, a one-line summary
     440If the argument \code{fd} is non-\code{NULL}, a one-line summary
    441441of each block that has been allocated but not freed is written to that
    442442file descriptor.
     
    484484be in the valid range and should correspond to the address of the
    485485\code{psMemBlock}).  For an example implementation of the
    486 \code{refCounter} facilities, see the discussion of \code{psDlist}
     486\code{refCounter} facilities, see the discussion of \code{psDlist}.
    487487
    488488\tbd{REF}.
     
    495495code); the latter means information about the processing that must be
    496496collected and saved, even in the production system.  We envision that
    497 we will make extensive use of \code{psTrace} throughout the \PS{}
     497extensive use will be made of \code{psTrace} throughout the \PS{}
    498498code.
    499499
     
    520520lowest-level step-by-step messages would be printed.
    521521
    522 The PSLib tracing facility provides the above functionality along with
    523 the ability to assign different trace levels to different types of
    524 messages.  Each trace message when placed in the code is assigned to
    525 be part of a specific tracing 'facility', defined in more detail
    526 below.  The trace level for that specific message is also set when the
    527 message is placed.  Each facility may have its trace level set
    528 independently.  Thus, it is possible to request detailed trace output
    529 for one facility while minimizing the verbosity of the trace output
    530 from the rest of the program. 
     522The PSLib tracing facility will provide the above functionality, along
     523with the ability to assign different trace levels to messages from
     524different software components.  Each trace message when placed in the
     525code is assigned to be part of a specific tracing 'facility', defined
     526in more detail below.  The trace level for that specific message is
     527also set when the message is placed.  Each facility may have its trace
     528level set independently.  Thus, it is possible to request detailed
     529trace output for one facility while minimizing the verbosity of the
     530trace output from the rest of the program.
    531531
    532532The trace facilities consist of a hierarchy of names.  A trace
     
    536536would be \code{'.A'}, followed by \code{.A.B}, and so on.  The
    537537relationship is seen in two ways.  First, a facility inherits the
    538 trace level of its parent unless specified.  Second, the hierarchy is
    539 used to format the listing of the trace facilities.  The first of
    540 these rules provides a mechanism to define the default trace levels
    541 for any facility even if it has not been registered explicitly since
    542 all named facilities are implicitly children of the top level facility
    543 (\code{.}).  The second rule is simply an organizational technique to
    544 make the listing of facility information clear.
     538trace level of its parent unless explicitly specified.  Second, the
     539hierarchy is used to format the listing of the trace facilities.  The
     540first of these rules provides a mechanism to define the default trace
     541levels for any facility even if it has not been registered explicitly
     542since all named facilities are implicitly children of the top level
     543facility (\code{.}).  The second rule is simply an organizational
     544technique to make the listing of facility information clear.
    545545
    546546The API to place a trace message in the code, and simultaneously set
     
    567567where \code{level} specifies the current trace level for the facility
    568568named by \code{facil}.  The currently defined trace level for a given
    569 facility is determined by the function:
     569facility may be determined by the function:
    570570%
    571571\begin{verbatim}
     
    577577\code{psTrace}) shall be printed if and only if
    578578\code{psGetTraceLevel(facil)} returns a value greater than or equal to
    579 the value of \code{myLevel} for that message.
    580 
    581 PSLib includes a utility function for examining the current tracing
    582 levels of all facilities: \code{void psPrintTraceLevels(void);}.  This
    583 function will print the hierarchy of trace facilities along with the
    584 current trace level for each facility.  For example, a particular
     579the value of \code{myLevel} for that message.  That is, a larger
     580number for the trace level corresponds to lower-level statements, and
     581hence is more verbose.
     582
     583PSLib will include a utility function for examining the current
     584tracing levels of all facilities: \code{void psPrintTraceLevels(void);}.
     585This function will print the hierarchy of trace facilities along with
     586the current trace level for each facility.  For example, a particular
    585587program may have a few facilities defined, along with their trace
    586588levels.  A call to \code{psPrintTraceLevels} may produce a listing
     
    612614%
    613615\begin{verbatim}
    614 ERROR: flat-field image foo.fits is invalid  (printed)
    615 doing the divide                             (printed)
    616 got an invalid pixel value (NaN) at 500,20   (printed)
    617 divide is done                               (printed)
     616ERROR: flat-field image foo.fits is invalid
     617doing the divide
     618got an invalid pixel value (NaN) at 500,20
     619divide is done
    618620\end{verbatim}
    619621%
     
    630632%
    631633
    632 The tracing facility should be made available, or not, on compilation.
    633 If the C pre-processor macro \code{PS_NO_TRACE} is defined, all trace
    634 code shall be replaced by empty space so that none of the code is
    635 compiled.  This can be implemented via macro front-ends to private
    636 versions of the user APIs.  In addition, a function \code{void
    637 psTraceReset(void)} will set all trace levels to 0.
     634The availability of the tracing facility at run-time, shall be decided
     635at compilation: If the C pre-processor macro \code{PS_NO_TRACE} is
     636defined, all trace code shall be replaced by empty space so that none
     637of the code is compiled.  This can be implemented via macro front-ends
     638to private versions of the user APIs.  In addition, a function
     639\code{void psTraceReset(void)} will set all trace levels to 0.
    638640
    639641\tbd{ability to send trace messages to output locations other than stdout?}
     
    686688\end{verbatim}
    687689%
    688 A specific message invoked with \code{psLogMsg} is only printed if its
    689 value of \code{myLevel} is less than the current value set by
    690 \code{psSetLogLevel}. 
     690This function returns the previous log level.  A specific message
     691invoked with \code{psLogMsg} is only printed if its value of
     692\code{myLevel} is less than the current value set by
     693\code{psSetLogLevel}.
    691694
    692695Log messages are sent to the destination most recently set using:
     
    715718\end{verbatim}
    716719where \code{YYYY}, \code{MM}, \code{DD}, \code{hh}, \code{mm}, and
    717 \code{ss} are the year, month (Jan == 1), day of the month, hours
     720\code{ss} are the year, month (Jan is 01), day of the month, hours
    718721(0--23), minutes, and seconds when the log message was received.  Note
    719722that the timestamp is in ISO order, and that the timezone is GMT
    720723(hence the \code{Z}).  The \code{hostname} is returned by
    721 \code{gethostname}, \code{L} is a letter associated with the level
     724\code{gethostname}, \code{L} is a character associated with the level
    722725(\code{A}, \code{E}, \code{W}, and \code{I} for \code{PS_LOG_ABORT},
    723726\code{PS_LOG_ERROR}, \code{PS_LOG_WARN}, and \code{PS_LOG_INFO}
     
    733736%
    734737The possible order of the format entries is fixed and not determined
    735 by the order of the letters.  Selecting an output format with fewer
    736 than the complete set of 5 entries simply removes those entries from
    737 the output messages.
     738by the order of the letters used in \code{psSetLogFormat}.  Selecting
     739an output format with fewer than the complete set of 5 entries simply
     740removes those entries from the output messages.
    738741
    739742%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    741744\subsection{Miscellaneous Utilities}
    742745
    743 We require a several very low-functions.  Two functions provide
     746We require several very low-level functions.  Two functions provide
    744747conveniences tied to the logging facilities:
    745748%
     
    764767%
    765768The first function simply converts the argument to a string
    766 \tbd{explanation of usage and rational?}.  The second function,
     769\tbd{explanation of usage and rationale?}.  The second function,
    767770\code{psStringCopy}, shall allocate a sufficient memory block and
    768771return a copy of the input string.  Similarly, \code{psStringNCopy}
     
    812815example, if $x$ were a vector of 100 elements, but $y$ were a vector
    813816of 1000 elements, the meaning of the operation $x + y$ is unclear.
    814 This type of operation should probably be invalid.
     817This type of operation should be invalid.
    815818
    816819Given that some functions should be able to operate equivalently (or
     
    826829structure \code{psType}.
    827830
    828 Each of these equivalent data type is defined by a structure in which
     831Each of these equivalent data types is defined by a structure in which
    829832the first element is always of type \code{psType}.  This element
    830833defines both the dimensions of the array and the data type of each
     
    832835\begin{verbatim}
    833836typedef struct {
    834     psDimen dimen;                      ///< The dimensionality
    835     psElemType type;                    ///< The type
     837    psDimen dimen;                      ///< The dimensionality
     838    psElemType type;                    ///< The type
    836839} psType;
    837 \begin{end}
     840\end{verbatim}
    838841where \code{psDimen dimen} defines the dimensionality of the data and
    839842\code{psElemType type} defines the data type of each element.  These
     
    841844\begin{verbatim}
    842845typedef enum {
    843     PS_DIMEN_SCALAR,                    ///< Scalar
    844     PS_DIMEN_VECTOR,                    ///< A vector
    845     PS_DIMEN_TRANSV,                    ///< A transposed vector
    846     PS_DIMEN_MATRIX,                    ///< A matrix
    847     PS_DIMEN_OTHER                      ///< Something else that's not supported for arithmetic
     846    PS_DIMEN_SCALAR,                    ///< Scalar
     847    PS_DIMEN_VECTOR,                    ///< A vector
     848    PS_DIMEN_TRANSV,                    ///< A transposed vector
     849    PS_DIMEN_MATRIX,                    ///< A matrix
     850    PS_DIMEN_OTHER                      ///< Something else that's not supported for arithmetic
    848851} psDimen;
    849852\end{verbatim}
     
    851854\begin{verbatim}
    852855typedef enum {
    853     PS_TYPE_CHAR,                       ///< Character
    854     PS_TYPE_SHORT,                      ///< Short integer
    855     PS_TYPE_INT,                        ///< Integer
    856     PS_TYPE_LONG,                       ///< Long integer
    857     PS_TYPE_UCHAR,                      ///< Unsigned character
    858     PS_TYPE_USHORT,                     ///< Unsigned short integer
    859     PS_TYPE_UINT,                       ///< Unsigned integer
    860     PS_TYPE_ULONG,                      ///< Unsigned long integer
    861     PS_TYPE_FLOAT,                      ///< Floating point
    862     PS_TYPE_DOUBLE,                     ///< Double-precision floating point
    863     PS_TYPE_COMPLEX,                    ///< Complex numbers consisting of floating point
    864     PS_TYPE_OTHER,                      ///< Something else that's not supported for arithmetic
     856    PS_TYPE_CHAR,                       ///< Character
     857    PS_TYPE_SHORT,                      ///< Short integer
     858    PS_TYPE_INT,                        ///< Integer
     859    PS_TYPE_LONG,                       ///< Long integer
     860    PS_TYPE_UCHAR,                      ///< Unsigned character
     861    PS_TYPE_USHORT,                     ///< Unsigned short integer
     862    PS_TYPE_UINT,                       ///< Unsigned integer
     863    PS_TYPE_ULONG,                      ///< Unsigned long integer
     864    PS_TYPE_FLOAT,                      ///< Floating point
     865    PS_TYPE_DOUBLE,                     ///< Double-precision floating point
     866    PS_TYPE_COMPLEX,                    ///< Complex numbers consisting of floating point
     867    PS_TYPE_OTHER,                      ///< Something else that's not supported for arithmetic
    865868} psElemType;
    866869\end{verbatim}
     
    871874
    872875We require several types of basic one-dimensional arrays: arrays of
    873 values of type \code{int}, \code{float}, \code{double},
    874 \code{complex}, and \code{void *}.  We have defined structures for
    875 these types which are all equivalent.  We illustrate them with the
    876 example of \code{psFloatArray}:
     876values of type \code{int}, \code{float}, \code{double}, \code{complex float},
     877and \code{void *}.  We have defined structures for these types
     878which are all equivalent.  We illustrate them with the example of
     879\code{psFloatArray}:
    877880%
    878881\begin{verbatim}
    879882typedef struct {
    880     psType type;                        ///< Type of data.  Must be first element
    881     int nalloc;                         ///< Total number of elements available
    882     int n;                              ///< Number of elements in use
    883     float *arr;                         ///< The array data
     883    psType type;                        ///< Type of data.  Must be first element
     884    int nalloc;                         ///< Total number of elements available
     885    int n;                              ///< Number of elements in use
     886    float *arr;                         ///< The array data
    884887} psFloatArray;
    885888\end{verbatim}
     
    889892allocated ($s \ge n$).  The allocated memory is available at
    890893\code{arr}.  The data type is defined by the first element,
    891 \code{psType}.  The structure is associated with a constructor and a destructor:
     894\code{psType}.  The structure is associated with a constructor and a
     895destructor:
    892896%
    893897\begin{verbatim}
     
    899903In these functions, \code{nalloc} is the number of elements to
    900904allocate.  For \code{psFloatArrayAlloc}, the value of
    901 \code{psFloatArray.n} is set to 0 and the allocated arrays are
    902 initialized to 0.0.  For \code{psFloatArrayRealloc}, if the value of
    903 \code{nalloc} is smaller than the current value of
     905\code{psFloatArray.n} is set to 0.  For \code{psFloatArrayRealloc}, if
     906the value of \code{nalloc} is smaller than the current value of
    904907\code{psFloatArray.n}, then \code{psFloatArray.n} is set to
    905908\code{nalloc}, the array is adjusted down to match \code{nalloc}, and
     
    927930require an array of pointers of type \code{void}, with which we can
    928931carry around a collection of data of an arbitrary type which is more
    929 complicated than the simple numeric types above.  The structure is a follows:
     932complicated than the simple numeric types above.  The structure is as
     933follows:
    930934%
    931935\begin{verbatim}
    932936typedef struct {
    933     psType type;                        ///< Type of data.  Must be first element
    934     int nalloc;                         ///< Total number of elements available
    935     int n;                              ///< Number of elements in use
    936     void **arr;                         ///< The array data
     937    psType type;                        ///< Type of data.  Must be first element
     938    int nalloc;                         ///< Total number of elements available
     939    int n;                              ///< Number of elements in use
     940    void **arr;                         ///< The array data
    937941} psVoidPtrArray;
    938942\end{verbatim}
     
    11021106\begin{verbatim}
    11031107typedef struct {
    1104     int nbucket;                        // number of buckets
    1105     psHashBucket **buckets;             // the buckets themselves
     1108    int nbucket;                        // number of buckets
     1109    psHashBucket **buckets;             // the buckets themselves
    11061110} psHash;
    11071111\end{verbatim}
     
    11131117\begin{verbatim}
    11141118typedef struct psHashBucket {
    1115     char *key;                          // key for this item of data
    1116     void *data;                         // the data itself
    1117     struct psHashBucket *next;          // list of other possible keys
     1119    char *key;                          // key for this item of data
     1120    void *data;                         // the data itself
     1121    struct psHashBucket *next;          // list of other possible keys
    11181122} psHashBucket;
    11191123\end{verbatim}
     
    14911495/** Convert vector to matrix. */
    14921496psImage *
    1493 psVectorToMatrix(psImage *out,          //!< Matrix to return, or NULL
    1494                  psVector *myVector     //!< Vector to convert
     1497psVectorToMatrix(psImage *out,          //!< Matrix to return, or NULL
     1498                 psVector *myVector     //!< Vector to convert
    14951499    );
    14961500\end{verbatim}
     
    15151519/** Fast Fourier Transform */
    15161520typedef struct {
    1517     p_psFFTDetails *details;            //!< Details on FFT implementation (private)
    1518     int nx, ny;                         //!< Size in x and y
    1519     float **real;                       //!< Data in real space
    1520     void *fourier;                      //!< Data in fourier space; implementation dependent
     1521    p_psFFTDetails *details;            //!< Details on FFT implementation (private)
     1522    int nx, ny;                         //!< Size in x and y
     1523    float **real;                       //!< Data in real space
     1524    void *fourier;                      //!< Data in fourier space; implementation dependent
    15211525} psFFT;
    15221526\end{verbatim}
     
    15371541/** Constructor */
    15381542psFFT *
    1539 psFFTAlloc(psImage *image               //!< Image to transform
    1540            );
     1543psFFTAlloc(psImage *image               //!< Image to transform
     1544           );
    15411545
    15421546/** Constructor for 1D case */
    15431547psFFT *
    1544 psFFTAlloc1D(const psFloatArray *arr    //!< Array to transform
    1545              );
     1548psFFTAlloc1D(const psFloatArray *arr    //!< Array to transform
     1549             );
    15461550
    15471551/** Destructor. Returns the data in the real space as an image. */
    15481552psImage *
    1549 psFFTFree(psImage *out,                 //!< Image to write the data to, or NULL
    1550           psFFT *restrict fft           //!< FFT to destroy
    1551           );
     1553psFFTFree(psImage *out,                 //!< Image to write the data to, or NULL
     1554          psFFT *restrict fft           //!< FFT to destroy
     1555          );
    15521556\end{verbatim}
    15531557
     
    15571561/** Forward FFT: from real to fourier space */
    15581562psFFT *
    1559 psFFTForwardTransform(psFFT *fft        //!< FFT to apply
    1560                       );
     1563psFFTForwardTransform(psFFT *fft        //!< FFT to apply
     1564                      );
    15611565
    15621566/** Reverse FFT: from fourier to real space */
    15631567psFFT *
    1564 psFFTReverseTransform(psFFT *fft        //!< FFT to apply
    1565                       );
     1568psFFTReverseTransform(psFFT *fft        //!< FFT to apply
     1569                      );
    15661570\end{verbatim}
    15671571
     
    15721576/** Apply filter function in fourier space */
    15731577psFFT *
    1574 psFFTFilter(psFFT *fft,                 //!< FFT to use (input and output)
    1575             float (*filterFunc)(int kx, int ky) //!< External filter function
    1576             );
     1578psFFTFilter(psFFT *fft,                 //!< FFT to use (input and output)
     1579            float (*filterFunc)(int kx, int ky) //!< External filter function
     1580            );
    15771581
    15781582/** Apply complex filter function */
    15791583psFFT *
    1580 psFFTFilterComplex(psFFT *fft,          //!< FFT to use (input and output)
    1581                    float (*realFilterFunc)(int kx, int ky), //!< External filter function, real part
    1582                    float (*imagFilterFunc)(int kx, int ky) //!< External filter function, imaginary part
    1583                    );
     1584psFFTFilterComplex(psFFT *fft,          //!< FFT to use (input and output)
     1585                   float (*realFilterFunc)(int kx, int ky), //!< External filter function, real part
     1586                   float (*imagFilterFunc)(int kx, int ky) //!< External filter function, imaginary part
     1587                   );
    15841588\end{verbatim}
    15851589
     
    15901594/** Calculate cross-correlation function */
    15911595psFFT *
    1592 psFFTCrossCorrelate(psFFT *out          //!< Output FFT (or NULL)
    1593                     psFFT *fft1, psFFT *fft2 //!< FFTs to use in cross-correlation
    1594                     );
     1596psFFTCrossCorrelate(psFFT *out          //!< Output FFT (or NULL)
     1597                    psFFT *fft1, psFFT *fft2 //!< FFTs to use in cross-correlation
     1598                    );
    15951599\end{verbatim}
    15961600
     
    16001604/** Calculate power spectrum */
    16011605psFFT *
    1602 psFFTPowerSpec(psFFT *fft               //!< FFT to use (input and output)
    1603                );
     1606psFFTPowerSpec(psFFT *fft               //!< FFT to use (input and output)
     1607               );
    16041608\end{verbatim}
    16051609
     
    16091613/** Multiply two Fourier transforms, as for convolution */
    16101614psFFT *
    1611 psFFTMultiplyFT(psFFT *out,             //!< Output FFT (or NULL)
    1612                 const psFFT *fft1, const psFFT *fft2 //!< FFTs to multiply
    1613                 );
     1615psFFTMultiplyFT(psFFT *out,             //!< Output FFT (or NULL)
     1616                const psFFT *fft1, const psFFT *fft2 //!< FFTs to multiply
     1617                );
    16141618\end{verbatim}
    16151619
     
    16201624/* Convert the real data in the FFT struct to an image again */
    16211625psImage *
    1622 psFFTGetImage(psImage *out,             //!< Image to write to (or NULL)
    1623               const psFFT *fft          //!< FFT to get image from
    1624               );
     1626psFFTGetImage(psImage *out,             //!< Image to write to (or NULL)
     1627              const psFFT *fft          //!< FFT to get image from
     1628              );
    16251629
    16261630/** Convert the Fourier transform data in the FFT struct to an image of complex numbers */
    16271631psImage *
    1628 psFFTGetFT(psImage *out,                //!< Image to write to (or NULL)
    1629            const psFFT *fft             //!< FFT to get Fourier transform from
    1630            );
     1632psFFTGetFT(psImage *out,                //!< Image to write to (or NULL)
     1633           const psFFT *fft             //!< FFT to get Fourier transform from
     1634           );
    16311635\end{verbatim}
    16321636
     
    22392243/** The type of a data type */
    22402244typedef struct {
    2241     psElemType type;                    ///< The type
    2242     psDimen dimen;                      ///< The dimensionality
     2245    psElemType type;                    ///< The type
     2246    psDimen dimen;                      ///< The dimensionality
    22432247} psType;
    22442248
    22452249/** Types of the elements of vectors, images, etc. */
    22462250typedef enum {
    2247     PS_TYPE_CHAR,                       ///< Character
    2248     PS_TYPE_SHORT,                      ///< Short integer
    2249     PS_TYPE_INT,                        ///< Integer
    2250     PS_TYPE_LONG,                       ///< Long integer
    2251     PS_TYPE_UCHAR,                      ///< Unsigned character
    2252     PS_TYPE_USHORT,                     ///< Unsigned short integer
    2253     PS_TYPE_UINT,                       ///< Unsigned integer
    2254     PS_TYPE_ULONG,                      ///< Unsigned long integer
    2255     PS_TYPE_FLOAT,                      ///< Floating point
    2256     PS_TYPE_DOUBLE,                     ///< Double-precision floating point
    2257     PS_TYPE_COMPLEX,                    ///< Complex numbers consisting of floating point
    2258     PS_TYPE_OTHER,                      ///< Something else that's not supported for arithmetic
     2251    PS_TYPE_CHAR,                       ///< Character
     2252    PS_TYPE_SHORT,                      ///< Short integer
     2253    PS_TYPE_INT,                        ///< Integer
     2254    PS_TYPE_LONG,                       ///< Long integer
     2255    PS_TYPE_UCHAR,                      ///< Unsigned character
     2256    PS_TYPE_USHORT,                     ///< Unsigned short integer
     2257    PS_TYPE_UINT,                       ///< Unsigned integer
     2258    PS_TYPE_ULONG,                      ///< Unsigned long integer
     2259    PS_TYPE_FLOAT,                      ///< Floating point
     2260    PS_TYPE_DOUBLE,                     ///< Double-precision floating point
     2261    PS_TYPE_COMPLEX,                    ///< Complex numbers consisting of floating point
     2262    PS_TYPE_OTHER,                      ///< Something else that's not supported for arithmetic
    22592263} psElemType;
    22602264
    22612265/** Dimensions of a data type */
    22622266typedef enum {
    2263     PS_DIMEN_SCALAR,                    ///< Scalar
    2264     PS_DIMEN_VECTOR,                    ///< A vector
    2265     PS_DIMEN_TRANSV,                    ///< A transposed vector
    2266     PS_DIMEN_IMAGE,                     ///< An image
    2267     PS_DIMEN_OTHER                      ///< Something else that's not supported for arithmetic
     2267    PS_DIMEN_SCALAR,                    ///< Scalar
     2268    PS_DIMEN_VECTOR,                    ///< A vector
     2269    PS_DIMEN_TRANSV,                    ///< A transposed vector
     2270    PS_DIMEN_IMAGE,                     ///< An image
     2271    PS_DIMEN_OTHER                      ///< Something else that's not supported for arithmetic
    22682272} psDimen;
    22692273\end{verbatim}
     
    22822286/** Transpose a vector.  Changes the type to a PS_DIMEN_TRANSV */
    22832287psVector *psVectorTranspose(psVector *out, //!< Output vector, or NULL
    2284                             psVector *myVector //!< Vector to be transposed
     2288                            psVector *myVector //!< Vector to be transposed
    22852289    );
    22862290\end{verbatim}
Note: See TracChangeset for help on using the changeset viewer.