Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 //-------------------------------------------------------------------------- 28 // File and Version Information: 29 // 30 // Description: 31 // Create a HepRep XML File (HepRep version 1). 32 // 33 // Environment: 34 // Software developed for the general High Energy Physics community. 35 // 36 // Author : 37 // J. Perl Original Author 38 // 39 // Copyright Information: 40 // Copyright (C) 2001 Stanford Linear Accelerator Center 41 //------------------------------------------------------------------------ 42 #ifndef G4HepRepFileXMLWriter_hh 43 #define G4HepRepFileXMLWriter_hh 44 45 //#define G4HEPREPFILEDEBUG // Comment this out to suppress debug code. 46 47 #include "globals.hh" 48 #include <fstream> 49 50 class G4HepRepFileXMLWriter 51 { 52 public: 53 G4HepRepFileXMLWriter(); 54 55 void addType(const char* name, int newTypeDepth); 56 void addInstance(); 57 void addPrimitive(); 58 void addPoint(double x, double y, double z); 59 60 void addAttDef(const char* name, const char* desc, const char* type, 61 const char* extra); 62 63 void addAttValue(const char* name, const char* value); 64 65 void addAttValue(const char* name, double value); 66 67 void addAttValue(const char* name, int value); 68 69 void addAttValue(const char* name, bool value); 70 71 void addAttValue(const char* name, double value1, double value2, 72 double value3); 73 74 void open(const char* filespec); 75 void close(); 76 77 void endTypes(); 78 79 bool isOpen; 80 int typeDepth; 81 bool inType[50]; 82 bool inInstance[50]; 83 char* prevTypeName[50]; 84 85 private: 86 std::ofstream fout; 87 88 void init(); 89 90 bool inPrimitive; 91 bool inPoint; 92 93 void endType(); 94 void endInstance(); 95 void endPrimitive(); 96 void endPoint(); 97 98 void indent(); 99 }; 100 #endif 101