Capnproto D language Print all data in a file -
i downloaded capnproto dlanguage , started tinkering sample-addressbook.. problem is, everytime add person addressbook, still prints 1 of data in file, instead of whole file..
void writeaddressbook() { messagebuilder message = new messagebuilder(); auto addressbook = message.initroot!addressbook; auto people = addressbook.initpeople(1); auto person = people[0]; person.id = 123; person.setname("tomas"); person.email = "tomas@example.com"; auto personphones = person.initphones(1); personphones[0].number = "0917xxxxxxx"; personphones[0].type = person.phonenumber.type.mobile; person.employment.school = "school of thoughts"; file f = file("1.dat","a+b"); serializepacked.writetounbuffered(new filedescriptor(f), message); }
if call writeaddressbook() 4 times, have 4 people in addressbook same name, problem is, everytime print of data, prints first one..
void printaddressbook() { file f = file("1.dat","r"); auto message = serializepacked.readfromunbuffered(new filedescriptor(f)); auto addressbook = message.getroot!addressbook; foreach(person; addressbook.people) { writefln("%s: %s", person.name, person.email); foreach(phone; person.phones) { string typename = "unknown"; switch(phone.type) with(person.phonenumber.type) { case mobile: typename = "mobile"; break; case home: typename = "home"; break; case work: typename = "work"; break; default: break; } writefln(" %s phone: %s", typename, phone.number); } auto employment = person.employment; switch(employment.which()) with(person.employment.which) { case unemployed: writefln(" unemployed"); break; case employer: writefln(" employer: %s", employment.employer); break; case school: writefln(" student at: %s", employment.school); break; case selfemployed: writefln(" self-employed"); break; default: break; } } }
Comments
Post a Comment