<html><head></head><body><div class="yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div id="ydpa2198ec2yahoo_quoted_1578992678" class="ydpa2198ec2yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div dir="ltr" data-setdir="false">Sounds like a use case for pd_findbyclassname</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">-Jonathan<br></div><div><br></div><div>
                    On Tuesday, January 19, 2021, 3:40:01 PM EST, Miller Puckette via Pd-dev <pd-dev@lists.iem.at> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div>That's indeed the difference - a c object like "send_test_class" can't<br clear="none">be shared beteen different object modules loaded separately into Pd.  This<br clear="none">is one reason people have sometimes put multiple externals into a single<br clear="none">object file.<br clear="none"><br clear="none">You could have both externs have the same  "family name" (like<br clear="none">"array define" and "array set") - then they can both be defined in the<br clear="none">same C object file "binarytree.[extent]".<br clear="none"><br clear="none">cheers<br clear="none">Miller<br clear="none"><br clear="none">On Tue, Jan 19, 2021 at 11:38:22AM -0800, Eric Lennartson wrote:<br clear="none">> Hello all,<br clear="none">> <br clear="none">> I've been working on trying to send data between different externals, but<br clear="none">> I'm not doing something quite right. I've looked at the code in d_global.c<br clear="none">> as well as for send and receive.<br clear="none">> The only difference I can see is that mine is not all in the same .c file<br clear="none">> while in the pd source it is.<br clear="none">> <br clear="none">> Here's the external with the data. Just an int for now, but it will be<br clear="none">> holding a binary tree later.<br clear="none">> <br clear="none">> static t_class *send_test_class;<br clear="none">> typedef struct _send_test {<br clear="none">>    t_object  x_obj;<br clear="none">>    t_symbol* name;<br clear="none">>    int value;<br clear="none">> }t_send_test;<br clear="none">> <br clear="none">> static void *send_test_new(t_symbol *s, t_floatarg f) {<br clear="none">>    t_send_test *x = (t_send_test *)pd_new(send_test_class);<br clear="none">>    x->name = s;<br clear="none">>    x->value = f;<br clear="none">>    pd_bind(&x->x_obj.ob_pd, s); // bind to the name we're given<br clear="none">>    post("send_test created with name %s, and value %d", x->name->s_name,<br clear="none">> x->value);<br clear="none">>    return(x);<br clear="none">> }<br clear="none">> <br clear="none">> static void send_test_free(t_send_test *x) {<br clear="none">>    pd_unbind(&x->x_obj.ob_pd, x->name); // unbind when deleted<br clear="none">> }<br clear="none">> <br clear="none">> void send_test_setup(void) {<br clear="none">>    send_test_class = class_new(gensym("send_test"),<br clear="none">>                                  (t_newmethod)send_test_new,<br clear="none">>                                  (t_method)send_test_free,<br clear="none">>                                  sizeof(t_send_test),<br clear="none">>                                  CLASS_NOINLET,<br clear="none">>                                  A_DEFSYM,<br clear="none">>                                  A_DEFFLOAT,<br clear="none">>                                  0);<br clear="none">> }<br clear="none">> <br clear="none">> And here's the receiver.<br clear="none">> <br clear="none">> static t_class *send_test_class;<br clear="none">> <br clear="none">> static t_class *rcv_test_class;<br clear="none">> <br clear="none">> typedef struct _send_test {<br clear="none">>    t_object  x_obj;<br clear="none">>    t_symbol* name;<br clear="none">>    int value;<br clear="none">> }t_send_test;<br clear="none">> <br clear="none">> typedef struct _rcv_test {<br clear="none">>    t_object  x_obj;<br clear="none">>    t_symbol* name;<br clear="none">> <br clear="none">>    int value;<br clear="none">> } t_rcv_test;<br clear="none">> <br clear="none">> static void *rcv_test_new(t_symbol *s) {<br clear="none">>    t_rcv_test *x = (t_rcv_test *)pd_new(rcv_test_class);<br clear="none">>    x->name = s;<br clear="none">>    t_send_test* sender = (t_send_test*)pd_findbyclass(x->name,<br clear="none">> send_test_class);<br clear="none">> <br clear="none">>     x->value = sender->value;<br clear="none">>     post("sender value is %d", sender->value);<br clear="none">>     post("rcv_test created with name %s, and value %d", x->name->s_name,<br clear="none">> x->value);<br clear="none">>     return(x);<br clear="none">> }<br clear="none">> <br clear="none">> static void rcv_test_free(t_rcv_test *x) {}<br clear="none">> <br clear="none">> void rcv_test_setup(void) {<br clear="none">>    rcv_test_class = class_new(gensym("rcv_test"),<br clear="none">>                                                (t_newmethod)rcv_test_new,<br clear="none">>                                                (t_method)rcv_test_free,<br clear="none">>                                                 sizeof(t_rcv_test),<br clear="none">>                                                 CLASS_NOINLET,<br clear="none">>                                                 A_DEFSYM,<br clear="none">> <br clear="none">>                                                 0);<br clear="none">> }<br clear="none">> <br clear="none">> What exactly is it that I'm doing wrong?<br clear="none"><br clear="none">> _______________________________________________<br clear="none">> Pd-dev mailing list<br clear="none">> <a shape="rect" href="mailto:Pd-dev@lists.iem.at" rel="nofollow" target="_blank">Pd-dev@lists.iem.at</a><br clear="none">> <a shape="rect" href="https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-dev__;!!Mih3wA!VoxPg_QV2Wia0Bhqv5t54R15b6iXu3DV1JfxM_8o6mhkR8gzvwWWu2gwPZVM$ " rel="nofollow" target="_blank">https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-dev__;!!Mih3wA!VoxPg_QV2Wia0Bhqv5t54R15b6iXu3DV1JfxM_8o6mhkR8gzvwWWu2gwPZVM$ </a><div class="ydpa2198ec2yqt4898235508" id="ydpa2198ec2yqtfd13607"><br clear="none"><br clear="none"><br clear="none"><br clear="none"><br clear="none">_______________________________________________<br clear="none">Pd-dev mailing list<br clear="none"><a shape="rect" href="mailto:Pd-dev@lists.iem.at" rel="nofollow" target="_blank">Pd-dev@lists.iem.at</a><br clear="none"><a shape="rect" href="https://lists.puredata.info/listinfo/pd-dev" rel="nofollow" target="_blank">https://lists.puredata.info/listinfo/pd-dev</a><br clear="none"></div></div>
            </div>
        </div></div></body></html>