本文整理汇总了C++中croak函数的典型用法代码示例。如果您正苦于以下问题:C++ croak函数的具体用法?C++ croak怎么用?C++ croak使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了croak函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: purple_perl_plugin_action_cb
void
purple_perl_plugin_action_cb(PurplePluginAction *action)
{
SV **callback;
HV *hv = NULL;
gchar *hvname;
PurplePlugin *plugin;
PurplePerlScript *gps;
dSP;
plugin = action->plugin;
gps = (PurplePerlScript *)plugin->info->extra_info;
hvname = g_strdup_printf("%s::plugin_actions", gps->package);
hv = get_hv(hvname, FALSE);
g_free(hvname);
if (hv == NULL)
croak("No plugin_actions hash found in \"%s\" plugin.", purple_plugin_get_name(plugin));
ENTER;
SAVETMPS;
callback = hv_fetch(hv, action->label, strlen(action->label), 0);
if (callback == NULL || *callback == NULL)
croak("No plugin_action function named \"%s\" in \"%s\" plugin.", action->label, purple_plugin_get_name(plugin));
PUSHMARK(sp);
XPUSHs(purple_perl_bless_object(gps->plugin, "Purple::Plugin"));
PUTBACK;
call_sv(*callback, G_EVAL | G_VOID | G_DISCARD);
SPAGAIN;
if (SvTRUE(ERRSV)) {
purple_debug_error("perl",
"Perl plugin action function exited abnormally: %s\n",
SvPVutf8_nolen(ERRSV));
}
PUTBACK;
FREETMPS;
LEAVE;
}
开发者ID:dylex,项目名称:pidgin,代码行数:45,代码来源:perl-handlers.c
示例2: encode_get_type
KHARON_DECL int
encode_get_type(void *data)
{
SV *in = data;
D(fprintf(stderr, "get_type = %p\n", in));
if (!SvOK(in))
return STATE_UNDEF;
if (SvROK(in)) {
switch (SvTYPE(SvRV(in))) {
case SVt_PVAV: return STATE_LIST;
case SVt_PVHV: return STATE_MAP;
/* XXXrcd: memory leaks, likely... */
case SVt_IV: croak("Trying to encode SVt_IV");
case SVt_NV: croak("Trying to encode SVt_NV");
case SVt_PV: croak("Trying to encode SVt_PV");
// case SVt_RV: croak("Trying to encode SVt_RV");
case SVt_PVCV: croak("Trying to encode SVt_PVCV");
case SVt_PVGV: croak("Trying to encode SVt_PVGV");
case SVt_PVMG: croak("Trying to encode SVt_PVMG");
default:
croak("Encode error: bad data type");
}
}
return STATE_SCALAR;
}
开发者ID:nicowilliams,项目名称:kharon,代码行数:31,代码来源:arrayhash_perl.c
示例3: read_page
void read_page(UINT32 offset, UCHAR* page) {
// Note: -D_FILE_OFFSET_BITS=64 is required
UINT64 offs = offset;
offs *= FILER_PAGE;
fseek(m_in, offs , SEEK_SET);
UINT32 cnt = fread(page, 1, FILER_PAGE, m_in);
if (cnt != FILER_PAGE)
croak("Failed reading page index %d: %s", offset);
}
开发者ID:Infinidat,项目名称:slimfastq,代码行数:9,代码来源:filer.cpp
示例4: newSVOpt
SV * newSVOpt(long value, char * optname, struct opts * o)
{
int i;
for(i=0;o[i].name;i++)
if (o[i].value == value)
return newSVpv(o[i].name, 0);
croak("invalid %s value %d", optname, value);
return NULL;
}
开发者ID:gitpan,项目名称:Gtk-Perl,代码行数:9,代码来源:MiscTypes.c
示例5: Drawable_size
Point
Drawable_size ( Handle self, Bool set, Point size)
{
if ( set)
croak("Attempt to write read-only property %s", "Drawable::size");
size. x = var-> w;
size. y = var-> h;
return size;
}
开发者ID:vikasnkumar,项目名称:Prima,代码行数:9,代码来源:Drawable.c
示例6: decode_varint
void decode_varint(pTHX_ unsigned char *input, STRLEN len, struct cc_type *type, SV *output)
{
if (UNLIKELY(len <= 0)) {
croak("decode_varint: len <= 0");
} else if (len == 1) {
decode_tinyint(aTHX_ input, len, type, output);
} else if (len == 2) {
decode_smallint(aTHX_ input, len, type, output);
} else if (len == 3) {
unsigned char bytes[4];
memcpy(bytes+1, input, 3);
if (input[0] & 0x80) {
bytes[0] = 0xff;
} else {
bytes[0] = 0;
}
decode_int(aTHX_ bytes, 4, type, output);
} else if (len == 4) {
decode_int(aTHX_ input, len, type, output);
#ifdef CAN_64BIT
} else if (len < 8) {
unsigned char bytes[8];
memset(bytes, (input[0] & 0x80) ? 0xff : 0, 8);
memcpy(bytes+8-len, input, len);
decode_bigint(aTHX_ bytes, 8, type, output);
} else if (len == 8) {
decode_bigint(aTHX_ input, len, type, output);
#endif
} else {
unsigned char *tmp;
char *tmpout;
struct cc_bignum bn;
int i;
Newxz(tmpout, (len*4)+2, char);
if (!IS_BIG_ENDIAN) {
Newxz(tmp, len, unsigned char);
for (i = 0; i < len; i++) {
tmp[len-i-1] = (unsigned char)input[i];
}
} else {
tmp = input;
}
cc_bignum_init_bytes(&bn, tmp, len);
cc_bignum_stringify(&bn, tmpout, (len*4)+2);
sv_setpv(output, tmpout);
cc_bignum_destroy(&bn);
if (!IS_BIG_ENDIAN) {
Safefree(tmp);
}
Safefree(tmpout);
}
}
开发者ID:TvdW,项目名称:perl-DBD-Cassandra,代码行数:57,代码来源:decode.c
示例7: srl_build_iterator_struct
srl_iterator_t *
srl_build_iterator_struct(pTHX_ HV *opt)
{
srl_iterator_t *iter = NULL;
Newx(iter, 1, srl_iterator_t);
if (iter == NULL) croak("Out of memory");
srl_init_iterator(aTHX_ iter, opt);
return iter;
}
开发者ID:w1nk,项目名称:Sereal,代码行数:9,代码来源:srl_iterator.c
示例8: perl_cmd_cb
static PurpleCmdRet
perl_cmd_cb(PurpleConversation *conv, const gchar *command,
gchar **args, gchar **error, void *data)
{
int i = 0, count, ret_value = PURPLE_CMD_RET_OK;
SV *cmdSV, *tmpSV, *convSV;
PurplePerlCmdHandler *handler = data;
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
/* Push the conversation onto the perl stack */
convSV = sv_2mortal(purple_perl_bless_object(conv, "Purple::Conversation"));
XPUSHs(convSV);
/* Push the command string onto the perl stack */
cmdSV = newSVpv(command, 0);
cmdSV = sv_2mortal(cmdSV);
XPUSHs(cmdSV);
/* Push the data onto the perl stack */
XPUSHs((SV *)handler->data);
/* Push any arguments we may have */
for (i = 0; args[i] != NULL; i++) {
/* XXX The mortality of these created SV's should prevent
* memory issues, if I read/understood everything correctly...
*/
tmpSV = newSVpv(args[i], 0);
tmpSV = sv_2mortal(tmpSV);
XPUSHs(tmpSV);
}
PUTBACK;
count = call_sv(handler->callback, G_EVAL | G_SCALAR);
if (count != 1)
croak("call_sv: Did not return the correct number of values.\n");
if (SvTRUE(ERRSV)) {
purple_debug_error("perl",
"Perl plugin command function exited abnormally: %s\n",
SvPVutf8_nolen(ERRSV));
}
SPAGAIN;
ret_value = POPi;
PUTBACK;
FREETMPS;
LEAVE;
return ret_value;
}
开发者ID:bf4,项目名称:pidgin-mac,代码行数:57,代码来源:perl-handlers.c
示例9: buffer_append_space
void *
buffer_append_space(Buffer *buffer, uint32_t len)
{
uint32_t newlen;
void *p;
if (len > BUFFER_MAX_CHUNK)
croak("buffer_append_space: len %u too large (max %u)", len, BUFFER_MAX_CHUNK);
/* If the buffer is empty, start using it from the beginning. */
if (buffer->offset == buffer->end) {
buffer->offset = 0;
buffer->end = 0;
}
restart:
/* If there is enough space to store all data, store it now. */
if (buffer->end + len <= buffer->alloc) {
p = buffer->buf + buffer->end;
buffer->end += len;
return p;
}
/* Compact data back to the start of the buffer if necessary */
if (buffer_compact(buffer))
goto restart;
/* Increase the size of the buffer and retry. */
if (buffer->alloc + len < 4096)
newlen = (buffer->alloc + len) * 2;
else
newlen = buffer->alloc + len + 4096;
if (newlen > BUFFER_MAX_LEN)
croak("buffer_append_space: alloc %u too large (max %u)",
newlen, BUFFER_MAX_LEN);
#ifdef XS_DEBUG
PerlIO_printf(PerlIO_stderr(), "Buffer extended to %d\n", newlen);
#endif
Renew(buffer->buf, (int)newlen, u_char);
buffer->alloc = newlen;
goto restart;
/* NOTREACHED */
}
开发者ID:andygrundman,项目名称:thrift-xs,代码行数:44,代码来源:buffer.c
示例10: perl_mongo_sv_to_bson
void
perl_mongo_sv_to_bson (bson_t * bson, SV *sv, HV *opts) {
if (!SvROK (sv)) {
croak ("not a reference");
}
if ( ! sv_isobject(sv) ) {
switch ( SvTYPE(SvRV(sv)) ) {
case SVt_PVHV:
hvdoc_to_bson (bson, sv, opts, EMPTY_STACK);
break;
case SVt_PVAV:
avdoc_to_bson(bson, sv, opts, EMPTY_STACK);
break;
default:
sv_dump(sv);
croak ("type unhandled");
}
}
else {
SV *obj;
char *class;
obj = SvRV(sv);
class = HvNAME(SvSTASH(obj));
if ( strEQ(class, "Tie::IxHash") ) {
ixhashdoc_to_bson(bson, sv, opts, EMPTY_STACK);
}
else if ( strEQ(class, "MongoDB::BSON::_EncodedDoc") ) {
STRLEN str_len;
SV **svp;
SV *encoded;
const char *bson_str;
bson_t *child;
encoded = _hv_fetchs_sv((HV *)obj, "bson");
bson_str = SvPV(encoded, str_len);
child = bson_new_from_data((uint8_t*) bson_str, str_len);
bson_concat(bson, child);
bson_destroy(child);
}
else if (SvTYPE(obj) == SVt_PVHV) {
开发者ID:pkdevboxy,项目名称:mongo-perl-driver,代码行数:44,代码来源:perl_mongo.c
示例11: xs_getnameinfo
static void xs_getnameinfo(pTHX_ CV *cv)
{
dVAR;
dXSARGS;
SV *addr;
int flags;
char host[1024];
char serv[256];
char *sa; /* we'll cast to struct sockaddr * when necessary */
STRLEN addr_len;
int err;
if(items < 1 || items > 2)
croak_xs_usage(cv, "addr, flags=0");
SP -= items;
addr = ST(0);
if(items < 2)
flags = 0;
else
flags = SvIV(ST(1));
if(!SvPOK(addr))
croak("addr is not a string");
addr_len = SvCUR(addr);
/* We need to ensure the sockaddr is aligned, because a random SvPV might
* not be due to SvOOK */
Newx(sa, addr_len, char);
Copy(SvPV_nolen(addr), sa, addr_len, char);
#ifdef HAS_SOCKADDR_SA_LEN
((struct sockaddr *)sa)->sa_len = addr_len;
#endif
err = getnameinfo((struct sockaddr *)sa, addr_len,
host, sizeof(host),
serv, sizeof(serv),
flags);
Safefree(sa);
XPUSHs(err_to_SV(aTHX_ err));
if(err)
XSRETURN(1);
XPUSHs(sv_2mortal(newSVpv(host, 0)));
XPUSHs(sv_2mortal(newSVpv(serv, 0)));
XSRETURN(3);
}
开发者ID:macholic,项目名称:perl5,代码行数:56,代码来源:Socket.c
示例12: amglue_SvU32
guint32 amglue_SvU32(SV *sv)
{
guint64 v64 = amglue_SvU64(sv);
if (v64 > G_MAXUINT32) {
croak("Expected a 32-bit unsigned integer; value out of range");
return 0;
} else {
return (guint32)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例13: amglue_SvI32
gint32 amglue_SvI32(SV *sv)
{
gint64 v64 = amglue_SvI64(sv);
if (v64 < G_MININT32 || v64 > G_MAXINT32) {
croak("Expected a 32-bit integer; value out of range");
return 0;
} else {
return (gint32)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例14: amglue_SvU8
guint8 amglue_SvU8(SV *sv)
{
guint64 v64 = amglue_SvU64(sv);
if (v64 > G_MAXUINT8) {
croak("Expected a 8-bit unsigned integer; value out of range");
return 0;
} else {
return (guint8)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例15: decode_boolean
void decode_boolean(pTHX_ unsigned char *input, STRLEN len, struct cc_type *type, SV *output)
{
if (UNLIKELY(len != 1))
croak("decode_boolean: len != 1");
if (*input)
sv_setsv(output, &PL_sv_yes);
else
sv_setsv(output, &PL_sv_no);
}
开发者ID:TvdW,项目名称:perl-DBD-Cassandra,代码行数:10,代码来源:decode.c
示例16: amglue_SvU16
guint16 amglue_SvU16(SV *sv)
{
guint64 v64 = amglue_SvU64(sv);
if (v64 > G_MAXUINT16) {
croak("Expected a 16-bit unsigned integer; value out of range");
return 0;
} else {
return (guint16)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例17: amglue_SvI8
gint8 amglue_SvI8(SV *sv)
{
gint64 v64 = amglue_SvI64(sv);
if (v64 < G_MININT8 || v64 > G_MAXINT8) {
croak("Expected a 8-bit integer; value out of range");
return 0;
} else {
return (gint8)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例18: amglue_SvI16
gint16 amglue_SvI16(SV *sv)
{
gint64 v64 = amglue_SvI64(sv);
if (v64 < G_MININT16 || v64 > G_MAXINT16) {
croak("Expected a 16-bit integer; value out of range");
return 0;
} else {
return (gint16)v64;
}
}
开发者ID:duckhead,项目名称:amanda,代码行数:10,代码来源:bigint.c
示例19: THX_moment_with_day_of_week
static moment_t
THX_moment_with_day_of_week(pTHX_ const moment_t *mt, IV v) {
dt_t dt;
if (v < 1 || v > 7)
croak("Parameter 'day' is out of the range [1, 7]");
dt = moment_local_dt(mt);
return THX_moment_with_local_dt(aTHX_ mt, dt - (dt_dow(dt) - v));
}
开发者ID:gitpan,项目名称:Time-Moment,代码行数:10,代码来源:moment.c
示例20: perl_back_bind
/**********************************************************
*
* Bind
*
**********************************************************/
int
perl_back_bind(
Operation *op,
SlapReply *rs )
{
int count;
PerlBackend *perl_back = (PerlBackend *) op->o_bd->be_private;
/* allow rootdn as a means to auth without the need to actually
* contact the proxied DSA */
switch ( be_rootdn_bind( op, rs ) ) {
case SLAP_CB_CONTINUE:
break;
default:
return rs->sr_err;
}
PERL_SET_CONTEXT( PERL_INTERPRETER );
ldap_pvt_thread_mutex_lock( &perl_interpreter_mutex );
{
dSP; ENTER; SAVETMPS;
PUSHMARK(SP);
XPUSHs( perl_back->pb_obj_ref );
XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0)));
XPUSHs(sv_2mortal(newSVpv( op->orb_cred.bv_val , op->orb_cred.bv_len)));
PUTBACK;
count = call_method("bind", G_SCALAR);
SPAGAIN;
if (count != 1) {
croak("Big trouble in back_bind\n");
}
rs->sr_err = POPi;
PUTBACK; FREETMPS; LEAVE;
}
ldap_pvt_thread_mutex_unlock( &perl_interpreter_mutex );
Debug( LDAP_DEBUG_ANY, "Perl BIND returned 0x%04x\n", rs->sr_err, 0, 0 );
/* frontend will send result on success (0) */
if( rs->sr_err != LDAP_SUCCESS )
send_ldap_result( op, rs );
return ( rs->sr_err );
}
开发者ID:alfintatorkace,项目名称:osx-10.9-opensource,代码行数:60,代码来源:bind.c
注:本文中的croak函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论