/usr/include/pdp/pdp_comm.h is in pd-pdp 1:0.14.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | /*
* Pure Data Packet system implementation.
* Copyright (c) by Tom Schouten <tom@zwizwa.be>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
/* this file contains misc communication methods */
#ifndef PDP_COMM_H
#define PDP_COMM_H
#include "pdp_symbol.h"
#include "pdp_list.h"
/* all symbols are C style */
#ifdef __cplusplus
extern "C"
{
#endif
/* pdp's pd symbols for communication
don't use these directly!!
use the macros instead, in case
this is proven to be too much of a hack..
it's too much of a hack. getting rid of them.
*/
#define PDP_SYMBOL_HACK 0
#if PDP_SYMBOL_HACK
extern t_symbol s_pdp;
extern t_symbol s_register_ro;
extern t_symbol s_register_rw;
extern t_symbol s_process;
extern t_symbol s_dpd;
extern t_symbol s_inspect;
extern t_symbol s_accumulate;
extern t_symbol s_chanmask;
#define S_PDP &s_pdp
#define S_REGISTER_RO &s_register_ro
#define S_REGISTER_RW &s_register_rw
#define S_PROCESS &s_process
#define S_DPD &s_dpd
#define S_INSPECT &s_inspect
#define S_ACCUMULATE &s_accumulate
#define S_CHANMASK &s_chanmask
#else
#define S_PDP gensym("pdp")
#define S_REGISTER_RO gensym("register_ro")
#define S_REGISTER_RW gensym("register_rw")
#define S_PROCESS gensym("process")
#define S_DPD gensym("dpd")
#define S_INSPECT gensym("inspect")
#define S_ACCUMULATE gensym("accumulate")
#define S_CHANMASK gensym("chanmask")
#endif
/* utility methods */
/* if packet is valid, mark it unused and send it to an outlet */
void pdp_packet_pass_if_valid(t_outlet *outlet, int *packet);
/* if source packet is valid, release dest packet and move src->dest */
void pdp_packet_replace_if_valid(int *dpacket, int *spacket);
/* copy_ro if dest packet if invalid, else drop source
(don't copy) + send drop notif to pdp system
returns 1 if dropped, 0 if copied */
int pdp_packet_copy_ro_or_drop(int *dpacket, int spacket);
int pdp_packet_convert_ro_or_drop(int *dpacket, int spacket, t_pdp_symbol *type_template);
/* copy_rw if dest packit is invalid, else drop source
(don't copy) + send drop notif to pdp system
returns 1 if dropped, zero if copied */
int pdp_packet_copy_rw_or_drop(int *dpacket, int spacket);
int pdp_packet_convert_rw_or_drop(int *dpacket, int spacket, t_pdp_symbol *type_template);
/* pd and pdp conversion stuff */
void pd_atom_to_pdp_atom(t_atom *pdatom, t_pdp_atom *pdpatom);
/* send pdp lists and atoms */
void outlet_pdp_atom(t_outlet *out, struct _pdp_atom *a);
void outlet_pdp_list(t_outlet *out, struct _pdp_list *l);
/* send a packet to an outlet: it is only legal to call this on a "passing packet"
or a "read only packet".
this means it is illegal to change a packet after you have passed it to others,
since this would mess up all read only references to the packet.
*/
/* this seems like a nice place to hide a comment on the notion of read/write in pdp
which packets are writable? all packets with exactly 1 user. this includes all packets
aquired with pdp_packet_*_rw or a constructor, and all packets that are not registered
after being sent out by outlet_pdp.
which packets are readable? all packets */
void outlet_pdp(t_outlet *out, int packetid);
/* send an accumulation (context) packet to an outlet. this is for usage in the dpd
base class. */
void outlet_dpd(t_outlet *out, int packetid);
#ifdef __cplusplus
}
#endif
#endif
|