Pointwise Plugin SDK
Macros | Typedefs | Functions
pwpPlatform.cxx File Reference
#include <cstdlib>
#include <memory>
#include <string.h>
#include <sys/stat.h>
#include <vector>
#include <stdlib.h>
#include "apiUtils.h"
#include "pwpPlatform.h"
+ Include dependency graph for pwpPlatform.cxx:

Go to the source code of this file.

Macros

#define chrAPPEND(p, c)   ((nullptr != p) ? (*p++ = c) : 0)
 
#define FILENAME_MAX   512
 
#define isMODE(allBits, modeBits)   (((allBits) & (modeBits)) == modeBits)
 
#define strOK(ss)   ((nullptr != ss) && ('\0' != ss[0]))
 
#define sysBinaryMode   'b'
 
#define sysFileno(fp)   fileno(fp)
 
#define sysFstat   fstat
 
#define sysGetCwd()   ::getcwd(0, FILENAME_MAX)
 
#define sysTextMode   '\0'
 

Typedefs

using DirUniquePtr = std::unique_ptr< char, decltype(free) * >
 
using SysStatBuf = struct stat
 

Functions

int pwpCwdPop (void)
 Restore the current directory. More...
 
int pwpCwdPush (const char *dir)
 Change the current directory using a stack. More...
 
int pwpFileClose (FILE *fp)
 Closes a file opened with pwpFileOpen(). More...
 
int pwpFileDelete (const char *filename)
 Delete a file. More...
 
int pwpFileEof (FILE *fp)
 Queries end-of-file status. More...
 
int pwpFileFlush (FILE *fp)
 Flush a file to disk. More...
 
int pwpFileGetpos (FILE *fp, sysFILEPOS *pos)
 Query the current file position. More...
 
int pwpFileGetSize (FILE *fp, size_t *size)
 Get the file's size in bytes. More...
 
int pwpFilenameGetSize (const char *filename, size_t *size)
 Get the file's size in bytes. More...
 
FILE * pwpFileOpen (const char *filename, int mode)
 Opens a file for I/O. More...
 
size_t pwpFileRead (void *buf, size_t size, size_t count, FILE *fp)
 Read an collection of data items from a file. More...
 
void pwpFileRewind (FILE *fp)
 Reset position to the beginning of the file. More...
 
int pwpFileSetpos (FILE *fp, const sysFILEPOS *pos)
 Set the current file position. More...
 
size_t pwpFileWrite (const void *buf, size_t size, size_t count, FILE *fp)
 Write an collection of data items to a file. More...
 
size_t pwpFileWriteStr (const char *str, FILE *fp)
 Write a null-terminated string to a file. More...
 
int pwpSetCurDir (const char *dir)
 Change the current directory. More...
 

Macro Definition Documentation

◆ chrAPPEND

#define chrAPPEND (   p,
 
)    ((nullptr != p) ? (*p++ = c) : 0)

Definition at line 55 of file pwpPlatform.cxx.

◆ FILENAME_MAX

#define FILENAME_MAX   512

Definition at line 60 of file pwpPlatform.cxx.

◆ isMODE

#define isMODE (   allBits,
  modeBits 
)    (((allBits) & (modeBits)) == modeBits)

Definition at line 57 of file pwpPlatform.cxx.

◆ strOK

#define strOK (   ss)    ((nullptr != ss) && ('\0' != ss[0]))

Definition at line 54 of file pwpPlatform.cxx.

◆ sysBinaryMode

#define sysBinaryMode   'b'

Definition at line 43 of file pwpPlatform.cxx.

◆ sysFileno

#define sysFileno (   fp)    fileno(fp)

Definition at line 44 of file pwpPlatform.cxx.

◆ sysFstat

#define sysFstat   fstat

Definition at line 45 of file pwpPlatform.cxx.

◆ sysGetCwd

#define sysGetCwd ( )    ::getcwd(0, FILENAME_MAX)

Definition at line 46 of file pwpPlatform.cxx.

◆ sysTextMode

#define sysTextMode   '\0'

Definition at line 42 of file pwpPlatform.cxx.

Typedef Documentation

◆ DirUniquePtr

using DirUniquePtr = std::unique_ptr<char, decltype(free)*>

Definition at line 49 of file pwpPlatform.cxx.

◆ SysStatBuf

using SysStatBuf = struct stat

Definition at line 48 of file pwpPlatform.cxx.

Function Documentation

◆ pwpCwdPop()

int pwpCwdPop ( void  )

Restore the current directory.

This call is only valid after calling pwpCwdPush().

Returns
0 on success, -1 on error.
See also
pwpCwdPush(), pwpSetCurDir()

Definition at line 486 of file pwpPlatform.cxx.

References pwpCwdPush().

Referenced by caeuFileClose(), caeuFileOpen(), PwpCwd::popDir(), and PwCaeGridWrite().

◆ pwpCwdPush()

int pwpCwdPush ( const char *  dir)

Change the current directory using a stack.

Before changing the cwd, the current directory is pushed onto a stack and can be restored by calling pwpCwdPop().

Parameters
dirThe directory to change to.
Returns
0 on success, -1 on error.
See also
pwpCwdPop(), pwpSetCurDir()

Definition at line 461 of file pwpPlatform.cxx.

References pwpSetCurDir(), strOK, and sysGetCwd.

Referenced by caeuFileOpen(), fileDestCwdPush(), PwpCwd::pushDir(), and pwpCwdPop().

◆ pwpFileClose()

int pwpFileClose ( FILE *  fp)

Closes a file opened with pwpFileOpen().

Parameters
fpA file pointer obtained from pwpFileOpen().
Returns
0 on success, sysEOF on error.
See also
pwpFileOpen()

Definition at line 285 of file pwpPlatform.cxx.

References sysEOF.

Referenced by caeuFileClose(), and PwpFile::close().

◆ pwpFileDelete()

int pwpFileDelete ( const char *  filename)

Delete a file.

Parameters
filenameThe name of an existing file to delete.

Definition at line 429 of file pwpPlatform.cxx.

References strOK.

Referenced by caeuFileClose(), and PwpFile::unlink().

◆ pwpFileEof()

int pwpFileEof ( FILE *  fp)

Queries end-of-file status.

Parameters
fpA file pointer obtained from pwpFileOpen().
Returns
!0 if fp is at end-of-file.

Definition at line 296 of file pwpPlatform.cxx.

Referenced by PwpFile::isEof().

◆ pwpFileFlush()

int pwpFileFlush ( FILE *  fp)

Flush a file to disk.

Parameters
fpA file pointer obtained from pwpFileOpen().
Returns
0 on success, sysEOF on error.

Definition at line 303 of file pwpPlatform.cxx.

Referenced by PwpFile::flush().

◆ pwpFileGetpos()

int pwpFileGetpos ( FILE *  fp,
sysFILEPOS pos 
)

Query the current file position.

Parameters
fpA file pointer obtained from pwpFileOpen().
posPointer to a sysFILEPOS object.
Returns
0 on success, !0 on error.
See also
pwpFileSetpos()

Definition at line 310 of file pwpPlatform.cxx.

Referenced by PwpFile::getPos(), PwuUnfRecBegin(), and PwuUnfRecEnd().

◆ pwpFileGetSize()

int pwpFileGetSize ( FILE *  fp,
size_t *  size 
)

Get the file's size in bytes.

Parameters
fpA valid file pointer obtained from pwpFileOpen().
sizePointer to the size variable.
Returns
0 on success, !0 on error.

Definition at line 332 of file pwpPlatform.cxx.

References ASSERT_COMPILE(), sysFileno, and sysFstat.

Referenced by PwpFile::getSize().

◆ pwpFilenameGetSize()

int pwpFilenameGetSize ( const char *  filename,
size_t *  size 
)

Get the file's size in bytes.

Parameters
filenameThe name of an existing file.
sizePointer to the size variable.
Returns
0 on success, !0 on error.

Definition at line 353 of file pwpPlatform.cxx.

Referenced by PwpFile::getSize().

◆ pwpFileOpen()

FILE* pwpFileOpen ( const char *  filename,
int  mode 
)

Opens a file for I/O.

Parameters
filenameThe name of file to open.
modeControls how the file is opened. This value is built from the bitwise OR of 2 sysFILEMODE flags.
Returns
Pointer to the file or 0 if file could not be opened.
See also
sysFILEMODE, pwpFileClose()

Definition at line 230 of file pwpPlatform.cxx.

References chrAPPEND, isMODE, pwpAppend, pwpAscii, pwpBinary, pwpFormatted, pwpRead, pwpUnformatted, pwpWrite, strOK, sysBinaryMode, and sysTextMode.

Referenced by PwpFile::open(), and openFileName().

◆ pwpFileRead()

size_t pwpFileRead ( void *  buf,
size_t  size,
size_t  count,
FILE *  fp 
)

Read an collection of data items from a file.

Parameters
bufPointer to the read buffer.
sizeThe size of each item.
countThe number of items to read.
fpA file pointer obtained from pwpFileOpen().
Returns
The number of full items read. Will be < count on an error.

Definition at line 391 of file pwpPlatform.cxx.

Referenced by PwpFile::checkAscii(), and PwpFile::read().

◆ pwpFileRewind()

void pwpFileRewind ( FILE *  fp)

Reset position to the beginning of the file.

Parameters
fpA file pointer obtained from pwpFileOpen().
See also
pwpFileSetpos(), pwpFileGetpos()

Definition at line 420 of file pwpPlatform.cxx.

Referenced by PwpFile::rewind().

◆ pwpFileSetpos()

int pwpFileSetpos ( FILE *  fp,
const sysFILEPOS pos 
)

Set the current file position.

Parameters
fpA file pointer obtained from pwpFileOpen().
posPointer to an sysFILEPOS object obtained from a call to pwpFileGetpos().
Returns
0 on success, !0 on error.
See also
pwpFileGetpos()

Definition at line 321 of file pwpPlatform.cxx.

Referenced by PwuUnfRecEnd(), PwpFile::setIntPos(), and PwpFile::setPos().

◆ pwpFileWrite()

size_t pwpFileWrite ( const void *  buf,
size_t  size,
size_t  count,
FILE *  fp 
)

Write an collection of data items to a file.

Parameters
bufPointer to the buffer to write.
sizeThe size of each item.
countThe number of items to write.
fpA file pointer obtained from pwpFileOpen().
Returns
The number of full items written. Will be < count on an error.

Definition at line 402 of file pwpPlatform.cxx.

Referenced by pwpFileWriteStr(), PwuUnfRecWriteArr(), unfHdrLenWrite(), PwpBinaryWriter::write(), PwpFile::writeAt(), PwpBinaryWriter::writeOrdered(), and PwpAnchoredFileValueWriter< ValType >::writeUnf().

◆ pwpFileWriteStr()

size_t pwpFileWriteStr ( const char *  str,
FILE *  fp 
)

Write a null-terminated string to a file.

Parameters
strThe string to write. The null-byte is not written.
fpA file pointer obtained from pwpFileOpen().
Returns
1 on success, 0 on error.

Definition at line 413 of file pwpPlatform.cxx.

References pwpFileWrite().

◆ pwpSetCurDir()

int pwpSetCurDir ( const char *  dir)

Change the current directory.

Changes the cwd without first saving current directory to stack. Typically, a plugin should instead use pwpCwdPush() and pwpCwdPop().

Parameters
dirThe directory to change to.
Returns
0 on success, -1 on error.
See also
pwpCwdPush(), pwpCwdPop()

Definition at line 450 of file pwpPlatform.cxx.

References pwpSetCurDir().

Referenced by pwpCwdPush(), and pwpSetCurDir().