00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __OP_FileDependencyMgr_h__
00020 #define __OP_FileDependencyMgr_h__
00021
00022 #include "OP_API.h"
00023 #include "OP_Node.h"
00024 #include <UT/UT_String.h>
00025 #include <UT/UT_RefArray.h>
00026 class UT_StringArray;
00027 class PRM_Parm;
00028 class PRM_ParmList;
00029 class OP_Node;
00030 class OP_Network;
00031
00032
00033
00034 class OP_API OP_NodeFileNamePair
00035 {
00036 public:
00037 OP_NodeFileNamePair(OP_Node *node, const char *file_name,
00038 PRM_Parm *parm=NULL)
00039 : myNode(node),
00040 myFileName(UT_String::ALWAYS_DEEP, file_name),
00041 myParm(parm)
00042 {}
00043
00044
00045 OP_NodeFileNamePair()
00046 : myNode(NULL),
00047 myFileName(UT_String::ALWAYS_DEEP),
00048 myParm(NULL)
00049 {}
00050
00051 OP_Node *myNode;
00052 UT_String myFileName;
00053 PRM_Parm *myParm;
00054 };
00055
00056 typedef UT_RefArray<OP_NodeFileNamePair> OP_NodeFileNameArray;
00057
00058
00059
00060 class OP_API OP_FileDependencyMgr
00061 {
00062 public:
00063 OP_FileDependencyMgr();
00064
00065 enum SkipHFSOption { SKIP_HFS_FILES, KEEP_HFS_FILES };
00066 enum TrackNodesOption { TRACK_NODES, SKIP_NODES };
00067 enum CondensePathOption { CONDENSE_HIP, CONDENSE_JOB };
00068
00069
00070
00071
00072
00073 void getInputFilesInParms(SkipHFSOption skip_hfs_option,
00074 TrackNodesOption track_nodes_option,
00075 OP_NodeFileNameArray &found_files,
00076 OP_NodeFileNameArray &unknown_files) const;
00077
00078
00079
00080
00081 void getOTLFiles(UT_StringArray &files, OP_NodeList* otl_nodes_out,
00082 SkipHFSOption skip_hfs_option=SKIP_HFS_FILES,
00083 CondensePathOption condense_path_option = CONDENSE_HIP) const;
00084
00085
00086 void mergeDependencyLists(OP_NodeFileNameArray src_refs1,
00087 OP_NodeFileNameArray src_refs2,
00088 OP_NodeFileNameArray &dest_refs,
00089 TrackNodesOption track_nodes_option) const;
00090
00091
00092
00093
00094 bool addFileDependency(UT_String node_path,
00095 UT_String str_parm,
00096 UT_String file_path,
00097 UT_String resultMsg) const;
00098
00099
00100
00101
00102 bool removeFileDependency(UT_String node_path,
00103 UT_String str_parm,
00104 UT_String resultMsg) const;
00105
00106
00107
00108
00109 bool hideFileDependency(UT_String node_path,
00110 UT_String str_parm,
00111 UT_String resultMsg) const;
00112
00113
00114
00115
00116
00117 void setUnselectedFilePatterns(const UT_StringArray &unselected_patterns)
00118 { myUnselectedFilePatterns = unselected_patterns; }
00119 void getUnselectedFilePatterns(UT_StringArray &result)
00120 { result = myUnselectedFilePatterns; }
00121
00122 private:
00123
00124
00125 void getOTLFiles(
00126 OP_Node &node, UT_StringArray &files, OP_NodeList* otl_nodes_out,
00127 SkipHFSOption skip_hfs_option=SKIP_HFS_FILES,
00128 CondensePathOption condense_path_option = CONDENSE_HIP) const;
00129
00130
00131
00132 bool findPathToFileName(UT_String &file_name) const;
00133
00134
00135
00136 bool parmReferencesInputFile(OP_Node *owner,
00137 PRM_Parm &parm) const;
00138
00139
00140
00141 bool fileIsInHFS(const char *file_name) const;
00142
00143
00144
00145
00146
00147 void getInputFilesInParms(OP_Node &network,
00148 SkipHFSOption skip_hfs_option,
00149 TrackNodesOption track_nodes_option,
00150 OP_NodeFileNameArray &found_files,
00151 OP_NodeFileNameArray &unknown_files) const;
00152
00153
00154
00155
00156
00157 void getInputFilesInParmList(PRM_ParmList *parm_list,
00158 OP_Node *owner,
00159 SkipHFSOption skip_hfs_option,
00160 OP_NodeFileNameArray &found_files,
00161 OP_NodeFileNameArray &unknown_files) const;
00162
00163
00164 void removeDuplicatesFromNodeFileNameArray
00165 (OP_NodeFileNameArray &files,
00166 TrackNodesOption track_nodes_option)
00167 const;
00168
00169
00170 void removeDuplicatesFromStringArray(UT_StringArray &string_array) const;
00171
00172
00173 void subtractSets (OP_NodeFileNameArray &set1,
00174 OP_NodeFileNameArray set2) const;
00175
00176
00177
00178
00179 bool determineRootType(
00180 OP_NodeFileNameArray &found_files,
00181 OP_NodeFileNameArray &unknown_files) const;
00182
00183
00184
00185
00186 void condensePath(
00187 UT_String &path, CondensePathOption condense_path_option) const;
00188
00189
00190
00191 bool getUnembeddedVexFileForOpType(
00192 OP_Operator &op_type, UT_String &result) const;
00193
00194
00195
00196
00197
00198 void cleanupExtraFileInfo(OP_NodeFileNameArray& file_names) const;
00199
00200 UT_StringArray myUnselectedFilePatterns;
00201 };
00202
00203
00204
00205
00206 OP_API OP_FileDependencyMgr &OPgetFileDependencyMgr();
00207 OP_API void OPsetFileDependencyMgr(OP_FileDependencyMgr &file_dependency_mgr);
00208
00209 #endif