hotspot/src/share/vm/utilities/xmlstream.hpp
changeset 24424 2658d7834c6e
parent 13728 882756847a04
child 46329 53ccc37bda19
equal deleted inserted replaced
24358:8528b67f6562 24424:2658d7834c6e
     1 /*
     1 /*
     2  * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    78 
    78 
    79   // protect this from public use:
    79   // protect this from public use:
    80   outputStream* out()                            { return _out; }
    80   outputStream* out()                            { return _out; }
    81 
    81 
    82   // helpers for writing XML elements
    82   // helpers for writing XML elements
    83   void          va_tag(bool push, const char* format, va_list ap);
    83   void          va_tag(bool push, const char* format, va_list ap) ATTRIBUTE_PRINTF(3, 0);
    84   virtual void see_tag(const char* tag, bool push) NOT_DEBUG({});
    84   virtual void see_tag(const char* tag, bool push) NOT_DEBUG({});
    85   virtual void pop_tag(const char* tag) NOT_DEBUG({});
    85   virtual void pop_tag(const char* tag) NOT_DEBUG({});
    86 
    86 
    87 #ifdef ASSERT
    87 #ifdef ASSERT
    88   // in debug mode, we verify matching of opening and closing tags
    88   // in debug mode, we verify matching of opening and closing tags
   107   virtual void write(const char* s, size_t len);
   107   virtual void write(const char* s, size_t len);
   108   void    write_text(const char* s, size_t len);  // used by xmlTextStream
   108   void    write_text(const char* s, size_t len);  // used by xmlTextStream
   109   int unflushed_count() { return (int)(out()->count() - _last_flush); }
   109   int unflushed_count() { return (int)(out()->count() - _last_flush); }
   110 
   110 
   111   // writing complete XML elements
   111   // writing complete XML elements
   112   void          elem(const char* format, ...);
   112   void          elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   113   void    begin_elem(const char* format, ...);
   113   void    begin_elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   114   void      end_elem(const char* format, ...);
   114   void      end_elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   115   void      end_elem();
   115   void      end_elem();
   116   void          head(const char* format, ...);
   116   void          head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   117   void    begin_head(const char* format, ...);
   117   void    begin_head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   118   void      end_head(const char* format, ...);
   118   void      end_head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   119   void      end_head();
   119   void      end_head();
   120   void          done(const char* format, ...);  // xxx_done event, plus tail
   120   void          done(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);  // xxx_done event, plus tail
   121   void          done_raw(const char * kind);
   121   void          done_raw(const char * kind);
   122   void          tail(const char* kind);
   122   void          tail(const char* kind);
   123 
   123 
   124   // va_list versions
   124   // va_list versions
   125   void       va_elem(const char* format, va_list ap);
   125   void       va_elem(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
   126   void va_begin_elem(const char* format, va_list ap);
   126   void va_begin_elem(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
   127   void       va_head(const char* format, va_list ap);
   127   void       va_head(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
   128   void va_begin_head(const char* format, va_list ap);
   128   void va_begin_head(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
   129   void       va_done(const char* format, va_list ap);
   129   void       va_done(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
   130 
   130 
   131   // write text (with quoting of special XML characters <>&'" etc.)
   131   // write text (with quoting of special XML characters <>&'" etc.)
   132   outputStream* text() { return _text; }
   132   outputStream* text() { return _text; }
   133   void          text(const char* format, ...);
   133   void          text(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
   134   void       va_text(const char* format, va_list ap) {
   134   void       va_text(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0) {
   135     text()->vprint(format, ap);
   135     text()->vprint(format, ap);
   136   }
   136   }
   137 
   137 
   138   // commonly used XML attributes
   138   // commonly used XML attributes
   139   void          stamp();                 // stamp='1.234'
   139   void          stamp();                 // stamp='1.234'