plugins/tcl/tcl_ref.c

Wed, 09 Aug 2006 14:47:37 +0000

author
Luke Schierer <lschiere@pidgin.im>
date
Wed, 09 Aug 2006 14:47:37 +0000
changeset 14123
7ae9b90ecf6f
parent 13827
6a6c8e70411c
permissions
-rw-r--r--

[gaim-migrate @ 16679]
some translation updates. I have questions about gu.po, if someone sees that answered, we might need to revert that part of the change. It is all very confusing. The same person submitted the original gu.po and this update, but he called it gu_IN this time…

13814
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1 /**
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
2 * @file tcl_ref.c Gaim Tcl typed references API
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
3 *
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
4 * gaim
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
5 *
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
6 * Copyright (C) 2006 Ethan Blanton <eblanton@cs.purdue.edu>
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
7 *
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
12 *
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
17 *
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21 */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
22
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
23 #include <tcl.h>
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
24 #include <glib.h>
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
25
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26 #include "tcl_gaim.h"
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27 #include "stringref.h"
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
28
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29 /* Instead of all that internal representation mumbo jumbo, use these
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
30 * macros to access the internal representation of a GaimTclRef */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
31 #define OBJ_REF_TYPE(obj) (obj->internalRep.twoPtrValue.ptr1)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
32 #define OBJ_REF_VALUE(obj) (obj->internalRep.twoPtrValue.ptr2)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
33
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
34 static Tcl_FreeInternalRepProc gaim_tcl_ref_free;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
35 static Tcl_DupInternalRepProc gaim_tcl_ref_dup;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
36 static Tcl_UpdateStringProc gaim_tcl_ref_update;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
37 static Tcl_SetFromAnyProc gaim_tcl_ref_set;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
38
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39 static Tcl_ObjType gaim_tcl_ref = {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
40 "GaimTclRef",
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
41 gaim_tcl_ref_free,
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
42 gaim_tcl_ref_dup,
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
43 gaim_tcl_ref_update,
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
44 gaim_tcl_ref_set
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45 };
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
46
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
47 void gaim_tcl_ref_init()
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
48 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
49 Tcl_RegisterObjType(&gaim_tcl_ref);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
50 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
51
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
52 void *gaim_tcl_ref_get(Tcl_Interp *interp, Tcl_Obj *obj, GaimStringref *type)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
53 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
54 if (obj->typePtr != &gaim_tcl_ref) {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
55 if (Tcl_ConvertToType(interp, obj, &gaim_tcl_ref) != TCL_OK)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
56 return NULL;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
57 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
58 if (strcmp(gaim_stringref_value(OBJ_REF_TYPE(obj)),
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
59 gaim_stringref_value(type))) {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
60 if (interp) {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
61 Tcl_Obj *error = Tcl_NewStringObj("Bad Gaim reference type: expected ", -1);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
62 Tcl_AppendToObj(error, gaim_stringref_value(type), -1);
13827
6a6c8e70411c [gaim-migrate @ 16269]
Ethan Blanton <elb@pidgin.im>
parents: 13814
diff changeset
63 Tcl_AppendToObj(error, " but got ", -1);
13814
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
64 Tcl_AppendToObj(error, gaim_stringref_value(OBJ_REF_TYPE(obj)), -1);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
65 Tcl_SetObjResult(interp, error);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
66 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
67 return NULL;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
68 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
69 return OBJ_REF_VALUE(obj);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
70 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
71
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
72 Tcl_Obj *gaim_tcl_ref_new(GaimStringref *type, void *value)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
73 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
74 Tcl_Obj *obj = Tcl_NewObj();
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
75 obj->typePtr = &gaim_tcl_ref;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
76 OBJ_REF_TYPE(obj) = gaim_stringref_ref(type);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
77 OBJ_REF_VALUE(obj) = value;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
78 Tcl_InvalidateStringRep(obj);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
79 return obj;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
80 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
81
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
82 static void gaim_tcl_ref_free(Tcl_Obj *obj)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
83 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
84 gaim_stringref_unref(OBJ_REF_TYPE(obj));
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
85 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
86
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
87 static void gaim_tcl_ref_dup(Tcl_Obj *obj1, Tcl_Obj *obj2)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
88 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
89 OBJ_REF_TYPE(obj2) = gaim_stringref_ref(OBJ_REF_TYPE(obj1));
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
90 OBJ_REF_VALUE(obj2) = OBJ_REF_VALUE(obj1);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
91 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
92
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
93 static void gaim_tcl_ref_update(Tcl_Obj *obj)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
94 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
95 /* This is ugly on memory, but we pretty much have to either
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
96 * do this or guesstimate lengths or introduce a varargs
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
97 * function in here ... ugh. */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98 char *bytes = g_strdup_printf("gaim-%s:%p",
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
99 gaim_stringref_value(OBJ_REF_TYPE(obj)),
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
100 OBJ_REF_VALUE(obj));
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
101
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
102 obj->length = strlen(bytes);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
103 obj->bytes = ckalloc(obj->length + 1);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
104 strcpy(obj->bytes, bytes);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
105 g_free(bytes);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
106 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
107
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
108 /* This isn't as memory-efficient as setting could be, because we
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
109 * essentially have to synthesize the Stringref here, where we would
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
110 * really rather dup it. Oh, well. */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
111 static int gaim_tcl_ref_set(Tcl_Interp *interp, Tcl_Obj *obj)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
112 {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
113 char *bytes = Tcl_GetStringFromObj(obj, NULL);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
114 char *ptr;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
115 GaimStringref *type;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
116 void *value;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
117
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
118 if (strlen(bytes) < 7
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
119 || strncmp(bytes, "gaim-", 5)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
120 || (ptr = strchr(bytes, ':')) == NULL
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
121 || (ptr - bytes) == 5)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
122 goto badobject;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
123
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
124 /* Bad Ethan */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
125 *ptr = '\0';
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 type = gaim_stringref_new(bytes + 5);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
127 *ptr = ':';
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
128 ptr++;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
129
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130 if (sscanf(ptr, "%p", &value) == 0) {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131 gaim_stringref_unref(type);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
132 goto badobject;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
133 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
134
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135 /* At this point we know we have a good object; free the old and
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
136 * install our internal representation. */
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
137 if (obj->typePtr != NULL && obj->typePtr->freeIntRepProc != NULL)
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
138 obj->typePtr->freeIntRepProc(obj);
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
140 obj->typePtr = &gaim_tcl_ref;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
141 OBJ_REF_TYPE(obj) = type;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
142 OBJ_REF_VALUE(obj) = value;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
143
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
144 return TCL_OK;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
145
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
146 badobject:
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
147 if (interp) {
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
148 Tcl_SetObjResult(interp,
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
149 Tcl_NewStringObj("invalid GaimTclRef representation", -1));
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
150 }
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
151 return TCL_ERROR;
67fa8b2fec4c [gaim-migrate @ 16243]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
152 }

mercurial