Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/librecsort/rsmethod.c
1808 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1996-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Phong Vo <[email protected]> *
18
* Glenn Fowler <[email protected]> *
19
* *
20
***********************************************************************/
21
#include "rshdr.h"
22
23
/* Change method for a context
24
**
25
** Written by Kiem-Phong Vo (07/29/96).
26
*/
27
28
#if __STD_C
29
Rsmethod_t* rsmethod(Rs_t* rs, Rsmethod_t* meth)
30
#else
31
Rsmethod_t* rsmethod(rs, meth)
32
Rs_t* rs;
33
Rsmethod_t* meth;
34
#endif
35
{
36
reg Rsmethod_t* old = rs->meth;
37
reg Void_t* methdata;
38
39
if(!meth)
40
return old;
41
42
if (RSNOTIFY(rs,RS_METHOD,meth,0,rs->disc) < 0)
43
return NIL(Rsmethod_t*);
44
45
if(meth->size <= 0)
46
methdata = NIL(Void_t*);
47
else if(!(methdata = vmresize(Vmheap,NIL(Void_t*),meth->size,VM_RSZERO)) )
48
return NIL(Rsmethod_t*);
49
50
if(rs->methdata)
51
vmfree(Vmheap,rs->methdata);
52
53
rs->meth = meth;
54
rs->methdata = methdata;
55
56
return old;
57
}
58
59