16using namespace Common;
19using namespace Common::MediaticData;
20using namespace Common::BagOfWords;
32 void writeMultimediaFeature(std::vector<float> vect);
33 void writeVectorFloat(std::vector<float> vect);
35 std::ostream& m_outputStream;
39 void incIndent() { m_spaces+=
" "; }
40 void decIndent() { m_spaces.erase(m_spaces.size()-2); }
41 void setSpaces(
const std::string& s){m_spaces=s;}
59 m_dmult->m_outputStream <<
"<?xml-stylesheet type=\"text/xsl\" href=\"bow.xslt\"?>" << std::endl;
60 m_dmult->m_outputStream <<
"<MultimediaDocuments>" << std::endl;
66 m_dmult->m_outputStream <<
"</MultimediaDocuments>" << std::endl;
72 m_dmult->setSpaces(s);
89 const std::string& elementName )
91 m_dmult->m_outputStream << m_dmult->m_spaces <<
"<node elementName=\""
92 << elementName <<
"\">" << std::endl;
98 const std::string& elementName )
100 m_dmult->m_outputStream << m_dmult->m_spaces <<
"<node elementName=\""
101 << elementName <<
"\" indexingNode=\"yes\">" << std::endl;
108 m_dmult->m_outputStream << m_dmult->m_spaces <<
"</node>" << std::endl;
128 std::vector<float>& vect)
131 unsigned int contentId;
132 file.read((
char* ) &contentId,
sizeof (
unsigned int ));
134 file.read((
char* ) &size,
sizeof (
unsigned int ));
136 char* cstr=
new char[size+1];
137 file.read((
char *) cstr,size*
sizeof(
char));
142 file.read((
char* ) &size,
sizeof (
unsigned int));
144 char* cstr2=
new char[size+1];
145 file.read((
char *) cstr2,size*
sizeof(
char));
150 file.read((
char* ) &size,
sizeof (
unsigned int ));
152 for (
unsigned int i=0;i<size;i++)
155 file.read((
char* ) &val,
sizeof (
float ));
165 bool useIndexIterator)
171 LDEBUG <<
"MultimediaBinaryReader::readBoWDocumentBlock: read blocType" << blocType;
176 case BoWBlocType::HIERARCHY_BLOC:
179 LDEBUG <<
"HIERARCHY_BLOC";
181 std::string elementName;
183 handler.
openSNode(&document, elementName);
187 case BoWBlocType::INDEXING_BLOC:
190 LDEBUG <<
"INDEXING_BLOC";
192 std::string elementName;
198 case BoWBlocType::BIN_NUM_BLOC:
204 unsigned int cid;
string name,path;std::vector<float> vect;
218 case BoWBlocType::BOW_TEXT_BLOC:
221 LDEBUG <<
"BOW_TEXT_BLOC";
234 case BoWBlocType::NODE_PROPERTIES_BLOC:
237 LDEBUG <<
"NODE_PROPERTIES_BLOC";
239 document.Misc::GenericDocumentProperties::read(file);
243 case BoWBlocType::END_BLOC:
251 case BoWBlocType::DOCUMENT_PROPERTIES_BLOC:
254 LDEBUG <<
"DOCUMENT_PROPERTIES_BLOC";
258 case BoWBlocType::ST_BLOC:
273 LDEBUG <<
"MultimediaBinaryReader::readMultimediaDocumentBlock EOF reached but last blockType was" << blocType <<
getBlocTypeString(blocType);
275 if(blocType!= BoWBlocType::END_BLOC){
277 LERROR <<
"MultimediaBinaryReader::readMultimediaDocumentBlock EOF reached but last blockType was not END_BLOC : " << blocType <<
getBlocTypeString(blocType);
285 m_dmult->m_outputStream << m_dmult->m_spaces <<
"<content type=\""
286 << properties->
getStringValue(
"type").first <<
"\">" << std::endl;
293 m_dmult->m_outputStream <<m_dmult->m_spaces <<
"</content>" << std::endl;
300 m_dmult->writeMultimediaFeature(vect);
303void MultimediaXMLWriterPrivate::writeVectorFloat(std::vector<float> vect)
305 unsigned int size = vect.size();
306 m_outputStream << m_spaces <<
"<vector type=\"float\" n=\""
307 << size <<
"\">" << std::endl;
308 m_outputStream<<m_spaces;
309 for (
unsigned int i=0;i<size-1;i++)
311 m_outputStream<<vect.at(i)<<
" ";
313 m_outputStream<<vect.at(size-1)<<std::endl;
314 m_outputStream<<m_spaces<<
"</vector>"<<std::endl ;
316void MultimediaXMLWriterPrivate::writeMultimediaFeature(std::vector<float> vect)
319 m_outputStream<<m_spaces<<
"<feature>"<<std::endl;
321 writeVectorFloat(vect);
323 m_outputStream<<m_spaces <<
"</feature>"<<std::endl;
void readBoWText(std::istream &file, BoWText &bowText)
represent a document as a Bag Of Word, with associated document properties.
virtual void clear() override
void setSpaces(const std::string &s)
void processSBoWText(const BoWText *boWText, bool useIterators, bool useIndexIterator) override
void processProperties(const Misc::GenericDocumentProperties *properties, bool useIterators, bool useIndexIterator) override
std::pair< std::string, bool > getStringValue(std::string propName) const
void setStringValue(const std::string &propName, const std::string &val)
void setIntValue(const std::string &propName, const uint64_t &val)
std::string getBlocTypeString(BoWBlocType blocType)
uint8_t readOneByteInt(std::istream &file)
read a integer coded on one byte in a file
void readStringField(istream &file, string &s)