I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
``` print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string ```
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
That error indicates that one of the atoms has an a_type field that is neither A_FLOAT nor A_SYMBOL.
It's odd that in `outlet_list(x->outlist, &s_list, 3, x->outlist)` you're using x->outlist for two of the arguments - the first should be the outlet, and the other one should be the array of 3 atoms.
cheers
Miller
On 9/21/23 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-dev__;!!...
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
You accidentally passed the outlet itself as the last argument (t_atom *) to outlet_list().
Unfortunately, C only offers minimal type checking and happily casts between unrelated pointer types. (With C++ this wouldn't compile in the first place.) However, although this is legal in C, all major compilers issue a warning ("-Wincompatible-pointer-types" on GCC/Clang resp. "warning C4133" with MSVC).
Always check the compiler outputs for warnings!||
||
---
Now to your actual question:
I'm trying to output a list of values with a selector. For example, "foo 1 2".
The function you're looking for is outlet_anything().
BTW, this is covered in the externals-howto: https://github.com/pure-data/externals-howto#outlet-anything
Christof
On 21.09.2023 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
That's what I need, indeed. I can't get my head around how to create the selector symbol though. The second argument to outlet_anything is a pointer to a t_symbol, but how do I get a pointer to a "foo" symbol?
I've tried `t_symbol *s = atom_gensym("foo")` but I get a warning the atom_gensym() expects a const t_atom *a, and when I pass `s` to the second argument of outlet_anything and print the output, I get "???" instead of "foo". This might be obvious, but it's quite complicated to me.
On 9/21/23 10:00, Christof Ressi wrote:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
You accidentally passed the outlet itself as the last argument (t_atom *) to outlet_list().
Unfortunately, C only offers minimal type checking and happily casts between unrelated pointer types. (With C++ this wouldn't compile in the first place.) However, although this is legal in C, all major compilers issue a warning ("-Wincompatible-pointer-types" on GCC/Clang resp. "warning C4133" with MSVC).
Always check the compiler outputs for warnings!||
||
Now to your actual question:
I'm trying to output a list of values with a selector. For example, "foo 1 2".
The function you're looking for is outlet_anything().
BTW, this is covered in the externals-howto: https://github.com/pure-data/externals-howto#outlet-anything
Christof
On 21.09.2023 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
I've tried `t_symbol *s = atom_gensym("foo")`
Where do you see "atom_gensym"? I guess you confused it with "atom_getsymbol" (which tries to interpret an atom as a symbol).
but how do I get a pointer to a "foo" symbol?
gensym("foo")
On 21.09.2023 10:19, Alexandros Drymonitis wrote:
That's what I need, indeed. I can't get my head around how to create the selector symbol though. The second argument to outlet_anything is a pointer to a t_symbol, but how do I get a pointer to a "foo" symbol?
I've tried `t_symbol *s = atom_gensym("foo")` but I get a warning the atom_gensym() expects a const t_atom *a, and when I pass `s` to the second argument of outlet_anything and print the output, I get "???" instead of "foo". This might be obvious, but it's quite complicated to me.
On 9/21/23 10:00, Christof Ressi wrote:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
You accidentally passed the outlet itself as the last argument (t_atom *) to outlet_list().
Unfortunately, C only offers minimal type checking and happily casts between unrelated pointer types. (With C++ this wouldn't compile in the first place.) However, although this is legal in C, all major compilers issue a warning ("-Wincompatible-pointer-types" on GCC/Clang resp. "warning C4133" with MSVC).
Always check the compiler outputs for warnings!||
||
Now to your actual question:
I'm trying to output a list of values with a selector. For example, "foo 1 2".
The function you're looking for is outlet_anything().
BTW, this is covered in the externals-howto: https://github.com/pure-data/externals-howto#outlet-anything
Christof
On 21.09.2023 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Where do you see "atom_gensym"?
Ahhh, it is similar to "atom_getsymbol", but also converts floats to strings (instead of returning an empty symbol). I didn't even know this function existed :) It's indeed easy to confuse with "gensym".
IMO, https://github.com/pure-data/externals-howto#gensym does not really belong to the "atoms" sections...
Christof
On 21.09.2023 10:23, Christof Ressi wrote:
I've tried `t_symbol *s = atom_gensym("foo")`
Where do you see "atom_gensym"? I guess you confused it with "atom_getsymbol" (which tries to interpret an atom as a symbol).
but how do I get a pointer to a "foo" symbol?
gensym("foo") On 21.09.2023 10:19, Alexandros Drymonitis wrote:
That's what I need, indeed. I can't get my head around how to create the selector symbol though. The second argument to outlet_anything is a pointer to a t_symbol, but how do I get a pointer to a "foo" symbol?
I've tried `t_symbol *s = atom_gensym("foo")` but I get a warning the atom_gensym() expects a const t_atom *a, and when I pass `s` to the second argument of outlet_anything and print the output, I get "???" instead of "foo". This might be obvious, but it's quite complicated to me.
On 9/21/23 10:00, Christof Ressi wrote:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
You accidentally passed the outlet itself as the last argument (t_atom *) to outlet_list().
Unfortunately, C only offers minimal type checking and happily casts between unrelated pointer types. (With C++ this wouldn't compile in the first place.) However, although this is legal in C, all major compilers issue a warning ("-Wincompatible-pointer-types" on GCC/Clang resp. "warning C4133" with MSVC).
Always check the compiler outputs for warnings!||
||
Now to your actual question:
I'm trying to output a list of values with a selector. For example, "foo 1 2".
The function you're looking for is outlet_anything().
BTW, this is covered in the externals-howto: https://github.com/pure-data/externals-howto#outlet-anything
Christof
On 21.09.2023 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
gensym("foo") did the trick. Now I just call `outlet_anything(x->outlist, gensym("foo"), 2, x->vec);` and it works. Thanks!
On 9/21/23 11:30, Christof Ressi wrote:
Where do you see "atom_gensym"?
Ahhh, it is similar to "atom_getsymbol", but also converts floats to strings (instead of returning an empty symbol). I didn't even know this function existed :) It's indeed easy to confuse with "gensym".
IMO, https://github.com/pure-data/externals-howto#gensym does not really belong to the "atoms" sections...
Christof
On 21.09.2023 10:23, Christof Ressi wrote:
I've tried `t_symbol *s = atom_gensym("foo")`
Where do you see "atom_gensym"? I guess you confused it with "atom_getsymbol" (which tries to interpret an atom as a symbol).
but how do I get a pointer to a "foo" symbol?
gensym("foo") On 21.09.2023 10:19, Alexandros Drymonitis wrote:
That's what I need, indeed. I can't get my head around how to create the selector symbol though. The second argument to outlet_anything is a pointer to a t_symbol, but how do I get a pointer to a "foo" symbol?
I've tried `t_symbol *s = atom_gensym("foo")` but I get a warning the atom_gensym() expects a const t_atom *a, and when I pass `s` to the second argument of outlet_anything and print the output, I get "???" instead of "foo". This might be obvious, but it's quite complicated to me.
On 9/21/23 10:00, Christof Ressi wrote:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
You accidentally passed the outlet itself as the last argument (t_atom *) to outlet_list().
Unfortunately, C only offers minimal type checking and happily casts between unrelated pointer types. (With C++ this wouldn't compile in the first place.) However, although this is legal in C, all major compilers issue a warning ("-Wincompatible-pointer-types" on GCC/Clang resp. "warning C4133" with MSVC).
Always check the compiler outputs for warnings!||
||
Now to your actual question:
I'm trying to output a list of values with a selector. For example, "foo 1 2".
The function you're looking for is outlet_anything().
BTW, this is covered in the externals-howto: https://github.com/pure-data/externals-howto#outlet-anything
Christof
On 21.09.2023 08:20, Alexandros Drymonitis wrote:
I'm trying to output a list of values with a selector. For example, "foo 1 2". I though of creating a vector of t_atom, where a_type of the first element would be A_SYMBOL, and the other two would be A_FLOAT, and after a list outlet is created in the new method like this:
`x->outlist = outlet_new(x->x_obj, &s_list);`
I can output the list with a bang like this:
`outlet_list(x->outlist, &s_list, 3, x->outlist)`;
But Pd complains with this error:
print: listconsistency check failed: atom_string consistency check failed: atom_string consistency check failed: atom_string
What I would like, is to get the output of the object and route it with [route foo]. How do I go about this?
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev