Commit 3b1cf1f0 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

Vanilla 0.47 backport 11: m_conf.c m_imp.h m_obj.c m_pd.h

parent 122e9508
......@@ -25,18 +25,21 @@ void g_scalar_setup(void);
void g_template_setup(void);
void g_text_setup(void);
void g_traversal_setup(void);
void clone_setup(void);
void m_pd_setup(void);
void x_acoustics_setup(void);
void x_interface_setup(void);
void x_connective_setup(void);
void x_time_setup(void);
void x_arithmetic_setup(void);
void x_array_setup(void);
void x_midi_setup(void);
void x_misc_setup(void);
void x_net_setup(void);
void x_qlist_setup(void);
void x_gui_setup(void);
void x_list_setup(void);
void expr_setup(void);
void x_preset_setup(void);
void d_arithmetic_setup(void);
void d_array_setup(void);
......@@ -74,18 +77,21 @@ void conf_init(void)
......@@ -56,6 +56,31 @@ struct _class
char c_drawcommand; /* a drawing command for a template */
struct _pdinstance
double pd_systime; /* global time in Pd ticks */
t_clock *pd_clock_setlist; /* list of set clocks */
t_int *pd_dspchain; /* DSP chain */
int pd_dspchainsize; /* number of elements in DSP chain */
t_canvas *pd_canvaslist; /* list of all root canvases */
int pd_dspstate; /* whether DSP is on or off */
t_signal *pd_signals; /* list of signals used by DSP chain */
t_symbol *pd_midiin_sym; /* symbols bound to incoming MIDI... */
t_symbol *pd_sysexin_sym;
t_symbol *pd_notein_sym;
t_symbol *pd_ctlin_sym;
t_symbol *pd_pgmin_sym;
t_symbol *pd_bendin_sym;
t_symbol *pd_touchin_sym;
t_symbol *pd_polytouchin_sym;
t_symbol *pd_midiclkin_sym;
t_symbol *pd_midirealtimein_sym;
extern t_pdinstance *pd_this;
/* m_class.c */
EXTERN void pd_emptylist(t_pd *x);
/* m_obj.c */
EXTERN int obj_noutlets(t_object *x);
......@@ -791,3 +791,20 @@ int outlet_getsignalindex(t_outlet *x)
return (n);
void obj_saveformat(t_object *x, t_binbuf *bb)
if (x->te_width)
binbuf_addv(bb, "ssf;", &s__X, gensym("f"), (float)x->te_width);
/* this one only in g_clone.c -- LATER consider sending the message
without having to chase the linked list every time? */
void obj_sendinlet(t_object *x, int n, t_symbol *s, int argc, t_atom *argv)
t_inlet *i;
for (i = x->ob_inlet; i && n; i = i->i_next, n--)
if (i)
typedmess(&i->i_pd, s, argc, argv);
else bug("obj_sendinlet");
......@@ -13,7 +13,7 @@ extern "C" {
#define PD_TEST_VERSION "20160124"
#define PD_TEST_VERSION "20160525"
#define PDL2ORK
extern int pd_compatibilitylevel; /* e.g., 43 for pd 0.43 compatibility */
......@@ -64,6 +64,20 @@ extern int pd_compatibilitylevel; /* e.g., 43 for pd 0.43 compatibility */
#include <stddef.h> /* just for size_t -- how lame! */
/* Microsoft Visual Studio is not C99, it does not provide stdint.h */
#ifdef _MSC_VER
typedef signed __int8 int8_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef signed __int64 int64_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
typedef unsigned __int64 uint64_t;
# include <stdint.h>
/* for FILE, needed by sys_fopen() and sys_fclose() only */
#include <stdio.h>
......@@ -140,6 +154,7 @@ typedef union word
t_gpointer *w_gpointer;
t_array *w_array;
struct _glist *w_list;
struct _binbuf *w_binbuf;
int w_index;
t_blob *w_blob; /* MP20061223 blob type */
} t_word;
......@@ -359,10 +374,13 @@ EXTERN t_clock *clock_new(void *owner, t_method fn);
EXTERN void clock_set(t_clock *x, double systime);
EXTERN void clock_delay(t_clock *x, double delaytime);
EXTERN void clock_unset(t_clock *x);
EXTERN void clock_setunit(t_clock *x, double timeunit, int sampflag);
EXTERN double clock_getlogicaltime(void);
EXTERN double clock_getsystime(void); /* OBSOLETE; use clock_getlogicaltime() */
EXTERN double clock_gettimesince(double prevsystime);
EXTERN double clock_getsystimeafter(double delaytime);
EXTERN double clock_gettimesincewithunits(double prevsystime,
double units, int sampflag);
EXTERN void clock_free(t_clock *x);
/* ----------------- pure data ---------------- */
......@@ -486,6 +504,8 @@ EXTERN void classtable_tovec(int size, t_atom *vec);
typedef void (*t_savefn)(t_gobj *x, t_binbuf *b);
EXTERN void class_setsavefn(t_class *c, t_savefn f);
EXTERN t_savefn class_getsavefn(t_class *c);
EXTERN void obj_saveformat(t_object *x, t_binbuf *bb); /* add format to bb */
/* prototype for functions to open properties dialogs */
typedef void (*t_propertiesfn)(t_gobj *x, struct _glist *glist);
EXTERN void class_setpropertiesfn(t_class *c, t_propertiesfn f);
......@@ -533,17 +553,11 @@ EXTERN int (*sys_idlehook)(void); /* hook to add idle time computation */
/* Win32's open()/fopen() do not handle UTF-8 filenames so we need
* these internal versions that handle UTF-8 filenames the same across
* all platforms. They are recommended for use in external
* objectclasses as well so they work with Unicode filenames on Windows
For now, we're just doing typedefs to alias the standard io calls. But
once someone wants to build on Windows, the relevant commits should be ported
from Pd Vanilla. See Pd Vanilla git commit:
plus some other revisions after that one. */
#define sys_open open
#define sys_close close
#define sys_fopen fopen
#define sys_fclose fclose
* objectclasses as well so they work with Unicode filenames on Windows */
EXTERN int sys_open(const char *path, int oflag, ...);
EXTERN int sys_close(int fd);
EXTERN FILE *sys_fopen(const char *filename, const char *mode);
EXTERN int sys_fclose(FILE *stream);
/* ------------ threading ------------------- */
EXTERN void sys_lock(void);
......@@ -661,6 +675,8 @@ EXTERN char *garray_vec(t_garray *x);
EXTERN void garray_resize(t_garray *x, t_floatarg f);
EXTERN void garray_usedindsp(t_garray *x);
EXTERN void garray_setsaveit(t_garray *x, int saveit);
EXTERN t_glist *garray_getglist(t_garray *x);
EXTERN t_array *garray_getarray(t_garray *x);
EXTERN t_class *scalar_class;
EXTERN t_float *value_get(t_symbol *s);
......@@ -751,6 +767,17 @@ defined, there is a "te_xpix" field in objects, not a "te_xpos" as before: */
/* get version number at run time */
EXTERN void sys_getversion(int *major, int *minor, int *bugfix);
EXTERN_STRUCT _pdinstance;
#define t_pdinstance struct _pdinstance /* m_imp.h */
/* m_pd.c */
EXTERN t_pdinstance *pdinstance_new( void);
EXTERN void pd_setinstance(t_pdinstance *x);
EXTERN void pdinstance_free(t_pdinstance *x);
EXTERN t_canvas *pd_getcanvaslist(void);
EXTERN int pd_getdspstate(void);
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment