Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CubitUtil.hpp
3 : : //
4 : : // Purpose : This file contains utility functions that can be used
5 : : // throughout Cubit.
6 : : //
7 : : // Special Notes : This is a pure virtual class, to prevent instantiation.
8 : : // All functions are static, called like this:
9 : : // CubitUtil::function_name();
10 : : //
11 : : // Creator : Darryl Melander
12 : : //
13 : : // Date : 06/08/98
14 : : //
15 : : // Owner : Darryl Melander
16 : : //-------------------------------------------------------------------------
17 : :
18 : :
19 : : #ifndef CUBIT_UTIL_HPP
20 : : #define CUBIT_UTIL_HPP
21 : :
22 : : #include <cstring>
23 : : #include "DLIList.hpp"
24 : : #include "CubitDefines.h"
25 : : #include "CGMUtilConfigure.h"
26 : : #include "CubitString.hpp"
27 : :
28 : : class CubitEntity;
29 : :
30 : : class CUBIT_UTIL_EXPORT CubitUtil
31 : : {
32 : : public:
33 : :
34 : : static void set_digits(int new_digits);
35 : : static int get_digits();
36 : :
37 : : static void convert_string_to_lowercase (char *string);
38 : : static int strcmp_case_insensitive (const char *s1, const char *s2);
39 : : static int strncmp_case_insensitive (const char *s1, const char *s2,
40 : : int n);
41 : :
42 : : static void list_ids( const char *const heading,
43 : : const DLIList<CubitEntity*> &entity_list,
44 : : int should_sort = CUBIT_FALSE,
45 : : int report_once = CUBIT_FALSE,
46 : : int wrap = 80 );
47 : :
48 : : static void sort_and_print_ids( const char *const heading,
49 : : DLIList<int> &id_list,
50 : : int should_sort = CUBIT_FALSE,
51 : : int report_once = CUBIT_FALSE,
52 : : int wrap = 80);
53 : :
54 : :
55 : :
56 : : static void list_entity_ids( const char *pre_string,
57 : : const DLIList<CubitEntity*> &entity_list,
58 : : int width = 80, const char *post_string = "\n",
59 : : int sort = CUBIT_TRUE, int unique = CUBIT_TRUE,
60 : : int tab = 3, const char *sep_string = ",",
61 : : const char *post_string_none = "none\n");
62 : :
63 : : static void list_entity_ids( const char *pre_string,
64 : : DLIList<int> &id_list,
65 : : int width = 80,
66 : : const char *post_string = "\n",
67 : : int sort = CUBIT_TRUE, int unique = CUBIT_TRUE,
68 : : int tab_len = 3, const char *sep_string = ",",
69 : : const char *post_string_none = "none\n");
70 : :
71 : : static CubitString get_entity_ids_str( const char *pre_string, DLIList<int> &int_list,
72 : : int width = 80, const char *post_string = "\n",
73 : : int sort = CUBIT_TRUE, int unique = CUBIT_TRUE,
74 : : int left_tab = 3, const char *sep_string = ",",
75 : : const char *post_string_none = "none\n");
76 : :
77 : : static void process_entity_ids( int method,
78 : : CubitString &ret_str,
79 : : const char *pre_string,
80 : : DLIList<int> &id_list,
81 : : int max_len,
82 : : const char *post_string,
83 : : int sort, int unique,
84 : : int tab_len, const char *sep_string,
85 : : const char* post_string_none = "none\n");
86 : :
87 : : static int int_len( int num );
88 : : //- Finds the number of spaces required to print an integer number
89 : :
90 : : static void set_file_ptr( FILE* file_ptr );
91 : : static void reset_file_ptr();
92 : : static FILE* get_file_ptr();
93 : : //- Used to optionally have list_entity_ids or get_entity_ids_str output dumped
94 : : //- to a file as well.
95 : :
96 : 0 : static CubitBoolean compare( const char* a, const char* b )
97 [ # # ][ # # ]: 0 : { return ( a != NULL && b != NULL && 0 == strcmp(a, b) ); }
[ # # ]
98 : :
99 : : static CubitSense opposite_sense(CubitSense sense);
100 : : //- return the sense opposite from sense
101 : :
102 : : static CubitString get_temporary_filename();
103 : : //- function to get a temporary filename, the file is created empty before return
104 : :
105 : : static int string_length( const char* string, int tabsize = 8 );
106 : : static void print_columns( const std::vector<CubitString>& array,
107 : : const CubitString& indent = CubitString());
108 : :
109 : : //does the same thing as strdup... strdup is not supported by some
110 : : // compilers
111 : : static char* util_strdup(const char *s1);
112 : : //a corresponding free for the above function... mainly calls free().
113 : 0 : static void util_strdup_free(char* s1){free(s1);}
114 : :
115 : : static void cubit_sleep(int duration_in_seconds);
116 : :
117 : : static CubitBoolean file_exist(const char* buffer);
118 : : static CubitBoolean file_exist(const CubitString& buffer);
119 : :
120 : : // get an environment variable
121 : : static CubitString getenv(const CubitString& str);
122 : : static void setenv(const CubitString& var, const CubitString& value);
123 : :
124 : : static CubitString get_computer_name();
125 : : static CubitString get_os();
126 : :
127 : : static int num_cpu();
128 : :
129 : : private:
130 : : CubitUtil(){}
131 : :
132 : : static FILE *fp;
133 : :
134 : : };
135 : :
136 : : inline void
137 : : CubitUtil::set_file_ptr( FILE* file_ptr )
138 : : {fp=file_ptr;}
139 : :
140 : : inline void
141 : : CubitUtil::reset_file_ptr()
142 : : {fp=NULL;}
143 : :
144 : 19613 : inline CubitSense CubitUtil::opposite_sense( CubitSense sense )
145 : : {
146 [ + + ][ - + ]: 19613 : assert( sense == CUBIT_UNKNOWN ||
147 : : sense == CUBIT_FORWARD ||
148 [ + - ]: 19613 : sense == CUBIT_REVERSED );
149 [ - + ]: 19613 : if ( sense == CUBIT_UNKNOWN ) return CUBIT_UNKNOWN;
150 : : else {
151 : 19613 : CubitSense opp_sense = (CubitSense) (1 - sense);
152 : 19613 : return opp_sense;
153 : : }
154 : : }
155 : :
156 : : inline FILE*
157 : : CubitUtil::get_file_ptr()
158 : : {return fp;}
159 : : #endif
160 : :
|