ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/eplus_idf.h
Revision: 2.7
Committed: Wed Feb 12 17:40:07 2014 UTC (10 years, 1 month ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad4R2P2, rad5R0, rad4R2, rad4R2P1
Changes since 2.6: +30 -30 lines
Log Message:
Changed all "parameter" references to "object"

File Contents

# Content
1 /* RCSid $Id: eplus_idf.h,v 2.6 2014/02/10 04:51:26 greg Exp $ */
2 /*
3 * eplus_idf.h
4 *
5 * EnergyPlus Input Data File i/o declarations
6 *
7 * Created by Greg Ward on 1/31/14.
8 */
9
10 #ifndef _RAD_EPLUS_IDF_H_
11 #define _RAD_EPLUS_IDF_H_
12
13 #include "lookup.h"
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18
19 #define IDF_MAXLINE 512 /* maximum line length */
20 #define IDF_MAXARGL 104 /* maximum argument length */
21
22 /* Input Data File object argument list */
23 typedef struct s_idf_field {
24 struct s_idf_field *next; /* next in object list */
25 char *rem; /* string following argument */
26 char val[2]; /* value (extends struct) */
27 } IDF_FIELD;
28
29 /* Input Data File object */
30 typedef struct s_idf_object {
31 const char *pname; /* object name (type) */
32 struct s_idf_object *pnext; /* next object same type */
33 struct s_idf_object *dnext; /* next object in IDF */
34 int nfield; /* field count */
35 IDF_FIELD *flist; /* field list */
36 char rem[1]; /* comment (extends struct) */
37 } IDF_OBJECT;
38
39 /* Input Data File w/ dictionary */
40 typedef struct {
41 char *hrem; /* header remarks */
42 IDF_OBJECT *pfirst; /* first object in file */
43 IDF_OBJECT *plast; /* last object loaded */
44 LUTAB ptab; /* object hash table */
45 } IDF_LOADED;
46
47 /* Create a new object with empty field list (comment & prev optional) */
48 extern IDF_OBJECT *idf_newobject(IDF_LOADED *idf, const char *pname,
49 const char *comm, IDF_OBJECT *prev);
50
51 /* Add a field to the given object and follow with the given text */
52 extern int idf_addfield(IDF_OBJECT *param, const char *fval,
53 const char *comm);
54
55 /* Retrieve the indexed field from object (first field index is 1) */
56 extern IDF_FIELD *idf_getfield(IDF_OBJECT *param, int fn);
57
58 /* Delete the specified object from the IDF */
59 extern int idf_delobject(IDF_LOADED *idf, IDF_OBJECT *param);
60
61 /* Move the specified object to the given position in the IDF */
62 extern int idf_movobject(IDF_LOADED *idf, IDF_OBJECT *param,
63 IDF_OBJECT *prev);
64
65 /* Get a named object list */
66 extern IDF_OBJECT *idf_getobject(IDF_LOADED *idf, const char *pname);
67
68 /* Read a object and fields from an open file and add to end of list */
69 extern IDF_OBJECT *idf_readobject(IDF_LOADED *idf, FILE *fp);
70
71 /* Initialize an IDF struct */
72 extern IDF_LOADED *idf_create(const char *hdrcomm);
73
74 /* Add comment(s) to header */
75 extern int idf_add2hdr(IDF_LOADED *idf, const char *hdrcomm);
76
77 /* Load an Input Data File */
78 extern IDF_LOADED *idf_load(const char *fname);
79
80 /* Write a object and fields to an open file */
81 int idf_writeparam(IDF_OBJECT *param, FILE *fp,
82 int incl_comm);
83
84 /* Write out an Input Data File */
85 extern int idf_write(IDF_LOADED *idf, const char *fname,
86 int incl_comm);
87
88 /* Free a loaded IDF */
89 extern void idf_free(IDF_LOADED *idf);
90
91 #ifdef __cplusplus
92 }
93 #endif
94 #endif /* ! _RAD_EPLUS_IDF_H_ */