FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CNFData.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 /*
6  CNFData Ver. 3.6
7 */
8 
9 #ifndef CNFDataH
10 #define CNFDataH
11 
12 #ifndef TRUE
13 #define TRUE 1
14 #define FALSE 0
15 #endif
16 
17 #include <set>
18 #include <assert.h>
19 #include <stdio.h>
20 #include <string.h>
21 
22 #include "CNFMessage.h"
23 #include "CNFDataBlock.h"
24 #include "CNFDB_100.h"
25 #include "CNFDB_402.h"
26 #include "CNFDB_403.h"
27 #include "CNFDB_404.h"
28 #include "CNFDB_405.h"
29 #include "CNFDB_408.h"
30 #include "CNFDB_506.h"
31 #include "CNFDB_507.h"
32 #include "CNFDB_601.h"
33 
34 const double DefaultCNFDataVersion = 8.0;
35 
36 // results of ReadLine method
37 const int READLINE_SUCESS = 1;
38 const int READLINE_SEPARATOR = -1;
39 const int READLINE_EOF = -2;
40 const int READLINE_ERROR = 0;
41 
43 const int NFD_SupportedBlockList[] = {100, 402, 403, 404, 405,
44  408, 506, 507, 601};
45 
46 class CNFData {
47  public:
48  double version; // set by instance of CNFDB_100
49  char title[256]; // set by instance of CNFDB_100
50 
51  CNFData();
52  CNFData(const char* fname);
53  virtual ~CNFData();
54 
55  virtual void Clear();
56  virtual void Load(const char* fname);
57  virtual void Save(const char* fname);
58 
59  public:
60 //-----------------------------------------------------
61 // Individual DataBlock Storage and Utilities
62 // CAUTION) No storage for CNFDB_100
63 //-----------------------------------------------------
64 
65 #define GENRATE_CODE(x) \
66  std::vector<CNFDB_##x*> DB_##x; \
67  void Clear_##x();
68 
69  GENRATE_CODE(402)
70  GENRATE_CODE(403)
71  GENRATE_CODE(404)
72  GENRATE_CODE(405)
73  GENRATE_CODE(408)
74  GENRATE_CODE(506)
75  GENRATE_CODE(507)
76  GENRATE_CODE(601)
77 #undef GENRATE_CODE
78 
79  public:
80  //-----------------------------------------------------
81  // DataBlock Utilities
82  //-----------------------------------------------------
83  virtual CNFDataBlock* CreateDataBlock(int block_id);
84  virtual void StoreDataBlock(CNFDataBlock* block);
85  virtual void SkipDataBlock();
86  //-----------------------------------------------------
87  // Basic Input/Output Methods
88  //-----------------------------------------------------
89  char neu_file[256];
90  FILE* log_fp;
91  FILE* fp;
92  int line;
93  char line_buff[512];
95  // fmt: I:integer, B:bool, F:float
96  int EndOfFile() { return feof(fp); }
97  void ReadRecStart(char* buff);
98  int ReadRecNext(char type, void* value);
99  void ReadRecord(char* buff, const char* fmt, ...);
100  int ReadLine(char* buff, int size = 255);
101  void ReadLineEx(char* buff, int size = 255);
102  void ReadStr(char* buff, char* s, int size);
103  void PushBackLine(char* buff);
104  void ReadMultRec(char type, int n_in_rec, int val_n, void* val);
105 
106  void WriteStr(FILE* fp, const char* s);
107  void WriteData(FILE* fp, const char* fmt, ...);
108  void WriteBlockSeparator(FILE* fp);
109 
110  bool WriteDataBlock(FILE* fp, int id);
111 
112  //-----------------------------------------------------
113  // Report Status
114  //-----------------------------------------------------
115  void WriteSummary(FILE* fp = 0);
116 
117  protected:
118  char rec_buff[256];
121 
122  virtual void PrintMessage(const char* msg);
123 
124  protected:
126 };
127 
128 #endif
CNFData::ReadRecord
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308
CNFMessage.h
CNFData::non_supported_block_list
std::set< int > non_supported_block_list
Definition: CNFData.h:125
CNFData::log_fp
FILE * log_fp
Definition: CNFData.h:90
CNFDB_405.h
CNFData::WriteBlockSeparator
void WriteBlockSeparator(FILE *fp)
Definition: CNFData.cpp:533
CNFDB_404.h
CNFData::StoreDataBlock
virtual void StoreDataBlock(CNFDataBlock *block)
Definition: CNFData.cpp:207
CNFDataBlock
Definition: CNFDataBlock.h:24
CNFData::line
int line
Definition: CNFData.h:92
CNFData::fg_rec_first
int fg_rec_first
Definition: CNFData.h:119
CNFData::WriteStr
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
CNFDB_506.h
CNFDB_408.h
CNFData::Clear
virtual void Clear()
Definition: CNFData.cpp:30
CNFDB_403.h
CNFData::version
double version
Definition: CNFData.h:48
READLINE_ERROR
const int READLINE_ERROR
Definition: CNFData.h:40
CNFData::Save
virtual void Save(const char *fname)
Definition: CNFData.cpp:152
CNFData::ReadRecStart
void ReadRecStart(char *buff)
Definition: CNFData.cpp:259
CNFDataBlock.h
CNFData::PrintMessage
virtual void PrintMessage(const char *msg)
Definition: CNFData.cpp:247
NFD_SupportedBlockListSize
const int NFD_SupportedBlockListSize
Definition: CNFData.h:42
CNFData::PushBackLine
void PushBackLine(char *buff)
Definition: CNFData.cpp:389
CNFData::fp
FILE * fp
Definition: CNFData.h:91
CNFData::line_buff
char line_buff[512]
Definition: CNFData.h:93
READLINE_EOF
const int READLINE_EOF
Definition: CNFData.h:39
READLINE_SUCESS
const int READLINE_SUCESS
Definition: CNFData.h:37
READLINE_SEPARATOR
const int READLINE_SEPARATOR
Definition: CNFData.h:38
CNFData::WriteDataBlock
bool WriteDataBlock(FILE *fp, int id)
Definition: CNFData.cpp:535
CNFDB_402.h
CNFData::ReadLine
int ReadLine(char *buff, int size=255)
Definition: CNFData.cpp:336
CNFData::ReadLineEx
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
CNFData
Definition: CNFData.h:46
CNFData::ReadMultRec
void ReadMultRec(char type, int n_in_rec, int val_n, void *val)
Definition: CNFData.cpp:394
CNFData::CreateDataBlock
virtual CNFDataBlock * CreateDataBlock(int block_id)
Definition: CNFData.cpp:184
CNFData::WriteData
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
CNFData::WriteSummary
void WriteSummary(FILE *fp=0)
Definition: CNFData.cpp:581
CNFData::ReadStr
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
CNFData::~CNFData
virtual ~CNFData()
Definition: CNFData.cpp:28
CNFData::Load
virtual void Load(const char *fname)
Definition: CNFData.cpp:66
NFD_SupportedBlockList
const int NFD_SupportedBlockList[]
Definition: CNFData.h:43
CNFData::title
char title[256]
Definition: CNFData.h:49
CNFData::SkipDataBlock
virtual void SkipDataBlock()
Definition: CNFData.cpp:235
CNFData::CNFData
CNFData()
Definition: CNFData.cpp:15
CNFData::EndOfFile
int EndOfFile()
Definition: CNFData.h:96
DefaultCNFDataVersion
const double DefaultCNFDataVersion
Definition: CNFData.h:34
CNFData::ReadRecNext
int ReadRecNext(char type, void *value)
Definition: CNFData.cpp:265
CNFData::fg_line_buff_empty
int fg_line_buff_empty
Definition: CNFData.h:94
GENRATE_CODE
#define GENRATE_CODE(x)
Definition: CNFData.h:65
CNFDB_100.h
CNFDB_601.h
CNFData::rec_buff
char rec_buff[256]
Definition: CNFData.h:118
CNFData::neu_file
char neu_file[256]
Definition: CNFData.h:89
CNFData::rec_column
int rec_column
Definition: CNFData.h:120
CNFDB_507.h