Applied our coding style. Theoretically improved return values.

Data() now enters the debugger as well if called in unlocked state.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8191 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2004-06-27 19:49:16 +00:00
parent ef42360872
commit 14c2eb06d3
+142 -114
View File
@@ -43,212 +43,240 @@ BClipboard *be_clipboard;
BClipboard::BClipboard(const char *name, bool transient) BClipboard::BClipboard(const char *name, bool transient)
{ {
if ( name ) if (name != NULL)
fName = strdup(name); fName = strdup(name);
else else
fName = strdup("system"); fName = strdup("system");
fData = new BMessage(); fData = new BMessage();
fCount = 0; fCount = 0;
fSystemCount = 0; fSystemCount = 0;
BMessage message(B_REG_GET_CLIPBOARD_MESSENGER), reply; BMessage message(B_REG_GET_CLIPBOARD_MESSENGER), reply;
if ( (BRoster::Private().SendTo(&message, &reply, false) == B_OK) && if (BRoster::Private().SendTo(&message, &reply, false) == B_OK
(reply.what == B_REG_SUCCESS) && && reply.what == B_REG_SUCCESS
(reply.FindMessenger("messenger",&fClipHandler) == B_OK) ) && reply.FindMessenger("messenger", &fClipHandler) == B_OK) {
{
BMessage handlerMessage(B_REG_ADD_CLIPBOARD), handlerReply; BMessage handlerMessage(B_REG_ADD_CLIPBOARD), handlerReply;
int32 result; int32 result;
if ( (handlerMessage.AddString("name",fName) == B_OK) && if (handlerMessage.AddString("name", fName) == B_OK
(fClipHandler.SendMessage(&handlerMessage, &handlerReply) == B_OK) ) && fClipHandler.SendMessage(&handlerMessage, &handlerReply) == B_OK)
handlerReply.FindInt32("result",&result); handlerReply.FindInt32("result", &result);
} }
} }
//------------------------------------------------------------------------------
BClipboard::~BClipboard() BClipboard::~BClipboard()
{ {
free(fName); free(fName);
delete fData; delete fData;
} }
//------------------------------------------------------------------------------
const char* BClipboard::Name() const
const char *
BClipboard::Name() const
{ {
return (const char*)fName; return (const char *)fName;
} }
//------------------------------------------------------------------------------
uint32 BClipboard::LocalCount() const
uint32
BClipboard::LocalCount() const
{ {
/* fSystemCount contains the total number of writes to the clipboard. /* fSystemCount contains the total number of writes to the clipboard.
fCount contains the number of writes to the clipboard done by this * fCount contains the number of writes to the clipboard done by this
BClipboard. * BClipboard.
*/ */
return fSystemCount; return fSystemCount;
} }
//------------------------------------------------------------------------------
uint32 BClipboard::SystemCount() const
uint32
BClipboard::SystemCount() const
{ {
int32 val; int32 value;
BMessage message(B_REG_GET_CLIPBOARD_COUNT), reply; BMessage message(B_REG_GET_CLIPBOARD_COUNT), reply;
if ( (message.AddString("name",fName) == B_OK) && if (message.AddString("name", fName) == B_OK
(fClipHandler.SendMessage(&message, &reply) == B_OK) && && fClipHandler.SendMessage(&message, &reply) == B_OK
(reply.FindInt32("count",&val) == B_OK) ) && reply.FindInt32("count", &value) == B_OK)
return (uint32)val; return (uint32)value;
return 0; return 0;
} }
//------------------------------------------------------------------------------
status_t BClipboard::StartWatching(BMessenger target)
status_t
BClipboard::StartWatching(BMessenger target)
{ {
BMessage message(B_REG_CLIPBOARD_START_WATCHING), reply; BMessage message(B_REG_CLIPBOARD_START_WATCHING), reply;
if ( (message.AddString("name",fName) == B_OK) && if (message.AddString("name", fName) == B_OK
(message.AddMessenger("target", target ) == B_OK) && && message.AddMessenger("target", target) == B_OK
(fClipHandler.SendMessage(&message, &reply) == B_OK) ) && fClipHandler.SendMessage(&message, &reply) == B_OK) {
{
int32 result; int32 result;
reply.FindInt32("result",&result); reply.FindInt32("result", &result);
return result; return result;
} }
return B_ERROR; return B_ERROR;
} }
//------------------------------------------------------------------------------
status_t BClipboard::StopWatching(BMessenger target)
status_t
BClipboard::StopWatching(BMessenger target)
{ {
BMessage message(B_REG_CLIPBOARD_STOP_WATCHING), reply; BMessage message(B_REG_CLIPBOARD_STOP_WATCHING), reply;
if ( (message.AddString("name",fName) == B_OK) && if (message.AddString("name", fName) == B_OK
(message.AddMessenger("target", target ) == B_OK) && && message.AddMessenger("target", target) == B_OK
(fClipHandler.SendMessage(&message, &reply) == B_OK) ) && fClipHandler.SendMessage(&message, &reply) == B_OK) {
{
int32 result; int32 result;
reply.FindInt32("result",&result); reply.FindInt32("result", &result);
return result; return result;
} }
return B_ERROR; return B_ERROR;
} }
//------------------------------------------------------------------------------
bool BClipboard::Lock()
bool
BClipboard::Lock()
{ {
/* Will this work correctly if clipboard is deleted while still waiting on // Will this work correctly if clipboard is deleted while still waiting on
fLock.Lock() ? */ // fLock.Lock() ?
bool retVal; bool locked = fLock.Lock();
retVal = fLock.Lock(); if (locked && DownloadFromSystem() != B_OK) {
if ( retVal && locked = false;
(DownloadFromSystem() != B_OK) )
{
retVal = false;
fLock.Unlock(); fLock.Unlock();
} }
return retVal; return locked;
} }
//------------------------------------------------------------------------------
void BClipboard::Unlock()
void
BClipboard::Unlock()
{ {
fLock.Unlock(); fLock.Unlock();
} }
//------------------------------------------------------------------------------
bool BClipboard::IsLocked() const
bool
BClipboard::IsLocked() const
{ {
return fLock.IsLocked(); return fLock.IsLocked();
} }
//------------------------------------------------------------------------------
status_t BClipboard::Clear()
status_t
BClipboard::Clear()
{ {
if ( AssertLocked() && if (!AssertLocked())
(fData->MakeEmpty() == B_OK) ) return B_NOT_ALLOWED;
return B_OK;
return B_ERROR; return fData->MakeEmpty();
} }
//------------------------------------------------------------------------------
status_t BClipboard::Commit()
status_t
BClipboard::Commit()
{ {
if ( AssertLocked() && if (!AssertLocked())
(UploadToSystem() == B_OK) ) return B_NOT_ALLOWED;
return B_OK;
return B_ERROR; return UploadToSystem();
} }
//------------------------------------------------------------------------------
status_t BClipboard::Revert()
status_t
BClipboard::Revert()
{ {
if ( AssertLocked() && if (!AssertLocked())
(fData->MakeEmpty() == B_OK) && return B_NOT_ALLOWED;
(DownloadFromSystem() == B_OK) )
return B_OK; status_t status = fData->MakeEmpty();
return B_ERROR; if (status == B_OK)
status = DownloadFromSystem();
return status;
} }
//------------------------------------------------------------------------------
BMessenger BClipboard::DataSource() const
BMessenger
BClipboard::DataSource() const
{ {
return fDataSource; return fDataSource;
} }
//------------------------------------------------------------------------------
BMessage* BClipboard::Data() const
BMessage *
BClipboard::Data() const
{ {
if ( IsLocked() ) if (!AssertLocked())
return fData;
return NULL; return NULL;
return fData;
} }
//------------------------------------------------------------------------------
// #pragma mark -
// Private methods
BClipboard::BClipboard(const BClipboard &) BClipboard::BClipboard(const BClipboard &)
{ {
/* This is private, and I don't use it, so I'm not going to implement it */ // This is private, and I don't use it, so I'm not going to implement it
} }
//------------------------------------------------------------------------------
BClipboard & BClipboard::operator=(const BClipboard &) BClipboard & BClipboard::operator=(const BClipboard &)
{ {
/* This is private, and I don't use it, so I'm not going to implement it */ // This is private, and I don't use it, so I'm not going to implement it
return *this; return *this;
} }
//------------------------------------------------------------------------------
void BClipboard::_ReservedClipboard1()
{ void BClipboard::_ReservedClipboard1() {}
} void BClipboard::_ReservedClipboard2() {}
//------------------------------------------------------------------------------ void BClipboard::_ReservedClipboard3() {}
void BClipboard::_ReservedClipboard2()
{
} bool
//------------------------------------------------------------------------------ BClipboard::AssertLocked() const
void BClipboard::_ReservedClipboard3()
{
}
//------------------------------------------------------------------------------
bool BClipboard::AssertLocked() const
{ {
// This function is for jumping to the debugger if not locked // This function is for jumping to the debugger if not locked
if(!fLock.IsLocked()) if (!fLock.IsLocked()) {
{
debugger("The clipboard must be locked before proceeding."); debugger("The clipboard must be locked before proceeding.");
return false; return false;
} }
return true; return true;
} }
//------------------------------------------------------------------------------
status_t BClipboard::DownloadFromSystem(bool force)
status_t
BClipboard::DownloadFromSystem(bool force)
{ {
// Apparently, the force paramater was used in some sort of // Apparently, the force paramater was used in some sort of
// optimization in R5. Currently, we ignore it. // optimization in R5. Currently, we ignore it.
BMessage message(B_REG_DOWNLOAD_CLIPBOARD), reply; BMessage message(B_REG_DOWNLOAD_CLIPBOARD), reply;
if ( (message.AddString("name",fName) == B_OK) && if (message.AddString("name", fName) == B_OK
(fClipHandler.SendMessage(&message, &reply) == B_OK) && && fClipHandler.SendMessage(&message, &reply) == B_OK
(reply.FindMessage("data",fData) == B_OK) && && reply.FindMessage("data", fData) == B_OK
(reply.FindMessenger("data source",&fDataSource) == B_OK) && && reply.FindMessenger("data source", &fDataSource) == B_OK
(reply.FindInt32("count",(int32 *)(&fSystemCount)) == B_OK) ) && reply.FindInt32("count", (int32 *)&fSystemCount) == B_OK)
return B_OK; return B_OK;
return B_ERROR; return B_ERROR;
} }
//------------------------------------------------------------------------------
status_t BClipboard::UploadToSystem()
status_t
BClipboard::UploadToSystem()
{ {
BMessage message(B_REG_UPLOAD_CLIPBOARD), reply; BMessage message(B_REG_UPLOAD_CLIPBOARD), reply;
if ( (message.AddString("name",fName) == B_OK) && if (message.AddString("name", fName) == B_OK
(message.AddMessage("data",fData) == B_OK) && && message.AddMessage("data", fData) == B_OK
(message.AddMessenger("data source", be_app_messenger ) == B_OK) && && message.AddMessenger("data source", be_app_messenger) == B_OK
(fClipHandler.SendMessage(&message, &reply) == B_OK) && && fClipHandler.SendMessage(&message, &reply) == B_OK
(reply.FindInt32("count",(int32 *)(&fSystemCount)) == B_OK) ) && reply.FindInt32("count", (int32 *)&fSystemCount) == B_OK) {
{
fCount++; fCount++;
return B_OK; return B_OK;
} }
return B_ERROR; return B_ERROR;
} }
//------------------------------------------------------------------------------