+void SeqEntry::Print( std::ostream &os )
+{
+ // First, Print the Dicom Element itself.
+ SetPrintLevel(2);
+ DocEntry::Print(os);
+ os << std::endl;
+
+ if (GetReadLength() == 0)
+ return;
+
+ // Then, Print each SQ Item
+ for(ListSQItem::iterator cc = Items.begin(); cc != Items.end(); ++cc)
+ {
+ (*cc)->Print(os);
+ }
+
+ // at end, print the sequence terminator item, if any
+ if (DelimitorMode)
+ {
+ for ( int i = 0; i < SQDepthLevel; i++ )
+ {
+ os << " | " ;
+ }
+ if (SeqTerm != NULL)
+ {
+ SeqTerm->Print(os);
+ os << std::endl;
+ }
+ else
+ {
+ // fuse
+ os << " -------------- should have a sequence terminator item";
+ }
+ }
+}
+
+/*
+ * \brief canonical Writer
+ */
+void SeqEntry::Write(std::ofstream* fp, FileType filetype)
+{
+ uint16_t seq_term_gr = 0xfffe;
+ uint16_t seq_term_el = 0xe0dd;
+ uint32_t seq_term_lg = 0xffffffff;
+
+ //uint16_t item_term_gr = 0xfffe;
+ //uint16_t item_term_el = 0xe00d;
+
+ DocEntry::Write(fp, filetype);
+ for(ListSQItem::iterator cc = Items.begin();
+ cc != Items.end();
+ ++cc)
+ {
+ (*cc)->Write(fp, filetype);
+ }
+
+ // we force the writting of a Sequence Delimitation item
+ // because we wrote the Sequence as a 'no Length' sequence
+ binary_write(*fp, seq_term_gr);
+ binary_write(*fp, seq_term_el);
+ binary_write(*fp, seq_term_lg);
+}