示例#1
0
/* LSNs are different since they are really normally
 * treated as by-value objects.  We actually create
 * a pointer to the LSN and store that, deleting it
 * when the LSN is GC'd.
 */
jobject get_DbLsn(JNIEnv *jnienv, DB_LSN dbobj)
{
	DB_LSN *lsnp = (DB_LSN *)malloc(sizeof(DB_LSN));
	memset(lsnp, 0, sizeof(DB_LSN));
	*lsnp = dbobj;
	return (convert_object(jnienv, name_DB_LSN, lsnp));
}
示例#2
0
文件: types.c 项目: jpcummins/stash
mustache_value_t* convert_type(
  char* key,
  void* context,
  mustache_context_t* m_lookup_context,
  mustache_context_t* m_exection_context)
{
    if (strcmp(key, ".") == 0) {
        return convert_value((VALUE)context, m_lookup_context);
    }

    VALUE rb_context = (VALUE) context;
    switch (TYPE(rb_context)) {
        case T_OBJECT: return convert_object(rb_context, key, m_lookup_context, m_exection_context);
        case T_HASH:   return convert_hash(rb_context, key, m_lookup_context, m_exection_context);
        default:       return NULL;
    }
}
示例#3
0
jobject get_DbTxnStat(JNIEnv *jnienv, DB_TXN_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_TXN_STAT, dbobj));
}
示例#4
0
jobject get_DbTxn(JNIEnv *jnienv, DB_TXN *dbobj)
{
	return (convert_object(jnienv, name_DB_TXN, dbobj));
}
示例#5
0
jobject get_DbQueueStat(JNIEnv *jnienv, DB_QUEUE_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_QUEUE_STAT, dbobj));
}
示例#6
0
jobject get_DbMpoolStat(JNIEnv *jnienv, DB_MPOOL_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_MPOOL_STAT, dbobj));
}
示例#7
0
jobject get_Dbt(JNIEnv *jnienv, DBT *dbt)
{
	return (convert_object(jnienv, name_DBT, dbt));
}
示例#8
0
jobject get_DbLogStat(JNIEnv *jnienv, DB_LOG_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_LOG_STAT, dbobj));
}
示例#9
0
jobject get_DbHashStat(JNIEnv *jnienv, DB_HASH_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_HASH_STAT, dbobj));
}
示例#10
0
jobject get_Dbc(JNIEnv *jnienv, DBC *dbobj)
{
	return (convert_object(jnienv, name_DBC, dbobj));
}
示例#11
0
/* Convert a C pointer to the various Java objects they represent.
 */
jobject get_DbBtreeStat(JNIEnv *jnienv, DB_BTREE_STAT *dbobj)
{
	return (convert_object(jnienv, name_DB_BTREE_STAT, dbobj));
}
示例#12
0
void convert_objects(void)
{
    int vnum;
    AREA_DATA *pArea;
    RESET_DATA *pReset;
    MOB_INDEX_DATA *pMob = NULL;
    OBJ_INDEX_DATA *pObj;
    ROOM_INDEX_DATA *pRoom;

    if (newobjs == top_obj_index)
	return;			/* all objects in new format */

    for (pArea = area_first; pArea; pArea = pArea->next) {
	for (vnum = pArea->min_vnum; vnum <= pArea->max_vnum; vnum++) {
	    if (!(pRoom = get_room_index(vnum)))
		continue;

	    for (pReset = pRoom->reset_first; pReset; pReset = pReset->next) {
		switch (pReset->command) {
		case 'M':
		    if (!(pMob = get_mob_index(pReset->arg1)))
			bug("Convert_objects: 'M': bad vnum %d.", pReset->arg1);
		    break;

		case 'O':
		    if (!(pObj = get_obj_index(pReset->arg1))) {
			bug("Convert_objects: 'O': bad vnum %d.", pReset->arg1);
			break;
		    }
		    if (pObj->new_format)
			continue;

		    if (!pMob) {
			bug("Convert_objects: 'O': No mob reset yet.", 0);
			break;
		    }
		    pObj->level = pObj->level < 1 ? pMob->level - 2
			: UMIN(pObj->level, pMob->level - 2);
		    break;

		case 'P':
		    {
			OBJ_INDEX_DATA *pObj, *pObjTo;

			if (!(pObj = get_obj_index(pReset->arg1))) {
			    bug("Convert_objects: 'P': bad vnum %d.", pReset->arg1);
			    break;
			}
			if (pObj->new_format)
			    continue;

			if (!(pObjTo = get_obj_index(pReset->arg3))) {
			    bug("Convert_objects: 'P': bad vnum %d.", pReset->arg3);
			    break;
			}
			pObj->level = pObj->level < 1 ? pObjTo->level
			    : UMIN(pObj->level, pObjTo->level);
		    }
		    break;

		case 'G':
		case 'E':
		    if (!(pObj = get_obj_index(pReset->arg1))) {
			bug("Convert_objects: 'E' or 'G': bad vnum %d.", pReset->arg1);
			break;
		    }
		    if (!pMob) {
			bug("Convert_objects: 'E' or 'G': null mob for vnum %d.",
			    pReset->arg1);
			break;
		    }
		    if (pObj->new_format)
			continue;

		    if (pMob->pShop) {
			switch (pObj->item_type) {
			default:
			    pObj->level = UMAX(0, pObj->level);
			    break;
			case ITEM_PILL:
			case ITEM_POTION:
			    pObj->level = UMAX(5, pObj->level);
			    break;
			case ITEM_SCROLL:
			case ITEM_ARMOR:
			case ITEM_WEAPON:
			    pObj->level = UMAX(10, pObj->level);
			    break;
			case ITEM_WAND:
			case ITEM_TREASURE:
			    pObj->level = UMAX(15, pObj->level);
			    break;
			case ITEM_STAFF:
			    pObj->level = UMAX(20, pObj->level);
			    break;
			}
		    } else
			pObj->level = pObj->level < 1 ? pMob->level
			    : UMIN(pObj->level, pMob->level);
		    break;
		}		/* switch ( pReset->command ) */
	    }
	}
    }

    /* do the conversion: */

    for (pArea = area_first; pArea; pArea = pArea->next)
	for (vnum = pArea->min_vnum; vnum <= pArea->max_vnum; vnum++)
	    if ((pObj = get_obj_index(vnum)))
		if (!pObj->new_format)
		    convert_object(pObj);

    return;
}