/usr/include/barry/m_desktoptmpl.h is in libbarry-dev 0.15-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | ///
/// \file m_desktoptmpl.h
/// Ease of use templates for the Desktop mode class
///
/*
Copyright (C) 2005-2009, Net Direct Inc. (http://www.netdirect.ca/)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License in the COPYING file at the
root directory of this project for more details.
*/
#ifndef __BARRY_M_DESKTOPTMPL_H__
#define __BARRY_M_DESKTOPTMPL_H__
#include "dll.h"
#include "m_desktop.h"
#include "parser.h"
#include "builder.h"
namespace Barry { namespace Mode {
BXEXPORT void LoadDatabase(unsigned int dbId, Parser &parser);
BXEXPORT void SaveDatabase(unsigned int dbId, Builder &builder);
template <class RecordT, class StorageT>
void Desktop::LoadDatabaseByType(StorageT &store)
{
unsigned int dbId = this->GetDBID( RecordT::GetDBName() );
Barry::RecordParser<RecordT, StorageT> parser(store);
this->LoadDatabase(dbId, parser);
}
template <class RecordT, class StorageT>
void Desktop::SaveDatabaseByType(StorageT &store)
{
unsigned int dbId = this->GetDBID( RecordT::GetDBName() );
Barry::RecordBuilder<RecordT, StorageT> build(store);
SaveDatabase(dbId, build);
}
template <class StorageT>
void Desktop::LoadDatabaseByName(const std::string &name, StorageT &store)
{
if( name == Contact::GetDBName() )
LoadDatabaseByType<Contact>(store);
else if( name == Message::GetDBName() )
LoadDatabaseByType<Message>(store);
else if( name == Calendar::GetDBName() )
LoadDatabaseByType<Calendar>(store);
else
throw Error("Unknown database name in LoadDatabaseByName: " + name);
}
template <class StorageT>
void Desktop::SaveDatabaseByName(const std::string &name, StorageT &store)
{
if( name == Contact::GetDBName() )
SaveDatabaseByType<Contact>(store);
else if( name == Message::GetDBName() )
SaveDatabaseByType<Message>(store);
else if( name == Calendar::GetDBName() )
SaveDatabaseByType<Calendar>(store);
else
throw Error("Unknown database name in SaveDatabaseByName: " + name);
}
template <class RecordT>
void Desktop::AddRecordByType(uint32_t recordId, const RecordT &rec)
{
unsigned int dbId = this->GetDBID( RecordT::GetDBName() );
// FIXME - I know this is a convenience template, but it still
// hurts making a temporary copy just to set the record ID...
// create a better API for this.
RecordT r = rec;
r.SetIds(RecordT::GetDefaultRecType(), recordId);
Barry::RecordFetch<RecordT> fetch(r);
Barry::RecordBuilder<RecordT, Barry::RecordFetch<RecordT> > build(fetch);
this->AddRecord(dbId, build);
}
}} // namespace Barry::Mode
#endif
|