示例#1
0
P op_mapwindow(void)
{
#if X_DISPLAY_MISSING
	return NO_XWINDOWS;
#else
  P k;
  if (dvtdisplay == NULL) return NO_XWINDOWS;
  if (o_2 < FLOORopds) return OPDS_UNF;
  if (CLASS(o_1) != BOOL) return OPD_CLA;

  switch (CLASS(o_2)) {
  case NULLOBJ:
    for (k = 0; k < ndvtwindows; k++)
      if (BOOL_VAL(o_1)) mapraisewindow(dvtwindows[k]);
      else HXUnmapWindow(dvtdisplay, dvtwindows[k]);
    break;
    
  case NUM:
    if (!PVALUE(o_2,&wid)) return UNDF_VAL;
    for (k = 0; k < ndvtwindows && dvtwindows[k] != wid; k++);
    if (k == ndvtwindows) break;
    
    if (BOOL_VAL(o_1)) mapraisewindow(wid);
    else HXUnmapWindow(dvtdisplay,wid);
    break;
    
  default:
    return OPD_CLA;
  };
  
  FREEopds = o_2;
  return OK;
#endif
}
示例#2
0
/*------------------------------------------------ topwindow
 * 
 * window# true | --
 *
 * make window float above other iff true
 */
P op_makewindowtop(void) 
{
#if X_DISPLAY_MISSING
	return NO_XWINDOWS;
#else
	P k;
	XEvent event;

	if (dvtdisplay == NULL) return NO_XWINDOWS;
	if (o_2 < FLOORopds) return OPDS_UNF;
	if (CLASS(o_1) != BOOL || CLASS(o_2) != NUM) return OPD_CLA;
	if (!PVALUE(o_2, &wid)) return UNDF_VAL;

	FREEopds = o_2;
	for (k = 0; k < ndvtwindows && dvtwindows[k] != wid; k++);
	if (k == ndvtwindows) return OK;

	event.xclient.type = ClientMessage;
	event.xclient.display = dvtdisplay;
	event.xclient.window = wid;
	event.xclient.message_type 
		= HXInternAtom(dvtdisplay, "_NET_WM_STATE", False);
	event.xclient.format = 32;
	event.xclient.data.l[0] = (BOOL_VAL(o2) ? 1 : 0);
	event.xclient.data.l[1] 
		= HXInternAtom(dvtdisplay, "_NET_WM_STATE_ABOVE", False);
	event.xclient.data.l[2] = 0;
	event.xclient.data.l[3] = 2;
	event.xclient.data.l[4] = 0;
	HXSendEvent(dvtdisplay, XRootWindowOfScreen(dvtscreen),
		    False, (SubstructureNotifyMask|SubstructureRedirectMask),
		    &event);
	return OK;
#endif
}
示例#3
0
// n k | (n/k)
DM_INLINE_STATIC P combinations(void) {
  P n, k, i, j;

  if (o_2 < FLOORopds) return OPDS_UNF;
  if (CLASS(o_1) != NUM) return OPD_CLA;
  if (CLASS(o_2) != NUM) return OPD_CLA;
  if (! PVALUE(o_2, &n)) return UNDF_VAL;
  if (! PVALUE(o_1, &k)) return UNDF_VAL;
  if (n < 0 || k < 0 || n < k) return RNG_CHK;
  if (n > max_kn) return RNG_CHK;

  TAG(o_2) = (NUM | DOUBLETYPE);
  ATTR(o_2) = 0;
  FREEopds = o_1;
  if (n == k || k == 0) {
    *(D*) NUM_VAL(o_1) = 1;
    return OK;
  }

  if (n <= max_n) {
    *(D*) NUM_VAL(o_1) = binom[n][k];
    return OK;
  }

  for (i = max_n+1; i <= n; ++i) {
    binom[i][0] = binom[i][i] = 1;
    for (j = 1; j < i; ++j) {
      binom[i][j] = binom[i-1][j-1] + binom[i-1][j];
    }
  }
  max_n = n;

  *(D*) NUM_VAL(o_1) = binom[n][k];
  return OK;
}
示例#4
0
P op_resizewindow(void)
{
#if X_DISPLAY_MISSING
	return NO_XWINDOWS;
#else
  P width, height;
  P k;

  if (dvtdisplay == NULL) return NO_XWINDOWS;
  if (o_3 < FLOORopds) return OPDS_UNF;
  if (CLASS(o_3) != NUM) return OPD_CLA;
  if (!PVALUE(o_3,&wid)) return UNDF_VAL;
  if (CLASS(o_2) != NUM) return OPD_CLA;
  if (!PVALUE(o_2,&width)) return UNDF_VAL;
  if (CLASS(o_1) != NUM) return OPD_CLA;
  if (!PVALUE(o_1,&height)) return UNDF_VAL;

  for (k = 0; k < ndvtwindows; k++)
    if (dvtwindows[k] == wid) {
      resizewindow(width, height);
      break;
    }

  FREEopds = o_3;
  return OK;
#endif
}
示例#5
0
static GstMPEGStream *
gst_mpeg_demux_get_private_stream (GstMPEGDemux * mpeg_demux,
    guint8 stream_nr, gint type, const gpointer info)
{
  GstMPEGStream *str;
  gchar *name;

  g_return_val_if_fail (stream_nr < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS, NULL);

  str = mpeg_demux->private_stream[stream_nr];

  if (str == NULL) {
    name = g_strdup_printf ("private_%d", stream_nr + 1);
    str = g_new0 (GstMPEGStream, 1);
    CLASS (mpeg_demux)->init_stream (mpeg_demux, type, str, stream_nr, name,
        CLASS (mpeg_demux)->private_template);
    g_free (name);
    gst_pad_set_active (str->pad, TRUE);
    gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);

    mpeg_demux->private_stream[stream_nr] = str;
  }

  return str;
}
示例#6
0
P op_errormessage(void)
{
  LBIG e, pid, port;
  P nb, tnb; 
  B *m, *s;

  if (o_6 < FLOORopds) goto baderror;
  if (CLASS(o_6) != NUM) goto baderror;
  if (! VALUE(o_6, &pid)) goto baderror;
  if (TAG(o_5) != (ARRAY | BYTETYPE)) goto baderror;
  if (CLASS(o_4) != NUM) goto baderror;
  if (! VALUE(o_4, &port)) goto baderror;
  if (TAG(o_3) != (ARRAY | BYTETYPE)) goto baderror;
  if (CLASS(o_2) != NUM) goto baderror;
  if (!VALUE(o_2, &e)) goto baderror;
  if (TAG(o_1) != (ARRAY | BYTETYPE)) goto baderror;

  s = (B *)VALUE_BASE(o_1); 
  tnb = ARRAY_SIZE(o_1);
  nb = dm_snprintf((char*) s, tnb, "On %*s port %llu, pid %llu: ",
		   (int) ARRAY_SIZE(o_5),
		   (char*) VALUE_BASE(o_5),
                   (unsigned long long) port,
		   (unsigned long long) pid);
  s += nb;
  tnb -= nb;

  if ((P)e < 0) /*Clib error */
    nb = dm_snprintf((char*) s, tnb, "errno: %s",
		     (char*) strerror(-(int)e));
  else { /* one of our error codes: decode */
    m = geterror((P) e);
    nb = strlen((char*) m);
    if (nb > tnb) nb = tnb;
    moveB(m, s, nb);
  }
  s += nb;
  tnb -= nb;

  nb = dm_snprintf((char*)s, tnb, " in %*s\n",
		   (int) ARRAY_SIZE(o_3),
		   (char*) VALUE_BASE(o_3));

  ARRAY_SIZE(o_1) = (P)(s + nb) - VALUE_BASE(o_1);
  moveframe(o_1,o_6);
  FREEopds = o_5;
  return OK;

 baderror:
  printf("**Error with corrupted error info on operand stack!\n");
  return op_halt();
}
示例#7
0
/*
 * Method:    Pm_HasHostError
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1HasHostError
  (JNIEnv *env, jclass cl, jobject jstream)
{
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    return Pm_HasHostError(PMSTREAM(jstream, fid));
}
示例#8
0
/*
 * Method:    Pm_WriteShort
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteShort
  (JNIEnv *env, jclass cl, jobject jstream, jint when, jint msg)
{
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    return Pm_WriteShort(PMSTREAM(jstream, fid), when, msg);
}
示例#9
0
/*
 * Method:    Pm_SetChannelMask
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetChannelMask
  (JNIEnv *env, jclass cl, jobject jstream, jint mask)
{
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    return Pm_SetChannelMask(PMSTREAM(jstream, fid), mask);
}
示例#10
0
static P copy_list(B *sf, B **df, B **freevm)
{
  B *f, *cf; 
  P k, n;

  f = (B *)*freevm;
  n = (LIST_CEIL(sf) - VALUE_BASE(sf)) / FRAMEBYTES;
  if ((*freevm += FRAMEBYTES + n * VALUEBYTES(WORDTYPE)) > CEILvm)
    return VM_OVF;
  TAG(f) = ARRAY | WORDTYPE; 
  ATTR(f) = 0;
  VALUE_BASE(f) = (P)f + FRAMEBYTES; 
  ARRAY_SIZE(f) = 1;
  cf = (B *)VALUE_BASE(sf); 
  k = n;
  while (k) { 
    if (CLASS(cf) != NUM) return OPD_CLA;
    MOVE(cf,f); 
    VALUE_BASE(f) += VALUEBYTES(WORDTYPE);
    cf += FRAMEBYTES; k--;
  }
  VALUE_BASE(f) = (P)f + FRAMEBYTES; 
  ARRAY_SIZE(f) = n;
  *df = f;
  return OK;
}
示例#11
0
P op_fillrectangle(void)
{
#if X_DISPLAY_MISSING
	return NO_XWINDOWS;
#else
  B *xyf, *freevm; 
  P retc, k;

  if (dvtdisplay == NULL) return NO_XWINDOWS;
  freevm = FREEvm;
  if ((retc = coloropd()) != OK) return retc;
  if ((retc = xy(&xyf,&freevm)) != OK) return retc;
  if (ARRAY_SIZE(xyf) != 4) return RNG_CHK;
  if (o_1 < FLOORopds) return (OPDS_UNF);
  if (CLASS(o_1) != NUM) return OPD_CLA;
  if (!PVALUE(o_1,&wid)) return UNDF_VAL;
  FREEopds = o_1;

  for (k = 0; k < ndvtwindows; k++) 
    if (dvtwindows[k] == wid) break;
  if (k >= ndvtwindows) return OK;

  HXFillRectangles(dvtdisplay,wid,dvtgc,(XRectangle *)VALUE_BASE(xyf),1);
  return OK;
#endif
}
示例#12
0
文件: parseip.c 项目: npe9/harvey
char*
v4parseip(uint8_t *to, char *from)
{
	int i;
	char *p;

	p = from;
	for(i = 0; i < 4 && *p; i++){
		to[i] = strtoul(p, &p, 0);
		if(*p == '.')
			p++;
	}
	switch(CLASS(to)){
	case 0:	/* class A - 1 uchar net */
	case 1:
		if(i == 3){
			to[3] = to[2];
			to[2] = to[1];
			to[1] = 0;
		} else if (i == 2){
			to[3] = to[1];
			to[1] = 0;
		}
		break;
	case 2:	/* class B - 2 uchar net */
		if(i == 3){
			to[3] = to[2];
			to[2] = 0;
		}
		break;
	}
	return p;
}
示例#13
0
文件: segsmss.c 项目: Ravenbrook/mps
static Res amstSegInit(Seg seg, Pool pool, Addr base, Size size, ArgList args)
{
  AMSTSeg amstseg;
  AMST amst;
  Res res;

  /* Initialize the superclass fields first via next-method call */
  res = NextMethod(Seg, AMSTSeg, init)(seg, pool, base, size, args);
  if (res != ResOK)
    return res;
  amstseg = CouldBeA(AMSTSeg, seg);

  AVERT(Pool, pool);
  amst = PoolAMST(pool);
  AVERT(AMST, amst);
  /* no useful checks for base and size */

  amstseg->next = NULL;
  amstseg->prev = NULL;

  SetClassOfPoly(seg, CLASS(AMSTSeg));
  amstseg->sig = AMSTSegSig;
  AVERC(AMSTSeg, amstseg);

  return ResOK;
}
示例#14
0
文件: segsmss.c 项目: Ravenbrook/mps
static Res AMSTInit(Pool pool, Arena arena, PoolClass klass, ArgList args)
{
  AMST amst;
  AMS ams;
  Res res;

  res = NextMethod(Pool, AMSTPool, init)(pool, arena, klass, args);
  if (res != ResOK)
    return res;

  amst = CouldBeA(AMSTPool, pool);
  ams = MustBeA(AMSPool, pool);

  ams->segSize = AMSTSegSizePolicy;
  ams->segClass = AMSTSegClassGet;
  amst->failSegs = TRUE;
  amst->splits = 0;
  amst->merges = 0;
  amst->badSplits = 0;
  amst->badMerges = 0;
  amst->bsplits = 0;
  amst->bmerges = 0;

  SetClassOfPoly(pool, CLASS(AMSTPool));
  amst->sig = AMSTSig;
  AVERC(AMSTPool, amst);

  return ResOK;
}
示例#15
0
static Res NInit(Pool pool, Arena arena, PoolClass klass, ArgList args)
{
  PoolN poolN;
  Res res;

  AVER(pool != NULL);
  AVERT(Arena, arena);
  AVERT(ArgList, args);
  UNUSED(klass); /* used for debug pools only */

  res = NextMethod(Pool, NPool, init)(pool, arena, klass, args);
  if (res != ResOK)
    goto failNextInit;
  poolN = CouldBeA(NPool, pool);
  
  /* Initialize pool-specific structures. */

  SetClassOfPoly(pool, CLASS(NPool));
  AVERC(PoolN, poolN);

  return ResOK;

failNextInit:
  AVER(res != ResOK);
  return res;
}
示例#16
0
P op_drawline(void)
{
#if X_DISPLAY_MISSING
	return NO_XWINDOWS;
#else
  B *xyf, *freevm; 
  P retc, k;

  if (dvtdisplay == NULL) return NO_XWINDOWS;
  if (o_1 < FLOORopds) return OPDS_UNF;
  freevm = FREEvm;
  if ((retc = coloropd()) != OK) return retc;
  if ((retc = xy(&xyf,&freevm)) != OK) return retc;
  if (ARRAY_SIZE(xyf) < 4) return RNG_CHK;
  if (o_1 < FLOORopds) return (OPDS_UNF);
  if (CLASS(o_1) != NUM) return OPD_CLA;
  if (!PVALUE(o_1,&wid)) return UNDF_VAL;
  FREEopds = o_1;
  for (k = 0; k < ndvtwindows; k++)
    if (dvtwindows[k] == wid) break;
  if (k >= ndvtwindows) return OK;

  HXDrawLines(dvtdisplay,wid,dvtgc,(XPoint *)VALUE_BASE(xyf),
             ARRAY_SIZE(xyf)>>1, CoordModeOrigin);
  return OK;
#endif
}
示例#17
0
文件: buffer.c 项目: Ravenbrook/mps
static Res rankBufInit(Buffer buffer, Pool pool, Bool isMutator, ArgList args)
{
  Rank rank = BUFFER_RANK_DEFAULT;
  Res res;
  ArgStruct arg;

  AVERT(ArgList, args);
  if (ArgPick(&arg, args, MPS_KEY_RANK))
    rank = arg.val.rank;
  AVERT(Rank, rank);

  /* Initialize the superclass fields first via next-method call */
  res = NextMethod(Buffer, RankBuf, init)(buffer, pool, isMutator, args);
  if (res != ResOK)
    return res;

  BufferSetRankSet(buffer, RankSetSingle(rank));

  SetClassOfPoly(buffer, CLASS(RankBuf));
  AVERC(RankBuf, buffer);
  
  EVENT4(BufferInitRank, buffer, pool, BOOLOF(buffer->isMutator), rank);

  return ResOK;
}
示例#18
0
// x l | Pl(x)
DM_INLINE_STATIC P legendre(void) {
  P l, i;
  D x, Px, Px_1, Px_2;
  if (o_2 < FLOORopds) return OPDS_UNF;
  if (CLASS(o_1) != NUM) return OPD_CLA;
  if (! PVALUE(o_1, &l)) return UNDF_VAL;
  if (l < 0) return RNG_CHK;
  if (TAG(o_2) != (NUM | DOUBLETYPE)) return OPD_TYP;

  FREEopds = o_1;
  if (l == 0) {
    *(D*) NUM_VAL(o_1) = 1;
    return OK;
  }

  Px = x = *(D*) NUM_VAL(o_1);
  Px_1 = 1;
  for (i = 2; i <= l; ++i) {
    Px_2 = Px_1;
    Px_1 = Px;
    Px = ((D)(2*i-1))/i*x*Px_1 - ((D)(i-1))/i*Px_2;
  }

  *(D*) NUM_VAL(o_1) = Px;
  return OK;

}
示例#19
0
/*
 * Method:    Pm_SetFilter
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetFilter
  (JNIEnv *env, jclass cl, jobject jstream, jint filters)
{
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    return Pm_SetFilter(PMSTREAM(jstream, fid), filters);
}
示例#20
0
文件: winplumb.c 项目: aberg001/plan9
unsigned long
parseip(char *to, char *from)
{
    int i;
    char *p;

    p = from;
    memset(to, 0, 4);
    for(i = 0; i < 4 && *p; i++) {
        to[i] = strtoul(p, &p, 0);
        if(*p == '.')
            p++;
    }
    switch(CLASS(to)) {
    case 0:	/* class A - 1 byte net */
    case 1:
        if(i == 3) {
            to[3] = to[2];
            to[2] = to[1];
            to[1] = 0;
        } else if (i == 2) {
            to[3] = to[1];
            to[1] = 0;
        }
        break;
    case 2:	/* class B - 2 byte net */
        if(i == 3) {
            to[3] = to[2];
            to[2] = 0;
        }
        break;
    }
    return nhgetl(to);
}
示例#21
0
static Bonobo_Persist_ContentTypeList *
impl_Bonobo_Persist_getContentTypes (PortableServer_Servant servant,
				     CORBA_Environment     *ev)
{
	BonoboPersist *persist = bonobo_persist_from_servant (servant);

	return CLASS (persist)->get_content_types (persist, ev);
}
static MateComponent_Persist_ContentTypeList *
impl_MateComponent_Persist_getContentTypes (PortableServer_Servant servant,
				     CORBA_Environment     *ev)
{
	MateComponentPersist *persist = matecomponent_persist_from_servant (servant);

	return CLASS (persist)->get_content_types (persist, ev);
}
示例#23
0
static Res MFSInit(Pool pool, Arena arena, PoolClass klass, ArgList args)
{
  Size extendBy = MFS_EXTEND_BY_DEFAULT;
  Bool extendSelf = TRUE;
  Size unitSize;
  MFS mfs;
  ArgStruct arg;
  Res res;

  AVER(pool != NULL);
  AVERT(Arena, arena);
  AVERT(ArgList, args);
  UNUSED(klass); /* used for debug pools only */
  
  ArgRequire(&arg, args, MPS_KEY_MFS_UNIT_SIZE);
  unitSize = arg.val.size;
  if (ArgPick(&arg, args, MPS_KEY_EXTEND_BY))
    extendBy = arg.val.size;
  if (ArgPick(&arg, args, MFSExtendSelf))
    extendSelf = arg.val.b;

  AVER(unitSize > 0);
  AVER(extendBy > 0);
  AVERT(Bool, extendSelf);

  res = NextMethod(Pool, MFSPool, init)(pool, arena, klass, args);
  if (res != ResOK)
    goto failNextInit;
  mfs = CouldBeA(MFSPool, pool);

  mfs->unroundedUnitSize = unitSize;

  if (unitSize < UNIT_MIN)
    unitSize = UNIT_MIN;
  unitSize = SizeAlignUp(unitSize, MPS_PF_ALIGN);
  if (extendBy < unitSize)
    extendBy = unitSize;
  extendBy = SizeArenaGrains(extendBy, arena);

  mfs->extendBy = extendBy;
  mfs->extendSelf = extendSelf;
  mfs->unitSize = unitSize;
  mfs->freeList = NULL;
  mfs->tractList = NULL;
  mfs->total = 0;
  mfs->free = 0;

  SetClassOfPoly(pool, CLASS(MFSPool));
  mfs->sig = MFSSig;
  AVERC(MFS, mfs);

  EVENT5(PoolInitMFS, pool, arena, extendBy, BOOLOF(extendSelf), unitSize);
  return ResOK;

failNextInit:
  AVER(res != ResOK);
  return res;
}
示例#24
0
FILE * get_file(struct IridiumContext * context, object self) {
  object reason = NULL;
  FILE * f = internal_get_attribute(self, L_ATOM(FILE), FILE *);
  if (f == NULL) {
    reason = send(self, "to_s");
    reason = send(reason, "__add__", IR_STRING(" is not open"));
    RAISE(send(CLASS(IOError), "new", reason));  
  }
  return f;
}
示例#25
0
文件: buffer.c 项目: Ravenbrook/mps
static Res BufferAbsInit(Buffer buffer, Pool pool, Bool isMutator, ArgList args)
{
  Arena arena;

  AVER(buffer != NULL);
  AVERT(Pool, pool);
  AVER(BoolCheck(isMutator));
  AVERT(ArgList, args);

  /* Superclass init */
  InstInit(CouldBeA(Inst, buffer));
  
  arena = PoolArena(pool);

  /* Initialize the buffer.  See <code/mpmst.h> for a definition of
     the structure.  sig and serial comes later .init.sig-serial */
  buffer->arena = arena;
  buffer->pool = pool;
  RingInit(&buffer->poolRing);
  buffer->isMutator = isMutator;
  if (ArenaGlobals(arena)->bufferLogging) {
    buffer->mode = BufferModeLOGGED;
  } else {
    buffer->mode = 0;
  }
  buffer->fillSize = 0.0;
  buffer->emptySize = 0.0;
  buffer->alignment = PoolAlignment(pool);
  buffer->base = (Addr)0;
  buffer->initAtFlip = (Addr)0;
  /* In the next three assignments we really mean zero, not NULL, because
     the bit pattern is compared.  It's pretty unlikely we'll encounter
     a platform where this makes a difference. */
  buffer->ap_s.init = (mps_addr_t)0;
  buffer->ap_s.alloc = (mps_addr_t)0;
  buffer->ap_s.limit = (mps_addr_t)0;
  buffer->poolLimit = (Addr)0;
  buffer->rampCount = 0;

  /* .init.sig-serial: Now the vanilla stuff is initialized, sign the
     buffer and give it a serial number. It can then be safely checked
     in subclass methods. */
  buffer->serial = pool->bufferSerial; /* .trans.mod */
  ++pool->bufferSerial;
  SetClassOfPoly(buffer, CLASS(Buffer));
  buffer->sig = BufferSig;
  AVERT(Buffer, buffer);

  /* Attach the initialized buffer to the pool. */
  RingAppend(&pool->bufferRing, &buffer->poolRing);

  EVENT3(BufferInit, buffer, pool, BOOLOF(buffer->isMutator));

  return ResOK;
}
示例#26
0
size_t file_length(struct IridiumContext * context, FILE * f, object filename) {
  struct stat st;
  object reason = NULL;
  if (-1 == fstat(fileno(f), &st)) {
    reason = filename;
    reason = send(reason, "__add__", IR_STRING(" -- "));
    reason = send(reason, "__add__", IR_STRING(strerror(errno)));
    RAISE(send(CLASS(IOError), "new", reason));
  }
  return st.st_size;
}
示例#27
0
/*
 * Method:    Pm_WriteSysEx
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteSysEx
  (JNIEnv *env, jclass cl, jobject jstream, jint when, jbyteArray jmsg)
{
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    jbyte *bytes = (*env)->GetByteArrayElements(env, jmsg, 0);
    PmError rslt = Pm_WriteSysEx(PMSTREAM(jstream, fid), when, 
                                 (unsigned char *) bytes);
    (*env)->ReleaseByteArrayElements(env, jmsg, bytes, 0);
    return rslt;
}
示例#28
0
iridium_method(File, write) {
  // The string to write
  char * str = C_STRING(context, local(str));
  size_t len = strlen(str);
  FILE * f = internal_get_attribute(local(self), L_ATOM(FILE), FILE *);
  size_t written = fwrite(str, sizeof str[0], len, f);
  if (written != len) {
    RAISE(send(CLASS(IOError), "new", IR_STRING("File not in write mode")));
  }
  return NIL;
}
示例#29
0
/*
 * Method:    Pm_OpenOutput
 */
JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenOutput
  (JNIEnv *env, jclass cl, jobject jstream, jint index, jstring extras,
   jint bufsiz, jint latency)
{
    PmError rslt;
    PortMidiStream *stream;
    CLASS(c, jstream);
    ADDRESS_FID(fid, c);
    rslt = Pm_OpenOutput(&stream, index, NULL, bufsiz, NULL, NULL, latency);
    SET_PMSTREAM(jstream, fid, stream);
    return rslt;
}
示例#30
0
static int
parseip(char *name, uint32_t *ip)
{
	unsigned char addr[4];
	char *p;
	int i, x;

	p = name;
    // ipv4 解析
	for(i=0; i<4 && *p; i++){
		x = strtoul(p, &p, 0);
        // x.x.x.x ipv4 单个字段不会超过 255
		if(x < 0 || x >= 256)
			return -1;
        // 数值接着的应该为 .
		if(*p != '.' && *p != 0)
			return -1;
		if(*p == '.')
			p++;
		addr[i] = x;
	}

    // 根据第一个数值的高两位来确定 ip 地址的类型
    // 0 为 A 类, 1.0.0.1-126.255.255.254
    // 1 为 B 类, 128.1.0.1-191.255.255.254
    // 2 为 C 类, 192.0.1.1-223.255.255.254
    // 如果不足 4个段,那么低的段使用 0
	switch(CLASS(addr)){
	case 0:
	case 1:
		if(i == 3){
			addr[3] = addr[2];
			addr[2] = addr[1];
			addr[1] = 0;
		}else if(i == 2){
			addr[3] = addr[1];
			addr[2] = 0;
			addr[1] = 0;
		}else if(i != 4)
			return -1;
		break;
	case 2:
		if(i == 3){
			addr[3] = addr[2];
			addr[2] = 0;
		}else if(i != 4)
			return -1;
		break;
	}
	*ip = *(uint32_t*)addr;
	return 0;
}