+ * \brief Constructor from a given SQItem
+ */
+SQItem::SQItem(int depthLevel )
+ : DocEntrySet( )
+{
+ SQDepthLevel = depthLevel;
+ SQItemNumber = 0;
+}
+
+/**
+ * \brief Canonical destructor.
+ */
+SQItem::~SQItem()
+{
+ ClearEntry();
+}
+
+//-----------------------------------------------------------------------------
+// Public
+/*
+ * \brief canonical Writer
+ * @param fp file pointer to an already open file.
+ * @param filetype type of the file (ACR, ImplicitVR, ExplicitVR, ...)
+ */
+void SQItem::WriteContent(std::ofstream *fp, FileType filetype)
+{
+ int j;
+ uint16_t item[4] = { 0xfffe, 0xe000, 0xffff, 0xffff };
+ uint16_t itemt[4]= { 0xfffe, 0xe00d, 0xffff, 0xffff };
+
+ //we force the writting of an 'Item' Start Element
+ // because we want to write the Item as a 'no Length' item
+ for(j=0;j<4;++j)
+ {
+ binary_write( *fp, item[j]); // fffe e000 ffff ffff
+ }
+
+ for (ListDocEntry::iterator it = DocEntries.begin();
+ it != DocEntries.end();
+ ++it)
+ {
+ // we skip delimitors (start and end one) because
+ // we force them as 'no length'
+ if ( (*it)->GetGroup() == 0xfffe )
+ {
+ continue;
+ }
+
+ // Fix in order to make some MR PHILIPS images e-film readable
+ // see gdcmData/gdcm-MR-PHILIPS-16-Multi-Seq.dcm:
+ // we just *always* ignore spurious fffe|0000 tag !
+ if ( (*it)->GetGroup() == 0xfffe && (*it)->GetElement() == 0x0000 )
+ {
+ break; // FIXME : continue; ?!?
+ }
+
+ (*it)->WriteContent(fp, filetype);
+ }
+
+ //we force the writting of an 'Item Delimitation' item
+ // because we wrote the Item as a 'no Length' item
+ for(j=0;j<4;++j)
+ {
+ binary_write( *fp, itemt[j]); // fffe e000 ffff ffff
+ }
+}
+
+/**
+ * \brief Inserts *in the right place* any Entry (Dicom Element)
+ * into the Sequence Item
+ * @param entry Entry to add
+ * @return always true