/*
   b_ptr_aiocb.cpp   Generated by the Ballista(tm) Project data object compiler
   Copyright (C) 1998-2001  Carnegie Mellon University

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 2
   of the License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

   File generated Wednesday, May 23 at 06:18 AM EDT

TITLE
   b_ptr_aiocb.cpp
*/

//--------------------------------------------------------------------

#include <errno.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <stream.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#include "b_ptr_aiocb.h"

//--------------------------------------------------------------------


 static struct aiocb aiocb_temp;
 static int fd;
 static char* buf_ptr;
 static char* cp_bufPtr;
//--------------------------------------------------------------------

CLASSNAME::CLASSNAME()
{
  //DIAL DECLARATIONS HERE

  //generated

   strcpy(_b_ptr_aiocbTYPENAME,CLASS_STRING);
strcpy(_b_ptr_aiocbFD_OPEN_READ,"b_ptr_aiocb_FD_OPEN_READ");
strcpy(_b_ptr_aiocbFD_OPEN_WRITE,"b_ptr_aiocb_FD_OPEN_WRITE");
strcpy(_b_ptr_aiocbFD_OPEN_APPEND_EMPTY,"b_ptr_aiocb_FD_OPEN_APPEND_EMPTY");
strcpy(_b_ptr_aiocbFD_OPEN_APPEND_BEGIN,"b_ptr_aiocb_FD_OPEN_APPEND_BEGIN");
strcpy(_b_ptr_aiocbFD_OPEN_APPEND_EOF,"b_ptr_aiocb_FD_OPEN_APPEND_EOF");
strcpy(_b_ptr_aiocbFD_CLOSED,"b_ptr_aiocb_FD_CLOSED");
strcpy(_b_ptr_aiocbFD_DELETED,"b_ptr_aiocb_FD_DELETED");
strcpy(_b_ptr_aiocbFD_ZERO,"b_ptr_aiocb_FD_ZERO");
strcpy(_b_ptr_aiocbFD_NEGONE,"b_ptr_aiocb_FD_NEGONE");
strcpy(_b_ptr_aiocbFD_ONE,"b_ptr_aiocb_FD_ONE");
strcpy(_b_ptr_aiocbFD_MAXINT,"b_ptr_aiocb_FD_MAXINT");
strcpy(_b_ptr_aiocbFD_MININT,"b_ptr_aiocb_FD_MININT");
strcpy(_b_ptr_aiocbFD_READ_ONLY,"b_ptr_aiocb_FD_READ_ONLY");
strcpy(_b_ptr_aiocbOFFSET_ZERO,"b_ptr_aiocb_OFFSET_ZERO");
strcpy(_b_ptr_aiocbOFFSET_ONE,"b_ptr_aiocb_OFFSET_ONE");
strcpy(_b_ptr_aiocbOFFSET_NEGONE,"b_ptr_aiocb_OFFSET_NEGONE");
strcpy(_b_ptr_aiocbOFFSET_MAXINT,"b_ptr_aiocb_OFFSET_MAXINT");
strcpy(_b_ptr_aiocbOFFSET_MININT,"b_ptr_aiocb_OFFSET_MININT");
strcpy(_b_ptr_aiocbBUF_NULL,"b_ptr_aiocb_BUF_NULL");
strcpy(_b_ptr_aiocbBUF_FILLED_PAGE,"b_ptr_aiocb_BUF_FILLED_PAGE");
strcpy(_b_ptr_aiocbBUF_ONE_CHAR,"b_ptr_aiocb_BUF_ONE_CHAR");
strcpy(_b_ptr_aiocbBUF_CONST,"b_ptr_aiocb_BUF_CONST");
strcpy(_b_ptr_aiocbNBYTE_ZERO,"b_ptr_aiocb_NBYTE_ZERO");
strcpy(_b_ptr_aiocbNBYTE_ONE,"b_ptr_aiocb_NBYTE_ONE");
strcpy(_b_ptr_aiocbNBYTE_MAXULONG,"b_ptr_aiocb_NBYTE_MAXULONG");
strcpy(_b_ptr_aiocbPRI_ZERO,"b_ptr_aiocb_PRI_ZERO");
strcpy(_b_ptr_aiocbPRI_ONE,"b_ptr_aiocb_PRI_ONE");
strcpy(_b_ptr_aiocbPRI_NEGONE,"b_ptr_aiocb_PRI_NEGONE");
strcpy(_b_ptr_aiocbPRI_MAXINT,"b_ptr_aiocb_PRI_MAXINT");
strcpy(_b_ptr_aiocbPRI_MININT,"b_ptr_aiocb_PRI_MININT");
strcpy(_b_ptr_aiocbNONE_SIGSEGV,"b_ptr_aiocb_NONE_SIGSEGV");
strcpy(_b_ptr_aiocbSIGNAL_SIGSEGV,"b_ptr_aiocb_SIGNAL_SIGSEGV");
strcpy(_b_ptr_aiocbZERO_ZERO,"b_ptr_aiocb_ZERO_ZERO");
strcpy(_b_ptr_aiocbMAXINT_MAXINT,"b_ptr_aiocb_MAXINT_MAXINT");
strcpy(_b_ptr_aiocbOP_ZERO,"b_ptr_aiocb_OP_ZERO");
strcpy(_b_ptr_aiocbOP_NEGONE,"b_ptr_aiocb_OP_NEGONE");
strcpy(_b_ptr_aiocbOP_MAXINT,"b_ptr_aiocb_OP_MAXINT");
strcpy(_b_ptr_aiocbOP_READ,"b_ptr_aiocb_OP_READ");
strcpy(_b_ptr_aiocbOP_WRITE,"b_ptr_aiocb_OP_WRITE");
}

//--------------------------------------------------------------------
b_param *b_ptr_aiocb::b_ptr_aiocbFD_OPEN_READ()
{
   return &_b_ptr_aiocbFD_OPEN_READ;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_OPEN_WRITE()
{
   return &_b_ptr_aiocbFD_OPEN_WRITE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_OPEN_APPEND_EMPTY()
{
   return &_b_ptr_aiocbFD_OPEN_APPEND_EMPTY;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_OPEN_APPEND_BEGIN()
{
   return &_b_ptr_aiocbFD_OPEN_APPEND_BEGIN;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_OPEN_APPEND_EOF()
{
   return &_b_ptr_aiocbFD_OPEN_APPEND_EOF;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_CLOSED()
{
   return &_b_ptr_aiocbFD_CLOSED;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_DELETED()
{
   return &_b_ptr_aiocbFD_DELETED;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_ZERO()
{
   return &_b_ptr_aiocbFD_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_NEGONE()
{
   return &_b_ptr_aiocbFD_NEGONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_ONE()
{
   return &_b_ptr_aiocbFD_ONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_MAXINT()
{
   return &_b_ptr_aiocbFD_MAXINT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_MININT()
{
   return &_b_ptr_aiocbFD_MININT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbFD_READ_ONLY()
{
   return &_b_ptr_aiocbFD_READ_ONLY;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOFFSET_ZERO()
{
   return &_b_ptr_aiocbOFFSET_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOFFSET_ONE()
{
   return &_b_ptr_aiocbOFFSET_ONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOFFSET_NEGONE()
{
   return &_b_ptr_aiocbOFFSET_NEGONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOFFSET_MAXINT()
{
   return &_b_ptr_aiocbOFFSET_MAXINT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOFFSET_MININT()
{
   return &_b_ptr_aiocbOFFSET_MININT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbBUF_NULL()
{
   return &_b_ptr_aiocbBUF_NULL;
}

b_param *b_ptr_aiocb::b_ptr_aiocbBUF_FILLED_PAGE()
{
   return &_b_ptr_aiocbBUF_FILLED_PAGE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbBUF_ONE_CHAR()
{
   return &_b_ptr_aiocbBUF_ONE_CHAR;
}

b_param *b_ptr_aiocb::b_ptr_aiocbBUF_CONST()
{
   return &_b_ptr_aiocbBUF_CONST;
}

b_param *b_ptr_aiocb::b_ptr_aiocbNBYTE_ZERO()
{
   return &_b_ptr_aiocbNBYTE_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbNBYTE_ONE()
{
   return &_b_ptr_aiocbNBYTE_ONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbNBYTE_MAXULONG()
{
   return &_b_ptr_aiocbNBYTE_MAXULONG;
}

b_param *b_ptr_aiocb::b_ptr_aiocbPRI_ZERO()
{
   return &_b_ptr_aiocbPRI_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbPRI_ONE()
{
   return &_b_ptr_aiocbPRI_ONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbPRI_NEGONE()
{
   return &_b_ptr_aiocbPRI_NEGONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbPRI_MAXINT()
{
   return &_b_ptr_aiocbPRI_MAXINT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbPRI_MININT()
{
   return &_b_ptr_aiocbPRI_MININT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbNONE_SIGSEGV()
{
   return &_b_ptr_aiocbNONE_SIGSEGV;
}

b_param *b_ptr_aiocb::b_ptr_aiocbSIGNAL_SIGSEGV()
{
   return &_b_ptr_aiocbSIGNAL_SIGSEGV;
}

b_param *b_ptr_aiocb::b_ptr_aiocbZERO_ZERO()
{
   return &_b_ptr_aiocbZERO_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbMAXINT_MAXINT()
{
   return &_b_ptr_aiocbMAXINT_MAXINT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOP_ZERO()
{
   return &_b_ptr_aiocbOP_ZERO;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOP_NEGONE()
{
   return &_b_ptr_aiocbOP_NEGONE;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOP_MAXINT()
{
   return &_b_ptr_aiocbOP_MAXINT;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOP_READ()
{
   return &_b_ptr_aiocbOP_READ;
}

b_param *b_ptr_aiocb::b_ptr_aiocbOP_WRITE()
{
   return &_b_ptr_aiocbOP_WRITE;
}

//--------------------------------------------------------------------
//---------------------------------------------------------------------------
//type name return method

b_param *CLASSNAME::typeName()
{
  return &_b_ptr_aiocbTYPENAME;
}

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
int CLASSNAME::distanceFromBase()
{
  return CLASSPARENT::distanceFromBase() +1;
}


//---------------------------------------------------------------------------
void CLASSNAME::typeList(b_param list[], int num)
{
  strcpy(list[num],(char *) typeName());
  CLASSPARENT::typeList(list,num+1);
}
//--------------------------------------------------------------------
  void *CLASSNAME::access(b_param data[])
{
  if (strcmp(data[0],(char *)typeName())!=0)
    return CLASSPARENT::access(data);

  //ACCESS CODE
b_ptr_aiocb_fd_open_read = 0;
b_ptr_aiocb_fd_open_write = 0;
b_ptr_aiocb_fd_open_append_empty = 0;
b_ptr_aiocb_fd_open_append_begin = 0;
b_ptr_aiocb_fd_open_append_eof = 0;
b_ptr_aiocb_fd_closed = 0;
b_ptr_aiocb_fd_deleted = 0;
b_ptr_aiocb_fd_zero = 0;
b_ptr_aiocb_fd_negone = 0;
b_ptr_aiocb_fd_one = 0;
b_ptr_aiocb_fd_maxint = 0;
b_ptr_aiocb_fd_minint = 0;
b_ptr_aiocb_fd_read_only = 0;
b_ptr_aiocb_offset_zero = 0;
b_ptr_aiocb_offset_one = 0;
b_ptr_aiocb_offset_negone = 0;
b_ptr_aiocb_offset_maxint = 0;
b_ptr_aiocb_offset_minint = 0;
b_ptr_aiocb_buf_null = 0;
b_ptr_aiocb_buf_filled_page = 0;
b_ptr_aiocb_buf_one_char = 0;
b_ptr_aiocb_buf_const = 0;
b_ptr_aiocb_nbyte_zero = 0;
b_ptr_aiocb_nbyte_one = 0;
b_ptr_aiocb_nbyte_maxulong = 0;
b_ptr_aiocb_pri_zero = 0;
b_ptr_aiocb_pri_one = 0;
b_ptr_aiocb_pri_negone = 0;
b_ptr_aiocb_pri_maxint = 0;
b_ptr_aiocb_pri_minint = 0;
b_ptr_aiocb_none_sigsegv = 0;
b_ptr_aiocb_signal_sigsegv = 0;
b_ptr_aiocb_zero_zero = 0;
b_ptr_aiocb_maxint_maxint = 0;
b_ptr_aiocb_op_zero = 0;
b_ptr_aiocb_op_negone = 0;
b_ptr_aiocb_op_maxint = 0;
b_ptr_aiocb_op_read = 0;
b_ptr_aiocb_op_write = 0;
   int dataPTR =0;


   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbFD_OPEN_READ)==0)
      b_ptr_aiocb_fd_open_read = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_OPEN_WRITE)==0)
      b_ptr_aiocb_fd_open_write = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_OPEN_APPEND_EMPTY)==0)
      b_ptr_aiocb_fd_open_append_empty = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_OPEN_APPEND_BEGIN)==0)
      b_ptr_aiocb_fd_open_append_begin = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_OPEN_APPEND_EOF)==0)
      b_ptr_aiocb_fd_open_append_eof = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_CLOSED)==0)
      b_ptr_aiocb_fd_closed = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_DELETED)==0)
      b_ptr_aiocb_fd_deleted = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_ZERO)==0)
      b_ptr_aiocb_fd_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_NEGONE)==0)
      b_ptr_aiocb_fd_negone = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_ONE)==0)
      b_ptr_aiocb_fd_one = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_MAXINT)==0)
      b_ptr_aiocb_fd_maxint = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_MININT)==0)
      b_ptr_aiocb_fd_minint = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbFD_READ_ONLY)==0)
      b_ptr_aiocb_fd_read_only = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"FD"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbOFFSET_ZERO)==0)
      b_ptr_aiocb_offset_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOFFSET_ONE)==0)
      b_ptr_aiocb_offset_one = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOFFSET_NEGONE)==0)
      b_ptr_aiocb_offset_negone = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOFFSET_MAXINT)==0)
      b_ptr_aiocb_offset_maxint = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOFFSET_MININT)==0)
      b_ptr_aiocb_offset_minint = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"OFFSET"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbBUF_NULL)==0)
      b_ptr_aiocb_buf_null = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbBUF_FILLED_PAGE)==0)
      b_ptr_aiocb_buf_filled_page = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbBUF_ONE_CHAR)==0)
      b_ptr_aiocb_buf_one_char = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbBUF_CONST)==0)
      b_ptr_aiocb_buf_const = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"BUFFER"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbNBYTE_ZERO)==0)
      b_ptr_aiocb_nbyte_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbNBYTE_ONE)==0)
      b_ptr_aiocb_nbyte_one = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbNBYTE_MAXULONG)==0)
      b_ptr_aiocb_nbyte_maxulong = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"NBYTES"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbPRI_ZERO)==0)
      b_ptr_aiocb_pri_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbPRI_ONE)==0)
      b_ptr_aiocb_pri_one = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbPRI_NEGONE)==0)
      b_ptr_aiocb_pri_negone = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbPRI_MAXINT)==0)
      b_ptr_aiocb_pri_maxint = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbPRI_MININT)==0)
      b_ptr_aiocb_pri_minint = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"REQPRIO"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbNONE_SIGSEGV)==0)
      b_ptr_aiocb_none_sigsegv = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbSIGNAL_SIGSEGV)==0)
      b_ptr_aiocb_signal_sigsegv = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbZERO_ZERO)==0)
      b_ptr_aiocb_zero_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbMAXINT_MAXINT)==0)
      b_ptr_aiocb_maxint_maxint = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"SIGEVENT"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

   dataPTR++;
if (strcmp(data[dataPTR],_b_ptr_aiocbOP_ZERO)==0)
      b_ptr_aiocb_op_zero = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOP_NEGONE)==0)
      b_ptr_aiocb_op_negone = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOP_MAXINT)==0)
      b_ptr_aiocb_op_maxint = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOP_READ)==0)
      b_ptr_aiocb_op_read = 1;
   else if (strcmp(data[dataPTR],_b_ptr_aiocbOP_WRITE)==0)
      b_ptr_aiocb_op_write = 1;
  else
    {
      cerr<<"Error: Unknown setting for the "
          <<"OPCODE"
          <<" dial of the data object "
          <<CLASS_STRING
          <<". "<<endl
          <<"The offending string is : "
          <<data[dataPTR]
          <<endl;
      exit(1);
    }

 mode_t permissionMode;
 int oflag;

 FILE* logFile = NULL;

 if ((logFile = fopen ("/tmp/templateLog.txt","a+")) == NULL)
 {
 exit(99);
 } 

 if (mkdir(TESTDIR,S_IRWXU|S_IRWXG|S_IRWXO)!=0) /* create test directory, u+rwx */
 {
 
 if (errno != EEXIST)
 {
 fprintf(logFile,"mkdir failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }
 }
 
 if (unlink (TESTFILE) != 0 )
 {
 if (errno != ENOENT)
 {
 fprintf(logFile,"unlink failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }
 }

 if((fd = open (TESTFILE, O_WRONLY | O_CREAT | O_TRUNC, 0644))==-1)
 {
 fprintf(logFile,"b_ptr_aiocb datatype not setup properly - open failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }

if (b_ptr_aiocb_fd_open_append_begin==1 || b_ptr_aiocb_fd_open_append_eof==1 || b_ptr_aiocb_fd_read_only==1)
{

 write (fd, "I am a test file.\n", 18);
 
}

 if (close (fd)!=0)
 {
 fprintf(logFile,"b_ptr_aiocb datatype not setup properly - close failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }
 permissionMode = S_IRWXU | S_IRWXG | S_IRWXO;

if (b_ptr_aiocb_fd_open_read==1 || b_ptr_aiocb_fd_read_only==1)
{

 oflag = O_RDONLY;
 
}

if (b_ptr_aiocb_fd_open_write==1)
{

 oflag = O_WRONLY | O_CREAT | O_TRUNC;
 
}

if (b_ptr_aiocb_fd_open_append_empty==1 || b_ptr_aiocb_fd_open_append_begin==1 || b_ptr_aiocb_fd_open_append_eof==1)
{

 oflag = O_RDWR | O_CREAT | O_APPEND;
 
}

if (b_ptr_aiocb_fd_read_only==1)
{

 permissionMode = S_IRUSR;
 
}

if (b_ptr_aiocb_fd_open_read==1 || b_ptr_aiocb_fd_open_write==1 || b_ptr_aiocb_fd_open_append_empty==1 || b_ptr_aiocb_fd_open_append_begin==1 || b_ptr_aiocb_fd_open_append_eof==1 || b_ptr_aiocb_fd_read_only==1)
{

 if ((fd = open(TESTFILE, oflag, permissionMode)) == -1)
 {
 fprintf(logFile,"b_ptr_aiocb datatype not setup properly - open failed\n");
 fclose(logFile);
 exit (99);
 }
 aiocb_temp.aio_fildes = fd;
 
}

if (b_ptr_aiocb_fd_deleted==1)
{

 aiocb_temp.aio_fildes = fd; 
 char buffer[128];
 if ((sprintf(buffer, "rm %s", TESTFILE)) <= 0)
 {
 fprintf(logFile,"b_fd datatype not setup properly - rm of the TESTFILE failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }
 system(buffer);
 
}

if (b_ptr_aiocb_fd_open_append_eof==1)
{

 int pos;
 if ((pos = lseek(fd, 0L, SEEK_END)) == -1L)
 {
 fprintf(logFile,"b_ptr_aiocb datatype not setup properly - lseek to end of file failed. Function not tested\n");
 fclose(logFile);
 exit(99);
 }
 
}

if (b_ptr_aiocb_fd_closed==1)
{

 aiocb_temp.aio_fildes = fd;
 
}

if (b_ptr_aiocb_fd_zero==1)
{

 aiocb_temp.aio_fildes = 0;
 
}

if (b_ptr_aiocb_fd_negone==1)
{

 aiocb_temp.aio_fildes = -1;
 
}

if (b_ptr_aiocb_fd_one==1)
{

 aiocb_temp.aio_fildes = 1;
 
}

if (b_ptr_aiocb_fd_maxint==1)
{

 aiocb_temp.aio_fildes = MAXINT;
 
}

if (b_ptr_aiocb_fd_minint==1)
{

 aiocb_temp.aio_fildes = -MAXINT;
 
}

if (b_ptr_aiocb_offset_zero==1)
{

 aiocb_temp.aio_offset = 0;
 
}

if (b_ptr_aiocb_offset_one==1)
{

 aiocb_temp.aio_offset = 1;
 
}

if (b_ptr_aiocb_offset_negone==1)
{

 aiocb_temp.aio_offset = -1;
 
}

if (b_ptr_aiocb_offset_maxint==1)
{

 aiocb_temp.aio_offset = MAXINT;
 
}

if (b_ptr_aiocb_offset_minint==1)
{

 aiocb_temp.aio_offset = -MAXINT;
 
}

if (b_ptr_aiocb_buf_null==1)
{

 aiocb_temp.aio_buf = NULL;
 
}

if (b_ptr_aiocb_buf_filled_page==1)
{

 int pagesize = getpagesize();
 buf_ptr = (char*) malloc(pagesize);
 int i;
 for (i = 0; i < (pagesize-1); i++)
 {
 buf_ptr[i] = 'a';
 }
 buf_ptr[pagesize -1] = '\0';

 aiocb_temp.aio_buf = (void*) buf_ptr;
 
}

if (b_ptr_aiocb_buf_one_char==1)
{

 buf_ptr = (char*) malloc(sizeof(char));
 aiocb_temp.aio_buf = (void*) buf_ptr;
 
}

if (b_ptr_aiocb_buf_const==1)
{

 aiocb_temp.aio_buf = (void*)" ";
 
}

if (b_ptr_aiocb_nbyte_zero==1)
{

 aiocb_temp.aio_nbytes = 0;
 
}

if (b_ptr_aiocb_nbyte_one==1)
{

 aiocb_temp.aio_nbytes = 1;
 
}

if (b_ptr_aiocb_nbyte_maxulong==1)
{

 aiocb_temp.aio_nbytes = 2*MAXLONG + 1;
 
}

if (b_ptr_aiocb_pri_zero==1)
{

 aiocb_temp.aio_reqprio = 0;
 
}

if (b_ptr_aiocb_pri_one==1)
{

 aiocb_temp.aio_reqprio = 1;
 
}

if (b_ptr_aiocb_pri_negone==1)
{

 aiocb_temp.aio_reqprio = -1;
 
}

if (b_ptr_aiocb_pri_maxint==1)
{

 aiocb_temp.aio_reqprio = MAXINT;
 
}

if (b_ptr_aiocb_pri_minint==1)
{

 aiocb_temp.aio_reqprio = -MAXINT;
 
}

if (b_ptr_aiocb_none_sigsegv==1)
{

 aiocb_temp.aio_sigevent.sigev_notify = SIGEV_NONE;
 aiocb_temp.aio_sigevent.sigev_signo = SIGSEGV;
 
}

if (b_ptr_aiocb_signal_sigsegv==1)
{

 aiocb_temp.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
 aiocb_temp.aio_sigevent.sigev_signo = SIGSEGV; 
 
}

if (b_ptr_aiocb_zero_zero==1)
{

 aiocb_temp.aio_sigevent.sigev_notify = 0;
 aiocb_temp.aio_sigevent.sigev_signo = 0; 
 
}

if (b_ptr_aiocb_maxint_maxint==1)
{

 aiocb_temp.aio_sigevent.sigev_notify = MAXINT;
 aiocb_temp.aio_sigevent.sigev_signo = MAXINT; 
 
}

if (b_ptr_aiocb_op_zero==1)
{

 aiocb_temp.aio_lio_opcode = 0;
 
}

if (b_ptr_aiocb_op_negone==1)
{

 aiocb_temp.aio_lio_opcode = -1;
 
}

if (b_ptr_aiocb_op_maxint==1)
{

 aiocb_temp.aio_lio_opcode = MAXINT;
 
}

if (b_ptr_aiocb_op_read==1)
{

 aiocb_temp.aio_lio_opcode = LIO_READ;
 
}

if (b_ptr_aiocb_op_write==1)
{

 aiocb_temp.aio_lio_opcode = LIO_WRITE;
 
}

 cp_bufPtr = buf_ptr; 
 _theVariable = &aiocb_temp;
   return &_theVariable;
}

//--------------------------------------------------------------------
  int CLASSNAME::commit(b_param tname)
{
  if (strcmp(tname,(char *)typeName())!=0)
    return CLASSPARENT::commit(tname);
  //COMMIT CODE HERE
//generated
   return 0;
}

//--------------------------------------------------------------------
  int CLASSNAME::cleanup(b_param tname)
{
  if (strcmp(tname,(char *)typeName())!=0)
    return CLASSPARENT::cleanup(tname);
      
  //CLEANUP CODE
//generated

if (b_ptr_aiocb_fd_open_read==1 || b_ptr_aiocb_fd_open_write==1 || b_ptr_aiocb_fd_open_append_empty==1 || b_ptr_aiocb_fd_open_append_begin==1 || b_ptr_aiocb_fd_open_append_eof==1 || b_ptr_aiocb_fd_read_only==1)
{

 close(fd);
 
}

 system("rm -f testdir/testfile_aiocb");
 system("rm -rf testdir"); 

if (b_ptr_aiocb_buf_filled_page==1 || b_ptr_aiocb_buf_one_char==1)
{

 free(cp_bufPtr);
 
}
   return 0;
}

//--------------------------------------------------------------------
int CLASSNAME::numDials(b_param tname)
{
  if (!strcmp(tname,(char *)typeName()))
    return NUMBER_OF_DIALS;
  else return CLASSPARENT::numDials(tname);
      
}


//---------------------------------------------------------------------------
int CLASSNAME::numItems(b_param tname,int dialNumber)
{
  if (strcmp(tname,(char *)typeName())!=0)
    return CLASSPARENT::numItems(tname,dialNumber);
  switch (dialNumber)
    {
      //NUMITEMS SWITCH CASES HERE
      //generated

   case 1:
      return 13;
      break;

   case 2:
      return 5;
      break;

   case 3:
      return 4;
      break;

   case 4:
      return 3;
      break;

   case 5:
      return 5;
      break;

   case 6:
      return 4;
      break;

   case 7:
      return 5;
      break;
//---------------------------------------------------------------------------
      //end generated

    default:
      cerr<<"Error, invalid dial number passed to "
          <<CLASS_STRING<<"::numItems\n"
          <<"Please check declaration files.  Dial number passed was "
          <<dialNumber<<endl;
      exit(1);
    }
  return 0;
}

//---------------------------------------------------------------------------
b_param *CLASSNAME::paramName(b_param tname,
                                   int dialNumber,
                                   int position)

{
  if (strcmp(tname,(char *)typeName())!=0)
    return CLASSPARENT::paramName(tname,dialNumber,position);
  
  switch (dialNumber)
    {
      //PARAMNAME SWITCH CASES HERE
      //generated

case 1:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbFD_OPEN_READ();
         break;
      case 2:
         return b_ptr_aiocbFD_OPEN_WRITE();
         break;
      case 3:
         return b_ptr_aiocbFD_OPEN_APPEND_EMPTY();
         break;
      case 4:
         return b_ptr_aiocbFD_OPEN_APPEND_BEGIN();
         break;
      case 5:
         return b_ptr_aiocbFD_OPEN_APPEND_EOF();
         break;
      case 6:
         return b_ptr_aiocbFD_CLOSED();
         break;
      case 7:
         return b_ptr_aiocbFD_DELETED();
         break;
      case 8:
         return b_ptr_aiocbFD_ZERO();
         break;
      case 9:
         return b_ptr_aiocbFD_NEGONE();
         break;
      case 10:
         return b_ptr_aiocbFD_ONE();
         break;
      case 11:
         return b_ptr_aiocbFD_MAXINT();
         break;
      case 12:
         return b_ptr_aiocbFD_MININT();
         break;
      case 13:
         return b_ptr_aiocbFD_READ_ONLY();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 2:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbOFFSET_ZERO();
         break;
      case 2:
         return b_ptr_aiocbOFFSET_ONE();
         break;
      case 3:
         return b_ptr_aiocbOFFSET_NEGONE();
         break;
      case 4:
         return b_ptr_aiocbOFFSET_MAXINT();
         break;
      case 5:
         return b_ptr_aiocbOFFSET_MININT();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 3:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbBUF_NULL();
         break;
      case 2:
         return b_ptr_aiocbBUF_FILLED_PAGE();
         break;
      case 3:
         return b_ptr_aiocbBUF_ONE_CHAR();
         break;
      case 4:
         return b_ptr_aiocbBUF_CONST();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 4:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbNBYTE_ZERO();
         break;
      case 2:
         return b_ptr_aiocbNBYTE_ONE();
         break;
      case 3:
         return b_ptr_aiocbNBYTE_MAXULONG();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 5:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbPRI_ZERO();
         break;
      case 2:
         return b_ptr_aiocbPRI_ONE();
         break;
      case 3:
         return b_ptr_aiocbPRI_NEGONE();
         break;
      case 4:
         return b_ptr_aiocbPRI_MAXINT();
         break;
      case 5:
         return b_ptr_aiocbPRI_MININT();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 6:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbNONE_SIGSEGV();
         break;
      case 2:
         return b_ptr_aiocbSIGNAL_SIGSEGV();
         break;
      case 3:
         return b_ptr_aiocbZERO_ZERO();
         break;
      case 4:
         return b_ptr_aiocbMAXINT_MAXINT();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;

case 7:
 switch (position)
   {
      case 1:
         return b_ptr_aiocbOP_ZERO();
         break;
      case 2:
         return b_ptr_aiocbOP_NEGONE();
         break;
      case 3:
         return b_ptr_aiocbOP_MAXINT();
         break;
      case 4:
         return b_ptr_aiocbOP_READ();
         break;
      case 5:
         return b_ptr_aiocbOP_WRITE();
         break;

      default:
          cerr<<"Error, invalid position number passed to "
              <<CLASS_STRING<<"::paramName\n"
              <<"Please check declaration files.  Dial number passed was"
              <<dialNumber<<" position "<<position<<".\n";
          exit(1);
   }
   break;
    default:
      cerr<<"Error, invalid dial number passed to "
          <<CLASS_STRING<<"::paramName\n"
          <<"Please check declaration files.  Dial number passed was "
          <<dialNumber<<endl;
      exit(1);

    }
  return NULL;
}

//---------------------------------------------------------------------------
