/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
/*
 * !GLU Result Status Definitions
 *
 * Generated by rsg from: 
 * 
 * $RCSfile: glu_rs.rsg $$Revision: 1.12 $$Date: 1999/05/21 08:38:44 $
 *
 */
#ifndef GLU_RS_H
#define GLU_RS_H
/*                           
 * !Definition of GLU_status 
 *                           
 */                          
 
#include <idltype.h>
typedef IDL_long GLU_status;
/*                           
 *                           
 * 
 * !GLU_SUCCESS
 * 
 * - operation completed successfully 
 * 
 * 
 * !GLU_UNKNOWN
 * 
 * - unknown error 
 * 
 * An unexpected GLU error occured. This is probably a 
 * protocol violation. 
 * 
 * !GLU_BADCIN
 * 
 * - invalid CIN (interface description) 
 * 
 * An invalid interface description has been 
 * encountered. This may be caused by incorrect IDL 
 * constructions, eg. misconstructed compound unions. 
 * 
 * !GLU_BADEXCEPTIDX
 * 
 * - exception index incompatible with operation 
 *   description 
 * 
 * An index refers to an exception which does not exist 
 * in the CIN. This is probably a protocol error. 
 * 
 * !GLU_BADGLUHDR
 * 
 * - invalid header 
 * 
 * An invalid header was encounterd whilst unpacking a 
 * message. This is probably a protocol error. 
 * 
 * !GLU_BADHDRVERSION
 * 
 * - invalid protocol version 
 * 
 * An error has been encountered on unpacking a message 
 * header. This is probably a protocol error. 
 * 
 * !GLU_BADOPIDX
 * 
 * - operation index incompatible with interface 
 *   description 
 * 
 * An index refers to an operation which does not exist 
 * in the CIN. This is probably a protocol error. 
 * 
 * !GLU_BADPARAMIDX
 * 
 * - parameter index incompatible with operation 
 *   description 
 * 
 * An index refers to an parameter which does not exist 
 * in the CIN. This is probably a protocol error. 
 * 
 * !GLU_BADPREPBUF
 * 
 * - prepared CIN is invalid 
 * 
 * "prep" is invalid. Either the memory is corrupt or 
 * "GLU_INTERFACE_PREPARE" was not called. 
 * 
 * !GLU_BADPV
 * 
 * - invalid parameter vector 
 * 
 * A bad parameter vector has been encountered. This is 
 * probably a protocol error. 
 * 
 * !GLU_BADSEQSIZE
 * 
 * - IDL sequence had invalid size 
 * 
 * While unmarshalling a parameter or exception, a 
 * bounded sequence was encountered the length of which 
 * was greater than the bound. This is probably a 
 * protocol violation, because the sending ORB should 
 * have checked the length. 
 * 
 * !GLU_BADSTRSIZE
 * 
 * - IDL string had invalid size 
 * 
 * An attempt to operate on a string failed because the 
 * actual size of the string exceeds its declared size. 
 * 
 * !GLU_INITERR
 * 
 * - GLU module initialization error 
 * 
 * An error occured whilst initialising GLU. Check that 
 * installed software is complete. 
 * 
 * !GLU_LONGINBUF
 * 
 * - input buffer too large (extraneous data) 
 * 
 * The message was unpacked successfully, but 
 * "to_unpack_len" was greater than the data required to 
 * successfully unmarshall the request. This is probably 
 * a protocol violation. 
 * 
 * !GLU_NOSUCHOP
 * 
 * - no such operation 
 * 
 * The operation specified in "request_header" could not 
 * be found. Either the name was not found or the 
 * operation synopsis did not match, i.e. the 
 * operation's type signature defined in "prep" is not 
 * the same as the type signature used to pack the 
 * request. 
 * 
 * !GLU_NOTREQUEST
 * 
 * - input buffer does not contain a request 
 * 
 * The header type is not GLU_TYPE_REQUEST. This status 
 * is only returned if "GLU_HEADER_DEF" is called 
 * implicitly. 
 * 
 * !GLU_NOTRESPONSE
 * 
 * - input buffer does not contain a response 
 * 
 * No response was found on unpacking a response. This 
 * is probably a protocol error. 
 * 
 * !GLU_SHORTINBUF
 * 
 * - input buffer too small 
 * 
 * The message could not be unpacked, because 
 * "to_unpack_len" was smaller than the data required. 
 * This is probably a protocol violation. 
 * 
 * !GLU_SHORTOUTBUF
 * 
 * - output buffer too small 
 * 
 * The message could not be unpacked because 
 * "unpacked_len_max" was smaller than the space 
 * required. "unpacked_len" contains the appropriate 
 * length. Reallocate "unpacked_data" to be at least 
 * "unpacked_len" bytes. 
 * 
 * !GLU_SHORTPREPBUF
 * 
 * - buffer for prepared CIN too small 
 * 
 * The buffer into which the prepared CIN is to be 
 * placed is too small. In order to allocate the buffer 
 * dynamically with exactly the correct size you can 
 * call "PCU_PREPARE" twice. On the first call 
 * "max_prepbuf_len" is set to zero. "PCU_PREPARE" 
 * returns status code PCU_SHORTPREPBUF and 
 * "prepbuf_len" will contain the required "prepbuf" 
 * size. The correct amount of memory can then be 
 * allocated before calling "PCU_PREPARE" a second time 
 * to prepare the CIN description. 
 * 
 * !GLU_SHORTPV
 * 
 * - parameter vector too small 
 * 
 * "pv_len_max" is shorter than required to unpack all 
 * the parameters for the operation. "*local_op_idx" is 
 * valid. The correct size should be two plus the 
 * parameter count for the operation. 
 * GLU_GET_NR_PARAMETERS may be called to get the 
 * parameter count. Note that the "result" is treated as 
 * an "out" parameter and need not be handled specially. 
 * 
 * !GLU_TOOMANYMEMBERS
 * 
 * - implementation limit: struct passed to operation has 
 *   too many fields 
 * 
 * The maximum number of members which may be defined in 
 * an IDL structure has been exceeded. The IDL which 
 * causes the problem will need to be fixed. 
 * 
 * !GLU_UNIMPLCONV
 * 
 * - unimplemented conversion 
 * 
 * While unmarshalling a parameter or exception, a data 
 * type was encountered that could not be converted to 
 * the native format. This is likely to be caused by a 
 * conversion between two different floating point 
 * (real) formats. For example, the client sent a NaN in 
 * IEEE format and the server's native format is Tandem 
 * format which doesn't have a representation for NaN. 
 */
 
#define GLU_SUCCESS          ((GLU_status)   0)
#define GLU_UNKNOWN          ((GLU_status)   1)
#define GLU_BADCIN           ((GLU_status)   2)
#define GLU_SHORTPREPBUF     ((GLU_status)   3)
#define GLU_BADPREPBUF       ((GLU_status)   4)
#define GLU_BADOPIDX         ((GLU_status)   5)
#define GLU_SHORTOUTBUF      ((GLU_status)   6)
#define GLU_BADSEQSIZE       ((GLU_status)   7)
#define GLU_BADSTRSIZE       ((GLU_status)   8)
#define GLU_BADGLUHDR        ((GLU_status)   9)
#define GLU_NOSUCHOP         ((GLU_status)  10)
#define GLU_SHORTINBUF       ((GLU_status)  11)
#define GLU_LONGINBUF        ((GLU_status)  12)
#define GLU_SHORTPV          ((GLU_status)  13)
#define GLU_BADPV            ((GLU_status)  14)
#define GLU_UNIMPLCONV       ((GLU_status)  15)
#define GLU_BADHDRVERSION    ((GLU_status)  16)
#define GLU_INITERR          ((GLU_status)  17)
#define GLU_TOOMANYMEMBERS   ((GLU_status)  18)
#define GLU_NOTREQUEST       ((GLU_status)  19)
#define GLU_NOTRESPONSE      ((GLU_status)  20)
#define GLU_BADEXCEPTIDX     ((GLU_status)  21)
#define GLU_BADPARAMIDX      ((GLU_status)  22)

#ifdef __cplusplus
extern "C" {
#endif
/*
   GLU_STATUS_TO_TEXT converts a result status to a string.

   <rs>				result status to convert

   <=description>   	    	human-readable string for "rs"
   */
extern
char *
GLU_STATUS_TO_TEXT(GLU_status rs);

#ifdef __cplusplus
}
#endif
#endif /* GLU_RS_H */
