[PD-cvs] externals/hcs helppath.c, NONE, 1.1 helppath-help.pd, NONE, 1.1

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sat Nov 24 19:14:33 CET 2007


Update of /cvsroot/pure-data/externals/hcs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18937

Added Files:
	helppath.c helppath-help.pd 
Log Message:
created quick working sketch for navigating the sys_helppath

--- NEW FILE: helppath-help.pd ---
#N canvas 375 22 466 316 10;
#X obj 40 130 helppath;
#X msg 37 99 bang;
#X obj 54 176 print;
#X symbolatom 29 213 0 0 0 0 - - -;
#X obj 101 151 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 79 102 reset;
#X text 19 22 This object returns each path in the global classpath
one at a time with each bang. [reset( refreshs the classpath data and
starts again at the top of the list \, like [textfile] or [qlist]'s
[reset(.;
#X text 124 153 <-- banged when the end of the list is reached;
#X text 234 294 released under the GNU GPL;
#X text 18 281 (C) Copyright 2006 Hans-Christoph Steiner <hans at at.or.at>
;
#X obj 31 238 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X connect 0 0 2 0;
#X connect 0 0 3 0;
#X connect 0 1 4 0;
#X connect 1 0 0 0;
#X connect 3 0 10 0;
#X connect 5 0 0 0;

--- NEW FILE: helppath.c ---
/*
 * This object outputs the global search path for finding objects using a 
 * similar interface as [textfile].                                       
 *                                                                        
 * Copyright (c) 2007 Free Software Foundation
 *                                                                        
 * 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.                 
 *                                                                        
 * See file LICENSE for further informations on licensing terms.          
 *                                                                        
 * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.        
 */

#include "m_pd.h"
#include "s_stuff.h"

#include <string.h>

/*
#ifdef _WIN32
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
#else
#include <stdlib.h>
#endif
*/

static char *version = "$Revision: 1.1 $";

//#define DEBUG(x)
#define DEBUG(x) x 

/*------------------------------------------------------------------------------
 *  CLASS DEF
 */
static t_class *helppath_class;

typedef struct _helppath {
	t_object            x_obj;
	t_namelist          *x_top;
	t_namelist          *x_current;
	t_outlet            *x_data_outlet;
	t_outlet            *x_status_outlet;
} t_helppath;

/*------------------------------------------------------------------------------
 * IMPLEMENTATION                    
 */

static void helppath_output(t_helppath* x)
{
	DEBUG(post("helppath_output"););

/* TODO: think about using x->x_current->nl_next so that if [helppath] is at
 * the end of its list, and another element gets added to the global
 * helppath, [helppath] will output the new element on the next bang. */
	if(x->x_current)
	{
		outlet_symbol( x->x_data_outlet, gensym(x->x_current->nl_string) );
		x->x_current = x->x_current->nl_next;
	}
	else 
    {
        outlet_bang(x->x_status_outlet);
    }
}


static void helppath_reset(t_helppath* x) 
{
	DEBUG(post("helppath_reset"););

	x->x_current = x->x_top = sys_helppath;
}


static void helppath_add(t_helppath* x, t_symbol *s) 
{
	DEBUG(post("helppath_add"););
}


static void *helppath_new() 
{
	DEBUG(post("helppath_new"););
	t_helppath *x = (t_helppath *)pd_new(helppath_class);

	x->x_data_outlet = outlet_new(&x->x_obj, &s_symbol);
	x->x_status_outlet = outlet_new(&x->x_obj, 0);

	helppath_reset(x);

	return (x);
}

void helppath_free()
{
	// TODO: look into freeing the namelist
}


void helppath_setup(void) 
{
	DEBUG(post("helppath_setup"););
	helppath_class = class_new(gensym("helppath"), 
								  (t_newmethod)helppath_new, 
								  0,
								  sizeof(t_helppath), 
								  0, 
								  0);
	/* add inlet datatype methods */
	class_addbang(helppath_class,(t_method) helppath_output);
	
	/* add inlet message methods */
	class_addmethod(helppath_class,(t_method) helppath_reset,
					gensym("reset"), 0);
	class_addmethod(helppath_class,(t_method) helppath_add,gensym("add"), 
					A_DEFSYMBOL, 0);
}






More information about the Pd-cvs mailing list