libs-gdl2/EOAccess/EOPrivate.m
Dave Wetzel e92812fdff * EOAccess/EODatabaseContext.m
implemented _assertValidStateWithSelector:
fixed leaks
* EOAccess/Makefile.preamble: added -Werror-implicit-function-declaration
* EOAccess/*: ported to new runtime and OS X



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@30242 72102866-910b-0410-8b05-ffd578937521
2010-04-26 21:52:42 +00:00

129 lines
3.5 KiB
Objective-C

/**
EOPrivate.m <title>EOPrivate: various definitions</title>
Copyright (C) 2005 Free Software Foundation, Inc.
Date: Jan 2005
$Revision$
$Date$
<abstract></abstract>
This file is part of the GNUstep Database Library.
<license>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
</license>
**/
#include "config.h"
RCS_ID("$Id$")
#include <Foundation/Foundation.h>
#ifndef GNUSTEP
#include <GNUstepBase/GNUstep.h>
#include <GNUstepBase/GSObjCRuntime.h>
#endif
#include <EOControl/EOFault.h>
#include <EOControl/EOMutableKnownKeyDictionary.h>
#include <EOAccess/EOAttribute.h>
#include <EOAccess/EODatabaseContext.h>
#include "EOPrivate.h"
// ==== Classes ====
Class GDL2_EODatabaseContextClass=Nil;
Class GDL2_EOAttributeClass=Nil;
// ==== IMPs ====
IMP GDL2_EODatabaseContext_snapshotForGlobalIDIMP=NULL;
IMP GDL2_EODatabaseContext__globalIDForObjectIMP=NULL;
// ==== Init Method ====
void GDL2_EOAccessPrivateInit()
{
static BOOL initialized=NO;
if (!initialized)
{
initialized = YES;
GDL2_PrivateInit();
// ==== Classes ====
GDL2_EODatabaseContextClass = [EODatabaseContext class];
GDL2_EOAttributeClass = [EOAttribute class];
GDL2_EODatabaseContext_snapshotForGlobalIDIMP=[GDL2_EODatabaseContextClass instanceMethodForSelector:@selector(snapshotForGlobalID:)];
GDL2_EODatabaseContext__globalIDForObjectIMP=[GDL2_EODatabaseContextClass instanceMethodForSelector:@selector(_globalIDForObject:)];
};
}
// ==== EODatabaseContext ====
NSDictionary *
EODatabaseContext_snapshotForGlobalIDWithImpPtr(EODatabaseContext* dbContext,
IMP* impPtr,
EOGlobalID* gid)
{
if (dbContext)
{
IMP imp=NULL;
if (impPtr)
imp=*impPtr;
if (!imp)
{
if (object_getClass(dbContext)==GDL2_EODatabaseContextClass
&& GDL2_EODatabaseContext_snapshotForGlobalIDIMP)
imp=GDL2_EODatabaseContext_snapshotForGlobalIDIMP;
else
imp=[dbContext methodForSelector:@selector(snapshotForGlobalID:)];
if (impPtr)
*impPtr=imp;
}
return (*imp)(dbContext,@selector(snapshotForGlobalID:),gid);
}
else
return nil;
};
EOGlobalID* EODatabaseContext_globalIDForObjectWithImpPtr(EODatabaseContext* dbContext,IMP* impPtr,id object)
{
if (dbContext)
{
IMP imp=NULL;
if (impPtr)
imp=*impPtr;
if (!imp)
{
if (object_getClass(dbContext)==GDL2_EODatabaseContextClass
&& GDL2_EODatabaseContext__globalIDForObjectIMP)
imp=GDL2_EODatabaseContext__globalIDForObjectIMP;
else
imp=[dbContext methodForSelector:@selector(_globalIDForObject:)];
if (impPtr)
*impPtr=imp;
}
return (*imp)(dbContext,@selector(_globalIDForObject:),object);
}
else
return nil;
};