Mac-Carbon
view release on metacpan or search on metacpan
AppleEvents/AppleEvents.xs view on Meta::CPAN
AEFail((OSErr) RETVAL);
#endif
}
OUTPUT:
RETVAL
=item AEGetNthSubDesc SUBDESC,INDEX
B<Mac OS only.>
Returns the item INDEX of the subdescriptor and its type if the subdescriptor
represented a record and not a list.
=cut
void
AEGetNthSubDesc(subdesc,index)
AESubDesc &subdesc
long index
PPCODE:
{
#ifndef MACOS_TRADITIONAL
croak("Usage: Mac::AppleEvents::AEGetNthSubDesc unsupported in Carbon");
#else
OSType kw;
AESubDesc sub;
AEFail(AEGetNthSubDesc(&subdesc, index, &kw, &sub));
XS_XPUSH(AESubDesc, sub);
if (GIMME == G_ARRAY && kw != typeWildCard) {
XS_XPUSH(OSType, kw);
}
#endif
}
=item AEGetKeySubDesc SUBDESC,KW
B<Mac OS only.>
Returns the keyword indexed item from the subdescriptor.
=back
=cut
AESubDesc
AEGetKeySubDesc(subdesc,kw)
AESubDesc &subdesc
OSType kw
CODE:
#ifndef MACOS_TRADITIONAL
croak("Usage: Mac::AppleEvents::AEGetKeySubDesc unsupported in Carbon");
#else
AEFail(AEGetKeySubDesc(&subdesc, kw, &RETVAL));
#endif
OUTPUT:
RETVAL
MODULE = Mac::AppleEvents PACKAGE = AEStream
=head2 AEStream
The Apple Event Gizmos streams approach uses a streaming model for building
a sequence of descriptors.
=over 4
=item new AEStream
=item AEStream::Open
Return a new AEStream.
=cut
AEStream
Open()
CODE:
#ifdef MACOS_TRADITIONAL
AEFail(AEStream_Open(&RETVAL));
#else
RETVAL = AEStream_Open();
#endif
OUTPUT:
RETVAL
=item new AEStream(CLASS, ID, ADDRESSTYPE, ADDRESS [, RETURNID [, TRANSACTIONID ] ])
=item AEStream::CreateEvent CLASS, ID, ADDRESSTYPE, ADDRESS, RETURNID, TRANSACTIONID
Create an AEStream attached to a new AppleEvent.
=cut
AEStream
CreateEvent(theClass, theID, addressType, address, returnID=kAutoGenerateReturnID, transactionID=0)
OSType theClass
OSType theID
OSType addressType
SV * address
short returnID
long transactionID
CODE:
{
char * addressPtr;
STRLEN addressLen;
AEDesc targetDesc;
AppleEvent event;
OSErr error;
addressPtr = SvPV(address, addressLen);
ConvertFourCharCode(addressType, addressPtr);
error = AECreateDesc(addressType, addressPtr, addressLen, &targetDesc);
ConvertFourCharCode(addressType, addressPtr);
AEFail(error);
if (gPAECreate)
AEFail(
CallOSACreateAppleEventProc(gPAECreate,
theClass, theID,
&targetDesc, returnID, transactionID, &event,
gPAECreateRefCon));
else
AEFail(
AECreateAppleEvent(
theClass, theID,
&targetDesc, returnID, transactionID, &event));
AEDisposeDesc(&targetDesc);
#ifdef MACOS_TRADITIONAL
AEFail(AEStream_OpenEvent(&RETVAL, &event));
#else
RETVAL = AEStream_OpenEvent(&event);
#endif
}
OUTPUT:
RETVAL
=item new AEStream(EVENT)
=item AEStream::OpenEvent EVENT
Opens the stream on the $EVENT.
Return C<undef> if an error was detected.
=cut
AEStream
OpenEvent(theEvent)
AEDesc &theEvent
CODE:
#ifdef MACOS_TRADITIONAL
AEFail(AEStream_OpenEvent(&RETVAL, &theEvent));
#else
RETVAL = AEStream_OpenEvent(&theEvent);
#endif
OUTPUT:
RETVAL
=item Close
Return the descriptor corresponding to the stream, and close it out.
$stream->Close;
=cut
AEDesc
Close(stream)
AEStream &stream
CODE:
AEFail(AEStream_Close(&stream, &RETVAL));
OUTPUT:
stream
RETVAL
=item Abort STREAM
Abort the streaming process, and close it out.
$stream->Abort;
=cut
MacOSRet
Abort(stream)
AEStream &stream
CODE:
RETVAL = AEStream_Close(&stream, nil);
OUTPUT:
stream
RETVAL
=item OpenDesc TYPE
Start building a descriptor of the given type.
Return zero if an error was detected.
if ( $stream->OpenDesc($type) ) {
# Long messy calculation that demonstrates the usefullness of this code
if ( $stream->WriteData($calculatedData)
&& $stream->CloseDesc()
){
# then, my work here is done
}
}
=cut
MacOSRet
OpenDesc(stream, type)
AEStream &stream
OSType type
CODE:
RETVAL = AEStream_OpenDesc(&stream, type);
OUTPUT:
stream
=item WriteData DATA
Add data to the descriptor.
=cut
MacOSRet
WriteData(stream, data)
AEStream &stream
SV * data
CODE:
{
void * ptr;
STRLEN length;
ptr = SvPV(data, length);
RETVAL = AEStream_WriteData(&stream, ptr, length);
}
OUTPUT:
stream
RETVAL
=item CloseDesc
( run in 1.672 second using v1.01-cache-2.11-cpan-6aa56a78535 )