PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Library/VisItLib/avt/DBAtts/MetaData/avtArrayMetaData.C

https://github.com/robertmaynard/VisIt-Bridge
C++ | 501 lines | 145 code | 52 blank | 304 comment | 17 complexity | 414ec2a9cc9483b5d707e10d2f1d4ac4 MD5 | raw file
  1. /*****************************************************************************
  2. *
  3. * Copyright (c) 2000 - 2013, Lawrence Livermore National Security, LLC
  4. * Produced at the Lawrence Livermore National Laboratory
  5. * LLNL-CODE-442911
  6. * All rights reserved.
  7. *
  8. * This file is part of VisIt. For details, see https://visit.llnl.gov/. The
  9. * full copyright notice is contained in the file COPYRIGHT located at the root
  10. * of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
  11. *
  12. * Redistribution and use in source and binary forms, with or without
  13. * modification, are permitted provided that the following conditions are met:
  14. *
  15. * - Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the disclaimer below.
  17. * - Redistributions in binary form must reproduce the above copyright notice,
  18. * this list of conditions and the disclaimer (as noted below) in the
  19. * documentation and/or other materials provided with the distribution.
  20. * - Neither the name of the LLNS/LLNL nor the names of its contributors may
  21. * be used to endorse or promote products derived from this software without
  22. * specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27. * ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
  28. * LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
  29. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  31. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  32. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  35. * DAMAGE.
  36. *
  37. *****************************************************************************/
  38. #include <avtArrayMetaData.h>
  39. #include <DataNode.h>
  40. #include <snprintf.h>
  41. // ****************************************************************************
  42. // Method: avtArrayMetaData::avtArrayMetaData
  43. //
  44. // Purpose:
  45. // Init utility for the avtArrayMetaData class.
  46. //
  47. // Note: Autogenerated by xml2atts.
  48. //
  49. // Programmer: xml2atts
  50. // Creation: omitted
  51. //
  52. // Modifications:
  53. //
  54. // ****************************************************************************
  55. void avtArrayMetaData::Init()
  56. {
  57. nVars = 0;
  58. avtArrayMetaData::SelectAll();
  59. }
  60. // ****************************************************************************
  61. // Method: avtArrayMetaData::avtArrayMetaData
  62. //
  63. // Purpose:
  64. // Copy utility for the avtArrayMetaData class.
  65. //
  66. // Note: Autogenerated by xml2atts.
  67. //
  68. // Programmer: xml2atts
  69. // Creation: omitted
  70. //
  71. // Modifications:
  72. //
  73. // ****************************************************************************
  74. void avtArrayMetaData::Copy(const avtArrayMetaData &obj)
  75. {
  76. nVars = obj.nVars;
  77. compNames = obj.compNames;
  78. avtArrayMetaData::SelectAll();
  79. }
  80. // Type map format string
  81. const char *avtArrayMetaData::TypeMapFormatString = AVTARRAYMETADATA_TMFS;
  82. const AttributeGroup::private_tmfs_t avtArrayMetaData::TmfsStruct = {AVTARRAYMETADATA_TMFS};
  83. // ****************************************************************************
  84. // Method: avtArrayMetaData::avtArrayMetaData
  85. //
  86. // Purpose:
  87. // Default constructor for the avtArrayMetaData class.
  88. //
  89. // Note: Autogenerated by xml2atts.
  90. //
  91. // Programmer: xml2atts
  92. // Creation: omitted
  93. //
  94. // Modifications:
  95. //
  96. // ****************************************************************************
  97. avtArrayMetaData::avtArrayMetaData() :
  98. avtVarMetaData(avtArrayMetaData::TmfsStruct)
  99. {
  100. avtArrayMetaData::Init();
  101. }
  102. // ****************************************************************************
  103. // Method: avtArrayMetaData::avtArrayMetaData
  104. //
  105. // Purpose:
  106. // Constructor for the derived classes of avtArrayMetaData class.
  107. //
  108. // Note: Autogenerated by xml2atts.
  109. //
  110. // Programmer: xml2atts
  111. // Creation: omitted
  112. //
  113. // Modifications:
  114. //
  115. // ****************************************************************************
  116. avtArrayMetaData::avtArrayMetaData(private_tmfs_t tmfs) :
  117. avtVarMetaData(tmfs)
  118. {
  119. avtArrayMetaData::Init();
  120. }
  121. // ****************************************************************************
  122. // Method: avtArrayMetaData::avtArrayMetaData
  123. //
  124. // Purpose:
  125. // Copy constructor for the avtArrayMetaData class.
  126. //
  127. // Note: Autogenerated by xml2atts.
  128. //
  129. // Programmer: xml2atts
  130. // Creation: omitted
  131. //
  132. // Modifications:
  133. //
  134. // ****************************************************************************
  135. avtArrayMetaData::avtArrayMetaData(const avtArrayMetaData &obj) :
  136. avtVarMetaData(obj,avtArrayMetaData::TmfsStruct)
  137. {
  138. avtArrayMetaData::Copy(obj);
  139. }
  140. // ****************************************************************************
  141. // Method: avtArrayMetaData::avtArrayMetaData
  142. //
  143. // Purpose:
  144. // Copy constructor for derived classes of the avtArrayMetaData class.
  145. //
  146. // Note: Autogenerated by xml2atts.
  147. //
  148. // Programmer: xml2atts
  149. // Creation: omitted
  150. //
  151. // Modifications:
  152. //
  153. // ****************************************************************************
  154. avtArrayMetaData::avtArrayMetaData(const avtArrayMetaData &obj, private_tmfs_t tmfs) :
  155. avtVarMetaData(obj,tmfs)
  156. {
  157. avtArrayMetaData::Copy(obj);
  158. }
  159. // ****************************************************************************
  160. // Method: avtArrayMetaData::~avtArrayMetaData
  161. //
  162. // Purpose:
  163. // Destructor for the avtArrayMetaData class.
  164. //
  165. // Note: Autogenerated by xml2atts.
  166. //
  167. // Programmer: xml2atts
  168. // Creation: omitted
  169. //
  170. // Modifications:
  171. //
  172. // ****************************************************************************
  173. avtArrayMetaData::~avtArrayMetaData()
  174. {
  175. // nothing here
  176. }
  177. // ****************************************************************************
  178. // Method: avtArrayMetaData::operator =
  179. //
  180. // Purpose:
  181. // Assignment operator for the avtArrayMetaData class.
  182. //
  183. // Note: Autogenerated by xml2atts.
  184. //
  185. // Programmer: xml2atts
  186. // Creation: omitted
  187. //
  188. // Modifications:
  189. //
  190. // ****************************************************************************
  191. avtArrayMetaData&
  192. avtArrayMetaData::operator = (const avtArrayMetaData &obj)
  193. {
  194. if (this == &obj) return *this;
  195. // call the base class' assignment operator first
  196. avtVarMetaData::operator=(obj);
  197. avtArrayMetaData::Copy(obj);
  198. return *this;
  199. }
  200. // ****************************************************************************
  201. // Method: avtArrayMetaData::operator ==
  202. //
  203. // Purpose:
  204. // Comparison operator == for the avtArrayMetaData class.
  205. //
  206. // Note: Autogenerated by xml2atts.
  207. //
  208. // Programmer: xml2atts
  209. // Creation: omitted
  210. //
  211. // Modifications:
  212. //
  213. // ****************************************************************************
  214. bool
  215. avtArrayMetaData::operator == (const avtArrayMetaData &obj) const
  216. {
  217. // Create the return value
  218. return ((nVars == obj.nVars) &&
  219. (compNames == obj.compNames) &&
  220. avtVarMetaData::operator==(obj));
  221. }
  222. // ****************************************************************************
  223. // Method: avtArrayMetaData::operator !=
  224. //
  225. // Purpose:
  226. // Comparison operator != for the avtArrayMetaData class.
  227. //
  228. // Note: Autogenerated by xml2atts.
  229. //
  230. // Programmer: xml2atts
  231. // Creation: omitted
  232. //
  233. // Modifications:
  234. //
  235. // ****************************************************************************
  236. bool
  237. avtArrayMetaData::operator != (const avtArrayMetaData &obj) const
  238. {
  239. return !(this->operator == (obj));
  240. }
  241. // ****************************************************************************
  242. // Method: avtArrayMetaData::TypeName
  243. //
  244. // Purpose:
  245. // Type name method for the avtArrayMetaData class.
  246. //
  247. // Note: Autogenerated by xml2atts.
  248. //
  249. // Programmer: xml2atts
  250. // Creation: omitted
  251. //
  252. // Modifications:
  253. //
  254. // ****************************************************************************
  255. const std::string
  256. avtArrayMetaData::TypeName() const
  257. {
  258. return "avtArrayMetaData";
  259. }
  260. // ****************************************************************************
  261. // Method: avtArrayMetaData::CopyAttributes
  262. //
  263. // Purpose:
  264. // CopyAttributes method for the avtArrayMetaData class.
  265. //
  266. // Note: Autogenerated by xml2atts.
  267. //
  268. // Programmer: xml2atts
  269. // Creation: omitted
  270. //
  271. // Modifications:
  272. //
  273. // ****************************************************************************
  274. bool
  275. avtArrayMetaData::CopyAttributes(const AttributeGroup *atts)
  276. {
  277. if(TypeName() != atts->TypeName())
  278. return false;
  279. // Call assignment operator.
  280. const avtArrayMetaData *tmp = (const avtArrayMetaData *)atts;
  281. *this = *tmp;
  282. return true;
  283. }
  284. // ****************************************************************************
  285. // Method: avtArrayMetaData::CreateCompatible
  286. //
  287. // Purpose:
  288. // CreateCompatible method for the avtArrayMetaData class.
  289. //
  290. // Note: Autogenerated by xml2atts.
  291. //
  292. // Programmer: xml2atts
  293. // Creation: omitted
  294. //
  295. // Modifications:
  296. //
  297. // ****************************************************************************
  298. AttributeSubject *
  299. avtArrayMetaData::CreateCompatible(const std::string &tname) const
  300. {
  301. AttributeSubject *retval = 0;
  302. if(TypeName() == tname)
  303. retval = new avtArrayMetaData(*this);
  304. // Other cases could go here too.
  305. return retval;
  306. }
  307. // ****************************************************************************
  308. // Method: avtArrayMetaData::NewInstance
  309. //
  310. // Purpose:
  311. // NewInstance method for the avtArrayMetaData class.
  312. //
  313. // Note: Autogenerated by xml2atts.
  314. //
  315. // Programmer: xml2atts
  316. // Creation: omitted
  317. //
  318. // Modifications:
  319. //
  320. // ****************************************************************************
  321. AttributeSubject *
  322. avtArrayMetaData::NewInstance(bool copy) const
  323. {
  324. AttributeSubject *retval = 0;
  325. if(copy)
  326. retval = new avtArrayMetaData(*this);
  327. else
  328. retval = new avtArrayMetaData;
  329. return retval;
  330. }
  331. // ****************************************************************************
  332. // Method: avtArrayMetaData::SelectAll
  333. //
  334. // Purpose:
  335. // Selects all attributes.
  336. //
  337. // Note: Autogenerated by xml2atts.
  338. //
  339. // Programmer: xml2atts
  340. // Creation: omitted
  341. //
  342. // Modifications:
  343. //
  344. // ****************************************************************************
  345. void
  346. avtArrayMetaData::SelectAll()
  347. {
  348. // call the base class' SelectAll() first
  349. avtVarMetaData::SelectAll();
  350. Select(ID_nVars, (void *)&nVars);
  351. Select(ID_compNames, (void *)&compNames);
  352. }
  353. ///////////////////////////////////////////////////////////////////////////////
  354. // Set property methods
  355. ///////////////////////////////////////////////////////////////////////////////
  356. ///////////////////////////////////////////////////////////////////////////////
  357. // Get property methods
  358. ///////////////////////////////////////////////////////////////////////////////
  359. ///////////////////////////////////////////////////////////////////////////////
  360. // User-defined methods.
  361. ///////////////////////////////////////////////////////////////////////////////
  362. // ****************************************************************************
  363. // Method: avtArrayMetaData constructor
  364. //
  365. // Arguments:
  366. // n The name of the array variable.
  367. // mn The name of the mesh the array var is defined on.
  368. // nv The number of components.
  369. // c The centering of the variable.
  370. //
  371. // Programmer: Hank Childs
  372. // Creation: July 19, 2005
  373. //
  374. // ****************************************************************************
  375. avtArrayMetaData::avtArrayMetaData(std::string n, std::string mn,
  376. avtCentering c, int nv)
  377. : avtVarMetaData(avtArrayMetaData::TmfsStruct, n, mn, c)
  378. {
  379. avtArrayMetaData::Init();
  380. nVars = nv;
  381. compNames.resize(nVars);
  382. for (int i = 0 ; i < nVars ; i++)
  383. {
  384. char name[1024];
  385. SNPRINTF(name, 1024, "comp%d", i);
  386. }
  387. }
  388. // ****************************************************************************
  389. // Method: avtArrayMetaData constructor
  390. //
  391. // Arguments:
  392. // n The name of the array variable.
  393. // mn The name of the mesh the array var is defined on.
  394. // c The centering of the variable.
  395. // nv The number of components.
  396. // cn The component names.
  397. //
  398. // Programmer: Hank Childs
  399. // Creation: July 19, 2005
  400. //
  401. // ****************************************************************************
  402. avtArrayMetaData::avtArrayMetaData(std::string n, std::string mn,
  403. avtCentering c, int nv,
  404. const stringVector &cn)
  405. : avtVarMetaData(avtArrayMetaData::TmfsStruct, n, mn, c)
  406. {
  407. avtArrayMetaData::Init();
  408. nVars = nv;
  409. compNames = cn;
  410. }
  411. // ****************************************************************************
  412. // Method: avtArrayMetaData::Print
  413. //
  414. // Purpose:
  415. // Print statement for debugging.
  416. //
  417. // Arguments:
  418. // out The stream to output to.
  419. // indent The number of tabs to indent each line with.
  420. //
  421. // Programmer: Hank Childs
  422. // Creation: July 19, 2005
  423. //
  424. // ****************************************************************************
  425. inline void
  426. Indent(ostream &out, int indent)
  427. {
  428. for (int i = 0 ; i < indent ; i++)
  429. {
  430. out << "\t";
  431. }
  432. }
  433. void
  434. avtArrayMetaData::Print(ostream &out, int indent) const
  435. {
  436. avtVarMetaData::Print(out, indent);
  437. Indent(out, indent);
  438. out << "Number of variables = " << nVars << endl;
  439. Indent(out, indent);
  440. out << "Components are: ";
  441. for (size_t i = 0 ; i < compNames.size() ; i++)
  442. {
  443. out << compNames[i].c_str();
  444. if (i != compNames.size()-1)
  445. out << ", ";
  446. else
  447. out << endl;
  448. }
  449. }