Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Typedefs | Functions | Variables
testprstrm.cpp File Reference
#include "prinit.h"
#include "prstrms.h"
#include "prio.h"
#include <string.h>
#include <stdio.h>

Go to the source code of this file.

Classes

struct  threadarg

Defines

#define STACKSIZE   1024*1024

Typedefs

typedef struct threadarg threadarg

Functions

void threadwork (void *mytag)
void threadmain (void *mytag)
int main (int argc, char **argv)
 The Xalan testcases app.

Variables

const unsigned int MaxCnt = 1

Class Documentation

struct threadarg

Definition at line 53 of file testprstrm.cpp.

Class Members
void * mytag

Define Documentation

#define STACKSIZE   1024*1024

Definition at line 171 of file testprstrm.cpp.


Typedef Documentation

typedef struct threadarg threadarg

Function Documentation

int main ( int  argc,
char **  argv 
)

The Xalan testcases app.

Definition at line 173 of file testprstrm.cpp.

Here is the call graph for this function:

void threadmain ( void mytag)

Definition at line 61 of file testprstrm.cpp.

{
    threadarg arg;

    arg.mytag = mytag;

    threadwork(&arg);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void threadwork ( void mytag)

Definition at line 72 of file testprstrm.cpp.

{
       threadarg *arg = (threadarg *)_arg;
       unsigned int i;

       char fname1[256];
       char fname2[256];

       strcpy(fname1, (char *)arg->mytag);
       strcpy(fname2, (char *)arg->mytag);
       strcat(fname2, "2");
       PR_Delete(fname1);
       PR_Delete(fname2);

       PRfilebuf *fb[MaxCnt];
       PRifstream *ifs[MaxCnt];
       PRofstream *ofs[MaxCnt];
       int mode = 0;
#ifdef XP_UNIX
       mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IRGRP|S_IWOTH|S_IROTH;
#endif

       //
       // Allocate a bunch
       cout << "Testing unused filebufs ----------------" << endl;
       for (i=0; i < MaxCnt; i++){
              fb[i] = new PRfilebuf;
       }
       // Delete them
       for (i=0; i < MaxCnt; i++){
              delete fb[i];
       }
       cout << "Unused filebufs complete ---------------" << endl;

       //
       // Allocate a bunch
       cout << "Testing unused ifstream -----------------" << endl;
       for (i=0; i < MaxCnt; i++){
         ifs[i] = new PRifstream;
       }
       //
       // Delete them
       for (i=0; i < MaxCnt; i++){
         delete ifs[i];
       }
       cout << "Unused ifstream complete ----------------" << endl;
       //
       // Allocate a bunch
       cout << "Testing unused ofstream -----------------" << endl;
       for (i=0; i < MaxCnt; i++){
              ofs[i] = new PRofstream;
       }
       for (i=0; i < MaxCnt; i++){
         *(ofs[i]) << "A"; // Write a bit
         delete ofs[i]; // Delete it.
       }
       cout << "Unused ofstream complete ----------------" << endl;

       cout << "Testing use of ofstream 1 (extra filebuf allocated) ---------" << endl;
       PRofstream *aos = new PRofstream(fname1, ios::out|ios::ate, mode);
       for (i=0; i < MaxCnt; i++){
         for (int j=0; j < 8192; j++)
              *aos << "AaBbCcDdEeFfGg" << endl;
              fb[i] = new PRfilebuf; // Allocate as we go to hack at the heap
       }
       //
       // Delete the extra foo we allocated
       for (i=0; i < MaxCnt; i++){
         delete fb[i];
       }
       aos->flush(); // Explicit flush
       delete aos;
       cout << "Testing use of ofstream 1 complete (extra filebuf deleted) --" << endl;
       cout << "Testing use of ofstream 2 (extra filebuf allocated) ---------" << endl;
       PRofstream *aos2 = new PRofstream(fname2, ios::out, mode);

       for (i=0; i < MaxCnt; i++){
           *aos2 << "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
       }
       // Force flushing in the dtor
       delete aos2;
       cout << "Testing use of ofstream 2 complete (extra filebuf deleted) --" << endl;
       char line[1024];
       cout << "Testing use of ifstream 1 (stack allocation) -------------" << endl;
       PRifstream ais(fname1);
       for (i=0; i < MaxCnt; i++){
              ais >> line;
       }
       cout << "Testing use of ifstream 1 complete -----------------------" << endl;
       cout << "Testing use of ifstream 2 ----------------------" << endl;
       PRifstream *ais2 = new PRifstream(fname2);
       char achar;
       for (i=0; i < MaxCnt*10; i++){
              *ais2 >> achar;
       }
       delete ais2;
       cout << "Testing use of ifstream 2 complete -------------" << endl;
}

Here is the caller graph for this function:


Variable Documentation

const unsigned int MaxCnt = 1

Definition at line 48 of file testprstrm.cpp.