gtpc2mfr | C/C++ Language Support User's Guide |
This function returns the previous element in the collection in the specified buffer and points the cursor at the element. The definition of the previous element depends on the collection implementation.
Format
#include <c$to2.h> TO2_BUF_PTR TO2_previousWithBuffer (const TO2_PID_PTR pid_ptr, TO2_ENV_PTR env_ptr, const long *bufferLength, TO2_BUF_PTR buffer);
Normal Return
For a normal return, this buffer contains a C header file followed by a copy of the data requested. The normal return is a pointer (TO2_BUF_PTR) to a structure (buffer) of type TO2_BUF_HDR (see Type Definitions). If the length of the data is greater than the length of the buffer, only the amount of data that will fit is placed in the buffer. The length is returned in the buffer and is the actual length of the data element. The caller must check the returned length against the length of the supplied buffer to determine if the entire element has been returned.
Error Return
An error return is indicated by a zero. When zero is returned, use the TO2_getErrorCode function to determine the specific error code. For more information, see Error Handling.
The following error codes are common for this function:
TO2_ERROR_BUFFER_SIZE
TO2_ERROR_CURSOR
TO2_ERROR_EMPTY
TO2_ERROR_ENV
TO2_ERROR_EODAD
TO2_ERROR_METHOD
TO2_ERROR_PID
TO2_ERROR_ZERO_PID
Programming Considerations
Examples
The following example reads the previous element that the cursor is currently pointing to, returns it in the specified buffer, and updates the cursor to point to it.
#include <c$to2.h> /* Needed for TO2 API Functions */ #include <stdio.h> /* APIs for standard I/O functions */ TO2_ERR_CODE err_code; /* TO2 error code value */ TO2_ERR_TEXT_PTR err_text_ptr; /* TO2 error code text pointer */ TO2_BUF_PTR buffer_ptr; TO2_PID cursor; TO2_ENV_PTR env_ptr; /* Pointer to TO2 environment */ long buffer_len; long actual_buf_len;
·
·
·
/*********************************************************************/ /* Read the previous item that the cursor points to and */ /* return it in the specified buffer. */ /*********************************************************************/ actual_buf_len = buffer_len; if ((buffer_ptr = TO2_atCursorWithBuffer(&cursor, env_ptr, &actual_buf_len, buffer_ptr)) == NULL) { err_code = TO2_getErrorCode(env_ptr); if (err_code != TO2_ERROR_EODAD) { printf("TO2_previousWithBuffer failed!\n"); process_error(env_ptr); } else { printf("TO2_previousWithBuffer successful!\n"); } } else if (actual_buf_len < buffer_len) { printf("Data returned from cursor did not fit in allocated buffer.\n") }
Related Information