/***********************************************************************
*
* ELMER, A Computational Fluid Dynamics Program.
*
* Copyright 1st April 1995 - , Center for Scientific Computing,
* Finland.
*
* All rights reserved. No part of this program may be used,
* reproduced or transmitted in any form or by any means
* without the written permission of CSC.
*
* Address: Center for Scientific Computing
* Tietotie 6, P.O. BOX 405
* 02101 Espoo, Finland
* Tel. +358 0 457 2001
* Telefax: +358 0 457 2302
* EMail: Jari.Jarvinen@csc.fi
************************************************************************/
/***********************************************************************
Program: ELMER model file (emf) reader defs
Module: front_CPPdefs.h
Language: C++
Date: 01.10.98
Version: 1.00
Author(s): Martti Verho
Revisions:
Abstract: Header file for the C++ interface for reading emf-files.
************************************************************************/
#ifndef _FRONT_DEFS_
#define _FRONT_DEFS_
extern "C" {
#include "front_Cdefs.h"
}
// =========================
// LibFront namespace starts
//==========================
namespace LibFront {
// Data value types
// ================
enum dataValueType {
EMF_INTEGER, EMF_REAL, EMF_LOGICAL, EMF_STRING, EMF_FILE
};
// Get numeric value data array
extern void setNumericData(bool*& target);
extern void setNumericData(int*& target);
extern void setNumericData(long*& target);
extern void setNumericData(float*& target);
extern void setNumericData(double*& target);
extern void setStringData(char*& buffer);
// Get numeric value from data values array by index
extern void setNumericData(bool& target, int value_index);
extern void setNumericData(int& target, int value_index);
extern void setNumericData(long& target, int value_index);
extern void setNumericData(float& target, int value_index);
extern void setNumericData(double& target, int value_index);
extern void setStringData(char* buffer, int value_index);
extern void setStringData(int nof_strings, char**& data_strings);
// Get numeric value from variable values array by index
extern void setNumericVariable(bool& target, int value_index);
extern void setNumericVariable(int& target, int value_index);
extern void setNumericVariable(long& target, int value_index);
extern void setNumericVariable(float& target, int value_index);
extern void setNumericVariable(double& target, int value_index);
extern void setStringVariable(char* buffer, int value_index);
// Misc utilities
// ==============
// A shorthand for isName(..)
bool in(const char* field_name, const char* test_name);
// Utilities for indented output
extern char* indent(short indent_size, short indent_level);
extern ostream& indent(ostream& out, short indent_size, short indent_level);
// String utilities
extern bool is_number(const char* str);
extern bool nocase_equal(char* str1, char* str2);
extern bool nocase_equal_partial(char* str1, char* str2);
extern void trim(char* buffer);
extern void trim_left(char* buffer);
extern void trim_right(char* buffer);
// Data output functions
// =====================
// Simple utility for debugging
extern ostream&
output_data(ostream& out, char* data_type, void* data);
// Output field name properly indented
// -----------------------------------
extern ostream&
output_string(ostream& out, short indent_size, short indent_level,
const char* str, bool output_eol = true);
// Output named scalar data
// ------------------------
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const bool data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const short data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const int data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const long data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const float data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const double data);
extern ostream&
output_scalar(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
const char* data, bool quoted = true);
// Output named vector data
// ------------------------
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const bool* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const short* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const int* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const long* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const float* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const double* data, bool output_size = true);
extern ostream&
output_vector(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim, const char** data, bool output_size = true, bool quoted = true);
// Output named table data (dim1*dim2)
// -----------------------------------
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const bool** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const short** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const int** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const long** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const float** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const double** data);
extern ostream&
output_table(ostream& out, short indent_size, short indent_level,
const char* field_name, const char* field_type,
int dim1, int dim2, const char*** data, bool quoted = true);
}
//=====================
//End namespace LibFront
#endif
syntax highlighted by Code2HTML, v. 0.9.1