FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
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
34const double DefaultCNFDataVersion = 8.0;
35
36// results of ReadLine method
37const int READLINE_SUCESS = 1;
38const int READLINE_SEPARATOR = -1;
39const int READLINE_EOF = -2;
40const int READLINE_ERROR = 0;
41
43const int NFD_SupportedBlockList[] = {100, 402, 403, 404, 405,
44 408, 506, 507, 601};
45
46class 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// Indivisual DataBlock Strage and Utilities
62// CAUTION) No strage 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
const double DefaultCNFDataVersion
Definition: CNFData.h:34
const int READLINE_EOF
Definition: CNFData.h:39
const int NFD_SupportedBlockListSize
Definition: CNFData.h:42
const int READLINE_ERROR
Definition: CNFData.h:40
const int NFD_SupportedBlockList[]
Definition: CNFData.h:43
const int READLINE_SUCESS
Definition: CNFData.h:37
const int READLINE_SEPARATOR
Definition: CNFData.h:38
#define GENRATE_CODE(x)
Definition: CNFData.h:65
int fg_rec_first
Definition: CNFData.h:119
int ReadRecNext(char type, void *value)
Definition: CNFData.cpp:265
char title[256]
Definition: CNFData.h:49
virtual CNFDataBlock * CreateDataBlock(int block_id)
Definition: CNFData.cpp:184
void WriteStr(FILE *fp, const char *s)
Definition: CNFData.cpp:452
int rec_column
Definition: CNFData.h:120
void ReadStr(char *buff, char *s, int size)
Definition: CNFData.cpp:373
bool WriteDataBlock(FILE *fp, int id)
Definition: CNFData.cpp:535
virtual void Save(const char *fname)
Definition: CNFData.cpp:152
int fg_line_buff_empty
Definition: CNFData.h:94
CNFData()
Definition: CNFData.cpp:15
std::set< int > non_supported_block_list
Definition: CNFData.h:125
virtual void PrintMessage(const char *msg)
Definition: CNFData.cpp:247
void ReadLineEx(char *buff, int size=255)
Definition: CNFData.cpp:367
double version
Definition: CNFData.h:48
virtual void SkipDataBlock()
Definition: CNFData.cpp:235
int line
Definition: CNFData.h:92
virtual void StoreDataBlock(CNFDataBlock *block)
Definition: CNFData.cpp:207
void WriteBlockSeparator(FILE *fp)
Definition: CNFData.cpp:533
int EndOfFile()
Definition: CNFData.h:96
void WriteData(FILE *fp, const char *fmt,...)
Definition: CNFData.cpp:486
void PushBackLine(char *buff)
Definition: CNFData.cpp:389
char line_buff[512]
Definition: CNFData.h:93
virtual void Clear()
Definition: CNFData.cpp:30
void ReadRecord(char *buff, const char *fmt,...)
Definition: CNFData.cpp:308
char rec_buff[256]
Definition: CNFData.h:118
virtual ~CNFData()
Definition: CNFData.cpp:28
FILE * fp
Definition: CNFData.h:91
FILE * log_fp
Definition: CNFData.h:90
void WriteSummary(FILE *fp=0)
Definition: CNFData.cpp:581
void ReadRecStart(char *buff)
Definition: CNFData.cpp:259
virtual void Load(const char *fname)
Definition: CNFData.cpp:66
void ReadMultRec(char type, int n_in_rec, int val_n, void *val)
Definition: CNFData.cpp:394
int ReadLine(char *buff, int size=255)
Definition: CNFData.cpp:336
char neu_file[256]
Definition: CNFData.h:89