FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
CHECData.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  CHECData Ver. 3.6
7 */
8 
9 #ifndef CHECDataH
10 #define CHECDataH
11 
12 #include <stdio.h>
13 #include <vector>
14 #include <ctype.h>
15 #include <stdarg.h>
16 #include <assert.h>
17 #include "hecd_util.h"
18 #include "CHECDataBlock.h"
19 
20 const int mw_fname_size = 256;
21 const int mw_comment_size = 256;
22 
23 #include "CHECDB.h"
24 
25 class CHECData {
26  public:
27  FILE* fp;
30  std::vector<CHECDataBlock*> DB;
31 
32  CHECData();
33  virtual ~CHECData();
34  virtual void Clear();
35  virtual void StoreDataBlock(CHECDataBlock* block);
36 
37  // ============ etc. ====================
38  virtual bool IsDataBlockName(const char* name) {
39  return IsHECDataBlockName(name);
40  }
41 
42  // ============ Utilities for Save ================
43 
44  virtual bool Save(const char* file_name);
45  virtual void WriteLine(const char* s);
46 
47  // Header Line -----------------------------------------------
48 
49  // fmt : format of parameters.
50  // Each character specify the parameter's type
51  // 'I': integer, 'F':float, 'S':string
52  // ... : pairs of parameter name and value
53  virtual void WriteHeader(const char* name, const char* fmt = "", ...);
54 
55  // Parameter Line -----------------------------------------------
56  virtual void WriteParameter(const char* fmt = "", ...);
57 
58  // Data Line ---------------------------------------------------
59 
60  // fmt : format of data like one of WriteHeader
61  // ... : values to write the file.
62  virtual void WriteData(const char* fmt, ...);
63 
64  virtual void ClearDataLineBuffer();
65  virtual void AddDataLineItems(const char* fmt, ...);
66  virtual void WriteDataLine();
67 
68  // ============ Utilities for Load ================
69 
70  virtual bool Load(const char* file_name);
71  virtual bool AddLoad(const char* file_name); // append to DB (not cleared)
72  virtual bool ReadLine(char* s, int size = 256);
73  virtual CHECDataBlock* CreateDataBlock(const char* header_name);
74  virtual bool GetHeaderName(const char* header_line, char* header_name);
75  virtual void PushReadLine(const char* s);
76 
77  // rcode[i] : 1 -- set, 0 -- not set, -1 -- error
78  // fmt : string composed by 'I'(int), 'F'(double), 'E'(int) or 'S'(char*)
79  // characters
80  // ... : pairs of a parameter name and a pointer of the parameter
81  virtual bool ParseHeader(char* header_line, int* rcode, const char* fmt, ...);
82  virtual bool ReadParameter(int* rcode, const char* fmt, ...);
83  virtual bool vParseParameter(char* line, int* rcode, const char* fmt,
84  va_list va);
85  virtual bool ParseParameter(char* line, int* rcode, const char* fmt, ...);
86  // fmt : string composed by 'I', 'F' or 'S'
87  // ... : pointers of parameter
88  virtual bool ReadData(int* rcode, const char* fmt, ...);
89  // return : num. of data or -(error position+1)
90  virtual int ParseDoubleDataArray(char* line, double* data);
91  virtual int ParseIntDataArray(char* line, int* data);
92 
93  // ============ Utilities for DataBlock ============
94  virtual class CHECDB_Material* GetMaterial(const char* name);
95  virtual class CHECDB_NGroup* GetNGroup(const char* name);
96  virtual class CHECDB_EGroup* GetEGroup(const char* name);
97  virtual class CHECDB_SGroup* GetSGroup(const char* name);
98 
99  virtual class CHECDB_Node::CNodeItem* GetNodeItem(int id);
100  virtual class CHECDB_Element::CElemItem* GetElemItem(int id);
101  virtual int GetElemType(int id); // 0 : not existed
102 
103  protected:
104  char data_line_buffer[256];
107 };
108 
109 #endif
CHECDataBlock
Definition: CHECDataBlock.h:17
CHECData::GetMaterial
virtual class CHECDB_Material * GetMaterial(const char *name)
Definition: CHECData.cpp:652
CHECData::ParseHeader
virtual bool ParseHeader(char *header_line, int *rcode, const char *fmt,...)
Definition: CHECData.cpp:506
CHECDB_SGroup
Definition: CHECDB.h:228
mw_fname_size
const int mw_fname_size
Definition: CHECData.h:20
CHECData::CHECData
CHECData()
Definition: CHECData.cpp:21
CHECDB_Element::CElemItem
Definition: CHECDB.h:76
mw_comment_size
const int mw_comment_size
Definition: CHECData.h:21
CHECData::GetSGroup
virtual class CHECDB_SGroup * GetSGroup(const char *name)
Definition: CHECData.cpp:664
CHECData::GetNodeItem
virtual class CHECDB_Node::CNodeItem * GetNodeItem(int id)
Definition: CHECData.cpp:668
CHECData::GetElemItem
virtual class CHECDB_Element::CElemItem * GetElemItem(int id)
Definition: CHECData.cpp:682
CHECData::vParseParameter
virtual bool vParseParameter(char *line, int *rcode, const char *fmt, va_list va)
Definition: CHECData.cpp:408
CHECData::line_count
int line_count
Definition: CHECData.h:29
CHECDB_EGroup
Definition: CHECDB.h:216
CHECData::GetEGroup
virtual class CHECDB_EGroup * GetEGroup(const char *name)
Definition: CHECData.cpp:660
CHECDB_Material
Definition: CHECDB.h:129
CHECData::AddDataLineItems
virtual void AddDataLineItems(const char *fmt,...)
Definition: CHECData.cpp:201
CHECData::WriteParameter
virtual void WriteParameter(const char *fmt="",...)
Definition: CHECData.cpp:113
CHECData::Load
virtual bool Load(const char *file_name)
Definition: CHECData.cpp:262
IsHECDataBlockName
bool IsHECDataBlockName(const char *name)
Definition: HECDB_util.cpp:57
CHECData::PushReadLine
virtual void PushReadLine(const char *s)
Definition: CHECData.cpp:328
CHECDB_EGroup::name
char name[hec_name_size]
Definition: CHECDB.h:218
CHECData::CreateDataBlock
virtual CHECDataBlock * CreateDataBlock(const char *header_name)
Definition: CHECData.cpp:334
CHECDB_NGroup::name
char name[hec_name_size]
Definition: CHECDB.h:206
CHECData::ReadLine
virtual bool ReadLine(char *s, int size=256)
Definition: CHECData.cpp:307
CHECData::StoreDataBlock
virtual void StoreDataBlock(CHECDataBlock *block)
Definition: CHECData.cpp:35
CHECData::WriteData
virtual void WriteData(const char *fmt,...)
Definition: CHECData.cpp:162
CHECData::fg_header_pushed
bool fg_header_pushed
Definition: CHECData.h:106
CHECDB.h
CHECData::ReadData
virtual bool ReadData(int *rcode, const char *fmt,...)
Definition: CHECData.cpp:548
CHECData::ReadParameter
virtual bool ReadParameter(int *rcode, const char *fmt,...)
Definition: CHECData.cpp:525
CHECData::DB
std::vector< CHECDataBlock * > DB
Definition: CHECData.h:30
CHECDB_NGroup
Definition: CHECDB.h:204
CHECData::ParseDoubleDataArray
virtual int ParseDoubleDataArray(char *line, double *data)
Definition: CHECData.cpp:603
CHECData::WriteHeader
virtual void WriteHeader(const char *name, const char *fmt="",...)
Definition: CHECData.cpp:68
CHECDB_Node::CNodeItem
Definition: CHECDB.h:110
CHECData::fname
char fname[mw_fname_size]
Definition: CHECData.h:28
data
CNFData data
Definition: neu_reporter.cpp:18
CHECData
Definition: CHECData.h:25
CHECData::GetNGroup
virtual class CHECDB_NGroup * GetNGroup(const char *name)
Definition: CHECData.cpp:656
CHECData::IsDataBlockName
virtual bool IsDataBlockName(const char *name)
Definition: CHECData.h:38
hecd_util.h
CHECData::ClearDataLineBuffer
virtual void ClearDataLineBuffer()
Definition: CHECData.cpp:199
CHECDB_Material::name
char name[hec_name_size]
Definition: CHECDB.h:131
CHECData::Clear
virtual void Clear()
Definition: CHECData.cpp:25
CHECDB_SGroup::name
char name[hec_name_size]
Definition: CHECDB.h:230
CHECData::~CHECData
virtual ~CHECData()
Definition: CHECData.cpp:23
CHECData::WriteLine
virtual void WriteLine(const char *s)
Definition: CHECData.cpp:58
CHECData::GetHeaderName
virtual bool GetHeaderName(const char *header_line, char *header_name)
Definition: CHECData.cpp:338
CHECData::ParseParameter
virtual bool ParseParameter(char *line, int *rcode, const char *fmt,...)
Definition: CHECData.cpp:498
CHECData::ParseIntDataArray
virtual int ParseIntDataArray(char *line, int *data)
Definition: CHECData.cpp:617
CHECData::Save
virtual bool Save(const char *file_name)
Definition: CHECData.cpp:41
CHECData::fp
FILE * fp
Definition: CHECData.h:27
CHECData::header_line_buffer
char header_line_buffer[256]
Definition: CHECData.h:105
CHECData::WriteDataLine
virtual void WriteDataLine()
Definition: CHECData.cpp:234
CHECData::GetElemType
virtual int GetElemType(int id)
Definition: CHECData.cpp:696
CHECData::AddLoad
virtual bool AddLoad(const char *file_name)
Definition: CHECData.cpp:267
CHECData::data_line_buffer
char data_line_buffer[256]
Definition: CHECData.h:104
CHECDataBlock.h