1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-05 14:18:53 +02:00

Merge pull request #290 from Paul-Licameli/rewrite-aud-do

Rewrite commit 1bc0f0f without further changes to lib-src...
This commit is contained in:
James Crook 2018-08-02 09:16:27 +01:00 committed by GitHub
commit 37018181a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 46 additions and 62 deletions

View File

@ -1 +0,0 @@
extern LVAL xlc_aud_do(void);

View File

@ -1 +0,0 @@
{ "AUD-DO", S, xlc_aud_do},

View File

@ -3,7 +3,6 @@
/* CHANGE LOG
* --------------------------------------------------------------------
* 28Apr03 dm changes for portability and fix compiler warnings
* 12Feb18 jkc added aud-do function, that is only available in Audacity.
*/
#include "xlisp.h"
@ -54,50 +53,3 @@ void print_local_gc_info(void)
max_sample_block_len) / 1024);
stdputstr(buf);
}
/*--------------------Audacity Automation -------------------------*/
/* These functions may later move to their own source file. */
extern void * ExecForLisp( char * pIn );
extern void * nyq_make_opaque_string( int size, unsigned char *src );
void * nyq_make_opaque_string( int size, unsigned char *src ){
LVAL dst;
unsigned char * dstp;
dst = new_string((int)(size+2));
dstp = getstring(dst);
/* copy the source to the destination */
while (size-- > 0)
*dstp++ = *src++;
*dstp = '\0';
return (void*)dst;
}
/* xlc_aud_do -- interface to C routine aud_do */
/**/
LVAL xlc_aud_do(void)
{
// Based on string-trim...
unsigned char *leftp,*rightp;
LVAL src,dst;
/* get the string */
src = xlgastring();
xllastarg();
/* setup the string pointers */
leftp = getstring(src);
rightp = leftp + getslength(src) - 2;
// Go call my real function here...
dst = (LVAL)ExecForLisp( leftp );
/* return the new string */
return (dst);
}

View File

@ -1,4 +1,3 @@
/* include actual local file headers: */
#include "sndfnintdefs.h"
#include "seqfnintdefs.h"
#include "audacityfnintdefs.h"

View File

@ -2,11 +2,8 @@
*
* CHANGE LOG
* 28-Apr-03 rbd Removed "include switches.h" -- already included
* 12-Feb-18 jkc Added "include audacityfnintptrs.h" -- for internal Audacity commands
*/
/* extension to xlisp */
#include "sndfnintptrs.h"
#include "seqfnintptrs.h"
#include "audacityfnintptrs.h"

View File

@ -138,15 +138,9 @@ int ExecCommand2(wxString *pIn, wxString *pOut)
#ifdef __cplusplus
extern "C" {
// The void * return is actually a Lisp LVAL and will be cast to such as needed.
extern void * ExecForLisp( char * pIn );
extern void * nyq_make_opaque_string( int size, unsigned char *src );
};
#endif
void * ExecForLisp( char * pIn ){
wxString Str1( pIn );

View File

@ -3159,6 +3159,49 @@ static LVAL ngettext()
wxGetTranslation(string1, string2, number).mb_str(wxConvUTF8));
}
/*--------------------Audacity Automation -------------------------*/
/* These functions may later move to their own source file. */
extern void * ExecForLisp( char * pIn );
extern void * nyq_make_opaque_string( int size, unsigned char *src );
void * nyq_make_opaque_string( int size, unsigned char *src ){
LVAL dst;
unsigned char * dstp;
dst = new_string((int)(size+2));
dstp = getstring(dst);
/* copy the source to the destination */
while (size-- > 0)
*dstp++ = *src++;
*dstp = '\0';
return (void*)dst;
}
/* xlc_aud_do -- interface to C routine aud_do */
/**/
LVAL xlc_aud_do(void)
{
// Based on string-trim...
unsigned char *leftp,*rightp;
LVAL src,dst;
/* get the string */
src = xlgastring();
xllastarg();
/* setup the string pointers */
leftp = getstring(src);
rightp = leftp + getslength(src) - 2;
// Go call my real function here...
dst = (LVAL)ExecForLisp( (char *)leftp );
/* return the new string */
return (dst);
}
static void RegisterFunctions()
{
// Add functions to XLisp. Do this only once,
@ -3170,8 +3213,9 @@ static void RegisterFunctions()
static const FUNDEF functions[] = {
{ "_", SUBR, gettext },
{ "ngettext", SUBR, ngettext },
{ "AUD-DO", SUBR, xlc_aud_do },
};
xlbindfunctions( functions, sizeof(functions)/sizeof(*functions) );
xlbindfunctions( functions, WXSIZEOF( functions ) );
}
}