FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
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
20const int mw_fname_size = 256;
21const int mw_comment_size = 256;
22
23#include "CHECDB.h"
24
25class 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 // ... : piars 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 : formt 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:
107};
108
109#endif
bool IsHECDataBlockName(const char *name)
Definition: HECDB_util.cpp:57
const int mw_fname_size
Definition: CHECData.h:20
const int mw_comment_size
Definition: CHECData.h:21
int line_count
Definition: CHECData.h:29
virtual int ParseIntDataArray(char *line, int *data)
Definition: CHECData.cpp:617
virtual void WriteDataLine()
Definition: CHECData.cpp:234
virtual class CHECDB_Node::CNodeItem * GetNodeItem(int id)
Definition: CHECData.cpp:668
virtual bool ReadData(int *rcode, const char *fmt,...)
Definition: CHECData.cpp:548
virtual void WriteParameter(const char *fmt="",...)
Definition: CHECData.cpp:113
bool fg_header_pushed
Definition: CHECData.h:106
virtual ~CHECData()
Definition: CHECData.cpp:23
virtual bool ParseParameter(char *line, int *rcode, const char *fmt,...)
Definition: CHECData.cpp:498
virtual int GetElemType(int id)
Definition: CHECData.cpp:696
virtual bool vParseParameter(char *line, int *rcode, const char *fmt, va_list va)
Definition: CHECData.cpp:408
virtual class CHECDB_SGroup * GetSGroup(const char *name)
Definition: CHECData.cpp:664
virtual int ParseDoubleDataArray(char *line, double *data)
Definition: CHECData.cpp:603
virtual bool IsDataBlockName(const char *name)
Definition: CHECData.h:38
virtual bool Save(const char *file_name)
Definition: CHECData.cpp:41
virtual bool ParseHeader(char *header_line, int *rcode, const char *fmt,...)
Definition: CHECData.cpp:506
std::vector< CHECDataBlock * > DB
Definition: CHECData.h:30
char data_line_buffer[256]
Definition: CHECData.h:104
virtual bool AddLoad(const char *file_name)
Definition: CHECData.cpp:267
FILE * fp
Definition: CHECData.h:27
virtual void Clear()
Definition: CHECData.cpp:25
virtual void StoreDataBlock(CHECDataBlock *block)
Definition: CHECData.cpp:35
CHECData()
Definition: CHECData.cpp:21
virtual bool Load(const char *file_name)
Definition: CHECData.cpp:262
virtual class CHECDB_Element::CElemItem * GetElemItem(int id)
Definition: CHECData.cpp:682
virtual void WriteData(const char *fmt,...)
Definition: CHECData.cpp:162
virtual class CHECDB_Material * GetMaterial(const char *name)
Definition: CHECData.cpp:652
virtual bool ReadLine(char *s, int size=256)
Definition: CHECData.cpp:307
virtual bool ReadParameter(int *rcode, const char *fmt,...)
Definition: CHECData.cpp:525
virtual void WriteHeader(const char *name, const char *fmt="",...)
Definition: CHECData.cpp:68
virtual void ClearDataLineBuffer()
Definition: CHECData.cpp:199
virtual void AddDataLineItems(const char *fmt,...)
Definition: CHECData.cpp:201
virtual class CHECDB_EGroup * GetEGroup(const char *name)
Definition: CHECData.cpp:660
virtual class CHECDB_NGroup * GetNGroup(const char *name)
Definition: CHECData.cpp:656
virtual void WriteLine(const char *s)
Definition: CHECData.cpp:58
virtual void PushReadLine(const char *s)
Definition: CHECData.cpp:328
virtual bool GetHeaderName(const char *header_line, char *header_name)
Definition: CHECData.cpp:338
virtual CHECDataBlock * CreateDataBlock(const char *header_name)
Definition: CHECData.cpp:334
char header_line_buffer[256]
Definition: CHECData.h:105
char fname[mw_fname_size]
Definition: CHECData.h:28
CNFData data