Annotation of sbbs/javascript/include/mozilla/nspr/prvrsion.h, revision 1.1

1.1     ! root        1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
        !             2: /* 
        !             3:  * The contents of this file are subject to the Mozilla Public
        !             4:  * License Version 1.1 (the "License"); you may not use this file
        !             5:  * except in compliance with the License. You may obtain a copy of
        !             6:  * the License at http://www.mozilla.org/MPL/
        !             7:  * 
        !             8:  * Software distributed under the License is distributed on an "AS
        !             9:  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
        !            10:  * implied. See the License for the specific language governing
        !            11:  * rights and limitations under the License.
        !            12:  * 
        !            13:  * The Original Code is the Netscape Portable Runtime (NSPR).
        !            14:  * 
        !            15:  * The Initial Developer of the Original Code is Netscape
        !            16:  * Communications Corporation.  Portions created by Netscape are 
        !            17:  * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
        !            18:  * Rights Reserved.
        !            19:  * 
        !            20:  * Contributor(s):
        !            21:  * 
        !            22:  * Alternatively, the contents of this file may be used under the
        !            23:  * terms of the GNU General Public License Version 2 or later (the
        !            24:  * "GPL"), in which case the provisions of the GPL are applicable 
        !            25:  * instead of those above.  If you wish to allow use of your 
        !            26:  * version of this file only under the terms of the GPL and not to
        !            27:  * allow others to use your version of this file under the MPL,
        !            28:  * indicate your decision by deleting the provisions above and
        !            29:  * replace them with the notice and other provisions required by
        !            30:  * the GPL.  If you do not delete the provisions above, a recipient
        !            31:  * may use your version of this file under either the MPL or the
        !            32:  * GPL.
        !            33:  */
        !            34: 
        !            35: 
        !            36: /* author: jstewart */
        !            37: 
        !            38: #if defined(_PRVERSION_H)
        !            39: #else
        !            40: #define _PRVERSION_H
        !            41: 
        !            42: #include "prtypes.h"
        !            43: 
        !            44: PR_BEGIN_EXTERN_C
        !            45: 
        !            46: /* All components participating in the PR version protocol must expose
        !            47:  * a structure and a function. The structure is defined below and named
        !            48:  * according to the naming conventions outlined further below.  The function
        !            49:  * is called libVersionPoint and returns a pointer to this structure.
        !            50:  */
        !            51: 
        !            52: /* on NT, always pack the structure the same. */
        !            53: #ifdef _WIN32
        !            54: #pragma pack(push, 8)
        !            55: #endif
        !            56: 
        !            57: typedef struct {
        !            58:     /*
        !            59:      * The first field defines which version of this structure is in use.
        !            60:      * At this time, only version 2 is specified. If this value is not 
        !            61:      * 2, you must read no further into the structure.
        !            62:      */
        !            63:     PRInt32    version; 
        !            64:   
        !            65:     /* for Version 2, this is the body format. */
        !            66:     PRInt64         buildTime;      /* 64 bits - usecs since midnight, 1/1/1970 */
        !            67:     char *          buildTimeString;/* a human readable version of the time */
        !            68:   
        !            69:     PRUint8   vMajor;               /* Major version of this component */
        !            70:     PRUint8   vMinor;               /* Minor version of this component */
        !            71:     PRUint8   vPatch;               /* Patch level of this component */
        !            72:   
        !            73:     PRBool          beta;           /* true if this is a beta component */
        !            74:     PRBool          debug;          /* true if this is a debug component */
        !            75:     PRBool          special;        /* true if this component is a special build */
        !            76:   
        !            77:     char *          filename;       /* The original filename */
        !            78:     char *          description;    /* description of this component */
        !            79:     char *          security;       /* level of security in this component */
        !            80:     char *          copyright;      /* The copyright for this file */
        !            81:     char *          comment;        /* free form field for misc usage */
        !            82:     char *          specialString;  /* the special variant for this build */
        !            83: } PRVersionDescription;
        !            84: 
        !            85: /* on NT, restore the previous packing */
        !            86: #ifdef _WIN32
        !            87: #pragma pack(pop)
        !            88: #endif
        !            89: 
        !            90: /*
        !            91:  * All components must define an entrypoint named libVersionPoint which
        !            92:  * is of type versionEntryPointType.
        !            93:  *
        !            94:  * For example, for a library named libfoo, we would have:
        !            95:  *
        !            96:  *   PRVersionDescription prVersionDescription_libfoo =
        !            97:  *   {
        !            98:  *       ...
        !            99:  *   };
        !           100:  *
        !           101:  *   PR_IMPLEMENT(const PRVersionDescription*) libVersionPoint(void)
        !           102:  *   {
        !           103:  *       return &prVersionDescription_libfoo;
        !           104:  *   }
        !           105:  */
        !           106: typedef const PRVersionDescription *(*versionEntryPointType)(void);
        !           107: 
        !           108: /* 
        !           109:  * Where you declare your libVersionPoint, do it like this: 
        !           110:  * PR_IMPLEMENT(const PRVersionDescription *) libVersionPoint(void) {
        !           111:  *  fill it in...
        !           112:  * }
        !           113:  */
        !           114: 
        !           115: /*
        !           116:  * NAMING CONVENTION FOR struct
        !           117:  *
        !           118:  * all components should also expose a static PRVersionDescription
        !           119:  * The name of the struct should be calculated as follows:
        !           120:  * Take the value of filename. (If filename is not specified, calculate
        !           121:  * a short, unique string.)  Convert all non-alphanumeric characters
        !           122:  * to '_'.  To this, prepend "PRVersionDescription_".  Thus for libfoo.so,
        !           123:  * the symbol name is "PRVersionDescription_libfoo_so".
        !           124:  * so the file should have
        !           125:  * PRVersionDescription PRVersionDescription_libfoo_so { fill it in };
        !           126:  * on NT, this file should be declspec export.
        !           127:  */
        !           128: 
        !           129: PR_END_EXTERN_C
        !           130: 
        !           131: #endif  /* defined(_PRVERSION_H) */
        !           132: 
        !           133: /* prvrsion.h */
        !           134: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.