convert line ends
[canaan.git] / prj / cam / src / object / linkdata.cpp
blob8e67991f3822f34fc4617912afc7fa6d1194d4a1
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/object/linkdata.cpp,v 1.5 1998/10/08 16:25:04 MROWLEY Exp $
7 #include <linkdat_.h>
8 #include <linkdb_.h>
9 #include <linkstor.h>
10 #include <hshsttem.h>
12 #include <string.h>
14 // Must be last header
15 #include <dbmem.h>
17 ////////////////////////////////////////////////////////////
19 STDMETHODIMP cLargeLinkDataStore::Set(LinkID id, void* data)
21 sLinkDataTableElem* elem = Table.Search(id);
22 if (elem == NULL)
24 elem = (sLinkDataTableElem*)new char[Size+sizeof(LinkID)];
25 elem->id = id;
26 elem = Table.Insert(elem);
28 if (data != elem->data)
29 memcpy(elem->data,data,Size);
31 return S_OK;
34 STDMETHODIMP_(void*) cLargeLinkDataStore::Get(LinkID id)
36 sLinkDataTableElem* elem = Table.Search(id);
37 if (elem != NULL)
38 return elem->data;
40 return NULL;
43 STDMETHODIMP_(ulong) cLargeLinkDataStore::DataSize()
45 return Size;
48 STDMETHODIMP cLargeLinkDataStore::Remove(LinkID id)
50 sLinkDataTableElem* elem = Table.Search(id);
51 if (elem != NULL)
53 Table.Remove(elem);
54 delete elem;
56 return S_OK;
59 ILinkDataStore* CreateManagedLinkDataStore(ulong data_size)
61 return new cLargeLinkDataStore(data_size);