示例#1
0
static kBasicBlock* new_BasicBlockLABEL(KonohaContext *kctx)
{
	kBasicBlock *bb = new_(BasicBlock, 0);
	bb->id = kArray_size(ctxcode->codeList);
	KLIB kArray_add(kctx, ctxcode->codeList, bb);
	return bb;
}
示例#2
0
static void SugarModule_Setup(KonohaContext *kctx, struct KRuntimeModel *def, int newctx)
{
	if(!newctx && kctx->localContexts[ParserModelIndex] == NULL) {
		KParserContext *base = (KParserContext *)KCalloc_UNTRACE(sizeof(KParserContext), 1);
		base->h.reftrace = KParserContext_Reftrace;
		base->h.free     = KParserContext_Free;

		base->errorMessageCount = 0;
		base->preparedTokenList = new_(TokenArray, K_PAGESIZE/sizeof(void *), OnContextConstList);
		base->errorMessageList  = new_(StringArray, 8, OnContextConstList);
		base->definedMethodList = new_(MethodArray, 8, OnContextConstList);

		KLIB KArray_Init(kctx, &base->errorMessageBuffer, K_PAGESIZE);
		kctx->localContexts[ParserModelIndex] = (KModelContext *)base;
	}
}
示例#3
0
static kToken* new_ParsedExprToken(KonohaContext *kctx, kNameSpace *ns, kExpr *expr)
{
	kTokenVar *ParsedExprToken = new_(TokenVar, 0, OnGcStack);
	ParsedExprToken->resolvedSyntaxInfo = SYN_(ns, KW_ExprPattern);
	KFieldSet(ParsedExprToken, ParsedExprToken->parsedExpr, expr);
	return (kToken *)ParsedExprToken;
}
示例#4
0
/*#####################################################*/
bool board_init()
{
	//RtcStruct.Rtc_ClkSource = _Rtc_Clk_Source_RCOSC_gc;
	core_init();
	//timer_init();
/*-----------------------------------------------------*/
/* Set up the Uart 0 like debug interface with RxBuff = 256, TxBuff = 256, 115200b/s*/
	DebugCom = new_(new_uart);
	DebugCom->BaudRate = 115200;
	DebugCom->RxBuffSize = 20;
	DebugCom->TxBuffSize = 10;
	//DebugCom->Mode = UsartCom_Mode_Asynchronus;
	DebugCom->Priority = 0;
	DebugCom->UartNr = 5;
	uart_open(DebugCom);
/*-----------------------------------------------------*/
/* Display board message*/
#if defined(BOARD_MESSAGE)
	UARTPutc(DebugCom, 0xFF);
	UARTPutc(DebugCom, 0xFF);
	UARTPutc(DebugCom, '\n');
	UARTPutc(DebugCom, '\r');
	UARTprintf(DebugCom, "Use %s Board.\n\r", BOARD_MESSAGE);
#endif
/*-----------------------------------------------------*/
	HARDBTN1 = gpio_assign(0, 1, GPIO_DIR_INPUT);
	gpio_up_dn(HARDBTN1, 1);
/*-----------------------------------------------------*/
	LED1 = gpio_assign(3, 12, GPIO_DIR_OUTPUT);
	LED2 = gpio_assign(3, 13, GPIO_DIR_OUTPUT);
	LED3 = gpio_assign(3, 14, GPIO_DIR_OUTPUT);
	LED4 = gpio_assign(3, 15, GPIO_DIR_OUTPUT);
/*-----------------------------------------------------*/
	return true;
}
示例#5
0
knh_Bytes_t* new_Bytes(Ctx *ctx, size_t capacity)
{
	knh_Bytes_t *ba = new_(Bytes);
	if(capacity > 0) {
		knh_Bytes_expands(ctx, ba, capacity);
	}
	return ba;
}
示例#6
0
文件: malloc_.c 项目: mantal/libft
void	*malloc_(size_t size)
{
	if (size == 0)
		return (NULL);
	if (g_malloc_memory == NULL)
		g_malloc_memory = new_(sizeof(t_chunk));
	return (chunk_find(size));
}
示例#7
0
// Copied from namespace.h.
static void kNameSpace_AppendArrayRef(KonohaContext *kctx, kNameSpace *ns, const kArray **arrayRef, kObject *o)
{
	if(arrayRef[0] == NULL) {
		((kArray**)arrayRef)[0] = new_(Array, 0, ns->NameSpaceConstList);
	}
	DBG_ASSERT(IS_Array(arrayRef[0]));
	KLIB kArray_Add(kctx, arrayRef[0], o);
}
示例#8
0
KNHAPI(knh_OutputStream_t*) new_BytesOutputStream(Ctx *ctx, knh_Bytes_t *ba)
{
	knh_OutputStream_t* w = new_(OutputStream);
	KNH_SETv(ctx, DP(w)->ba, ba);
	knh_OutputStream_setBOL(w, 1);
	knh_OutputStream_setStoringBuffer(w, 1);
	return w;
}
示例#9
0
static void SugarModule_Setup(KonohaContext *kctx, struct KonohaModule *def, int newctx)
{
	if(!newctx && kctx->modlocal[MOD_sugar] == NULL) {
		SugarContext *base = (SugarContext *)KCalloc_UNTRACE(sizeof(SugarContext), 1);
		base->h.reftrace = SugarContext_Reftrace;
		base->h.free     = SugarContext_Free;

		base->errorMessageCount = 0;
		base->preparedTokenList = new_(TokenArray, K_PAGESIZE/sizeof(void *), OnContextConstList);
		base->errorMessageList  = new_(StringArray, 8, OnContextConstList);
		base->definedMethodList = new_(MethodArray, 8, OnContextConstList);
		base->preparedGamma     = new_(Gamma, NULL, OnContextConstList);

		KLIB Karray_Init(kctx, &base->errorMessageBuffer, K_PAGESIZE);
		kctx->modlocal[MOD_sugar] = (KonohaModuleContext *)base;
	}
}
示例#10
0
// 画像ファイルを読み込み、
// type,width,heightを計算
// @param file_name 読み込む画像ファイル名
int open_ImageFile(ImageData *this_,const char *file_name){
  FILE *fp;

  this_->width = -1;
  this_->height = -1;
  this_->type = Type_NONE;

  if((fp = fopen(file_name,"rb")) == NULL){
	fprintf(stderr,
			"error:  %s(%d)::open_ImageFile() - cannot open File '%s'\n",
			__FILE__,__LINE__,file_name);
	return -1;
  }
  // ファイルサイズを求める
  {
	fpos_t fsize;
	// MinGW では __pos が不要
#if __WIN32__
	fsize = 0;
#else
	fsize.__pos = 0;
#endif
	fseek(fp,0,SEEK_END);
	fgetpos(fp,&fsize);
	// MinGW では __pos が不要
#if __WIN32__
	this_->data_size = (unsigned int)fsize;
#else
	this_->data_size = (unsigned int)fsize.__pos;
#endif
	rewind(fp);
  }

  // 領域確保とデータ読み込み
  this_->raw_data = (byte*)new_(this_->data_size);
  {
	int c;
	unsigned int i;
	for(i=0;i<this_->data_size; i++){
	  if(feof(fp) || (c=fgetc(fp))==EOF){
		fprintf(stderr,
				"error:  %s(%d)::open_ImageFile() - can not read File '%s'\n",
				__FILE__,__LINE__,file_name);
		this_->data_size = 0;
		delete_(this_->raw_data);
		fclose(fp);
		this_->raw_data = NULL;
		return -1;
	  }
	  this_->raw_data[i] = (byte)c;
	}
  }
  fclose(fp);

  // 画像のフォーマット特定、サイズの計算
  calcImageSize(this_);
  return 0;
}
示例#11
0
static void KRuntimeContext_Init(KonohaContext *kctx, KonohaContextVar *ctx, size_t stacksize)
{
	size_t i;
	KRuntimeContextVar *base = (KRuntimeContextVar *)KCalloc_UNTRACE(sizeof(KRuntimeContextVar), 1);
	base->stacksize = stacksize;
	base->stack = (KonohaStack *)KCalloc_UNTRACE(sizeof(KonohaStack), stacksize);
	assert(stacksize>64);
	base->stack_uplimit = base->stack + (stacksize - 64);
	for(i = 0; i < stacksize; i++) {
		KUnsafeFieldInit(base->stack[i].asObject, K_NULL);
	}
	KUnsafeFieldInit(base->ContextConstList, new_(Array, 8, OnField));
	KUnsafeFieldInit(base->ThrownException, (kException *)K_NULL);
	base->gcStack = new_(Array, K_PAGESIZE/sizeof(void *), base->ContextConstList);
	KLIB KArray_Init(kctx, &base->cwb, K_PAGESIZE * 4);
	ctx->esp = base->stack;
	ctx->stack = base;
}
示例#12
0
static KMETHOD TypeCheck_RegExp(KonohaContext *kctx, KonohaStack *sfp)
{
	VAR_TypeCheck(stmt, expr, gma, reqty);
	kToken *tk = expr->termToken;
	kRegExp *r = new_(RegExp, NULL, OnGcStack);
	DBG_ASSERT(kArray_size(tk->subTokenList) == 2);
	RegExp_set(kctx, r, tk->subTokenList->stringItems[0], tk->subTokenList->stringItems[1]);
	KReturn(SUGAR kExpr_setConstValue(kctx, expr, TY_RegExp, UPCAST(r)));
}
示例#13
0
knh_Bytes_t* new_Bytes(CTX ctx, const char *name, size_t capacity)
{
	knh_Bytes_t *ba = new_(Bytes);
	ba->DBG_name = name;
	if(capacity > 0) {
		knh_Bytes_expands(ctx, ba, capacity);
	}
	return ba;
}
ptr CON194_create_(ptr self__, int ln__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(194,0);
   IATT_(res__,4) = (int)ln__;

   ret0__:
   return (res__);
}
ptr TYP114_create_(ptr self__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(114,1);
   IATT_(res__,4) = (int)GLO68_curr_lineno_;

   ret0__:
   return (res__);
}
示例#16
0
void ksampleshare_setup(CTX, struct kmodshare_t *def)
{
	if(_ctx->mod[MOD_SAMPLE] == NULL) {
		ksamplemod_t *mod = (ksamplemod_t *) KCALLOC(sizeof(ksamplemod_t));
		mod->h.reftrace = ksamplemod_reftrace;
		mod->h.free     = ksamplemod_free;
		KINITv(mod->array, new_(Array, 8));
		_ctx->mod[MOD_SAMPLE] = (kmodlocal_t*)mod;
	}
}
示例#17
0
knh_OutputStream_t* new_OutputStreamDSPI(Ctx *ctx, knh_io_t fd, const knh_StreamDSPI_t *dspi)
{
	knh_OutputStream_t* w = new_(OutputStream);
//	KNH_SETv(ctx, DP(w)->urn, urn);
	DP(w)->fd = fd;
	SP(w)->dspi = dspi;
	//KNH_SETv(ctx, DP(w)->ba, new_Bytes(ctx, K_PAGESIZE));
	knh_OutputStream_setBOL(w,1);
	return w;
}
ptr ASS135_create_(ptr self__, ptr a__, int ln__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(135,0);
   PATT_(res__,16) = (ptr)a__;
   IATT_(res__,4) = (int)ln__;

   ret0__:
   return (res__);
}
示例#19
0
// reallocのラッパー
// エラー時には perror を実行し、exit
void* renew_(void *ptr,size_t size){
  if(ptr == NULL) return new_(size);
  void* ret = realloc(ptr,size);
  if(size == 0) return NULL;
  if(ret == NULL){
	CERRP("realloc(ptr,%d)", (int)size);
	perror("realloc in my_stdlib.c");
	exit(EXIT_FAILURE);
  }
  return ret;
}
示例#20
0
static KMETHOD Statement_syntax(KonohaContext *kctx, KonohaStack *sfp)
{
	kbool_t r = 0;
	VAR_Statement(stmt, gma);
	kTokenArray *tokenList = (kTokenArray *)kStmt_GetObject(kctx, stmt, KW_TokenPattern, NULL);
	if(tokenList == NULL) {
		SUGAR kStmt_Message2(kctx, stmt, NULL, ErrTag, "empty syntax");
	}
	if(tokenList != NULL) {
		if(!IS_Array(tokenList)) { // create tokenList from a Token
			kTokenArray *a = new_(TokenArray, 0, OnGcStack);
			KLIB kArray_Add(kctx, a, tokenList);
			tokenList = a;
		}
		DBG_ASSERT(IS_Array(tokenList));
		kNameSpace *ns = Stmt_ns(stmt);
		SugarSyntaxVar *syn = kNameSpace_guessSyntaxFromTokenList(kctx, ns, tokenList);
		if(syn != NULL) {
			if(syn->syntaxPatternListNULL_OnList != NULL) {
				SUGAR kStmt_Message2(kctx, stmt, NULL, InfoTag, "oveloading syntax: %s%s", PSYM_t(syn->keyword));
			}
			else {
				syn->syntaxPatternListNULL_OnList = new_(TokenArray, 0, ns->NameSpaceConstList);
			}
			TokenSeq tokens = {ns, tokenList, 0, kArray_size(tokenList)};
			// Referred to kNameSpace_ParseSyntaxPattern in ast.h.
			kArray *patternList = syn->syntaxPatternListNULL_OnList;
			size_t firstPatternIdx = kArray_size(patternList);
			SUGAR kArray_AddSyntaxRule(kctx, patternList, &tokens);
			if(firstPatternIdx < kArray_size(patternList)) {
				kToken *firstPattern = patternList->TokenItems[firstPatternIdx];
				if(kToken_isFirstPattern(firstPattern)) {
					kNameSpace_AppendArrayRef(kctx, ns, &((kNameSpaceVar *)ns)->stmtPatternListNULL_OnList, UPCAST(firstPattern));
				}
			}
			r = 1;
		}
		kStmt_done(kctx, stmt);
	}
	KReturnUnboxValue(r);
}
示例#21
0
static KMETHOD Expression_Bracket(KonohaContext *kctx, KonohaStack *sfp)
{
	VAR_Expression(stmt, tokenList, beginIdx, operatorIdx, endIdx);
	KonohaClass *genericsClass = NULL;
	kNameSpace *ns = Stmt_ns(stmt);
	int nextIdx = SUGAR TokenUtils_ParseTypePattern(kctx, ns, tokenList, beginIdx, endIdx, &genericsClass);
	if(nextIdx != -1) {  // to avoid Func[T]
		KReturn(SUGAR kStmt_ParseOperatorExpr(kctx, stmt, tokenList->TokenItems[beginIdx]->resolvedSyntaxInfo, tokenList, beginIdx, beginIdx, endIdx));
	}
	kToken *currentToken = tokenList->TokenItems[operatorIdx];
	if(beginIdx == operatorIdx) {
		/* transform '[ Value1, Value2, ... ]' to '(Call Untyped new (Value1, Value2, ...))' */
		DBG_ASSERT(currentToken->resolvedSyntaxInfo->keyword == KW_BracketGroup);
		kExpr *arrayExpr = SUGAR new_UntypedCallStyleExpr(kctx, currentToken->resolvedSyntaxInfo, 2, currentToken, K_NULL);
		KReturn(SUGAR kStmt_AddExprParam(kctx, stmt, arrayExpr, currentToken->subTokenList, 0, kArray_size(currentToken->subTokenList), NULL));
	}
	else {
		kExpr *leftExpr = SUGAR kStmt_ParseExpr(kctx, stmt, tokenList, beginIdx, operatorIdx, NULL);
		if(leftExpr == K_NULLEXPR) {
			KReturn(leftExpr);
		}
		if(leftExpr->syn->keyword == SYM_("new")) {  // new int[100], new int[]();
			DBG_P("cur:%d, beg:%d, endIdx:%d", operatorIdx, beginIdx, endIdx);
			size_t subTokenSize = kArray_size(currentToken->subTokenList);
			if(subTokenSize == 0) {
				/* transform 'new Type0 [ ]' => (Call Type0 new) */
				kExpr_Setsyn(leftExpr, SYN_(ns, KW_ExprMethodCall));
			} else {
				/* transform 'new Type0 [ Type1 ] (...) => new 'Type0<Type1>' (...) */
				KonohaClass *classT0 = NULL;
				kArray *subTokenList = currentToken->subTokenList;
				int beginIdx = -1;
				if(kArray_size(subTokenList) > 0) {
					beginIdx = SUGAR TokenUtils_ParseTypePattern(kctx, ns, subTokenList, 0, kArray_size(subTokenList), &classT0);
				}
				beginIdx = (beginIdx == -1) ? 0 : beginIdx;
				kExpr_Setsyn(leftExpr, SYN_(ns, KW_ExprMethodCall));
				DBG_P("currentToken->subtoken:%d", kArray_size(subTokenList));
				leftExpr = SUGAR kStmt_AddExprParam(kctx, stmt, leftExpr, subTokenList, beginIdx, kArray_size(subTokenList), "[");
			}
		}
		else {
			/* transform 'Value0 [ Value1 ]=> (Call Value0 get (Value1)) */
			kTokenVar *tkN = /*G*/new_(TokenVar, 0, OnGcStack);
			tkN->resolvedSymbol= MN_toGETTER(0);
			tkN->uline = currentToken->uline;
			SugarSyntax *syn = SYN_(Stmt_ns(stmt), KW_ExprMethodCall);
			leftExpr  = SUGAR new_UntypedCallStyleExpr(kctx, syn, 2, tkN, leftExpr);
			leftExpr = SUGAR kStmt_AddExprParam(kctx, stmt, leftExpr, currentToken->subTokenList, 0, kArray_size(currentToken->subTokenList), "[");
		}
		KReturn(SUGAR kStmt_RightJoinExpr(kctx, stmt, leftExpr, tokenList, operatorIdx + 1, endIdx));
	}
}
ptr INT182_create_(ptr self__, int i__, ptr iset__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(182,0);
   IATT_(res__,4) = (int)i__;
   PATT_(res__,12) = (ptr)iset__;
   IATT_(res__,8) = (int)i__;

   ret0__:
   return (res__);
}
ptr ROU24_create_(ptr self__, ptr a__, ptr o__, ptr b__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(24,0);
   PATT_(res__,4) = (ptr)a__;
   PATT_(res__,8) = (ptr)b__;
   PATT_(res__,12) = (ptr)o__;

   ret0__:
   return (res__);
}
ptr ARE32_create_(ptr self__, ptr arr__, ptr inds__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(32,0);
   PATT_(res__,12) = (ptr)arr__;
   PATT_(res__,16) = (ptr)inds__;
   IATT_(res__,4) = (int)GLO68_curr_lineno_;

   ret0__:
   return (res__);
}
示例#25
0
knh_InputStream_t* new_BytesInputStream(Ctx *ctx, knh_Bytes_t *ba)
{
	knh_InputStream_t* in = new_(InputStream);
	DBG_ASSERT(ba != ctx->bufa);
	DP(in)->fd = IO_NULL;
	KNH_SETv(ctx, DP(in)->ba, ba);
	DP(in)->buf = (char*)(ba)->bu.ubuf;
	DP(in)->bufsiz = BA_size(ba);
	DP(in)->bufpos   = 0;
	DP(in)->bufend   = BA_size(ba);
	return in;
}
ptr ELS139_create_(ptr self__, ptr t__, ptr tp__, int ln__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(139,0);
   PATT_(res__,12) = (ptr)t__;
   PATT_(res__,16) = (ptr)tp__;
   IATT_(res__,4) = (int)ln__;

   ret0__:
   return (res__);
}
ptr SYM186_create_(ptr self__, int sz__, ptr cls__)
{
   ptr res__ = 0;

   res__ = (ptr)new_(186,0);
   PATT_(res__,4) = (ptr)cls__;
   PATT_(res__,8) = (ptr)LIS231_push_(LIS231_create_(0,4),HAS230_create_(0,20));
   IATT_(res__,16) = (int)0;
   PATT_(res__,12) = (ptr)LIS98_create_(PATT_(res__,12),20);

   ret0__:
   return (res__);
}
示例#28
0
static kStmt* TypeDeclAndMakeSetter(KonohaContext *kctx, kStmt *stmt, kGamma *gma, ktype_t ty, kExpr *termExpr, kExpr *valueExpr, kObject *scr)
{
    kNameSpace *ns = Stmt_ns(stmt);
    kMethod *mtd = Object_newProtoSetterNULL(kctx, stmt, scr, ty, termExpr->termToken->resolvedSymbol);
    if(mtd != NULL) {
        kExpr *recvExpr =  new_ConstValueExpr(kctx, O_typeId(scr), scr);
        kExpr *setterExpr = SUGAR new_TypedCallExpr(kctx, stmt, gma, TY_void, mtd,  2, recvExpr, valueExpr);
        kStmt *newstmt = new_(Stmt, stmt->uline, OnGcStack);
        kStmt_setsyn(newstmt, SYN_(ns, KW_ExprPattern));
        KLIB kObject_setObject(kctx, newstmt, KW_ExprPattern, TY_Expr, setterExpr);
        return newstmt;
    }
    return NULL;
}
示例#29
0
knh_InputStream_t* new_StringInputStream(Ctx *ctx, knh_String_t *str, size_t s, size_t e)
{
	knh_InputStream_t* o = new_(InputStream);
	DP(o)->fd = IO_NULL;
	DBG_ASSERT(IS_String(str));
	KNH_SETv(ctx, DP(o)->str, str);
	DP(o)->buf = (char*)S_tochar(str);
	DP(o)->bufsiz = S_size(str);
	DBG_ASSERT(e <= S_size(str));
	DBG_ASSERT(s <= e);
	DP(o)->bufpos   = s;
	DP(o)->bufend   = e;
	return o;
}
示例#30
0
文件: evidence.c 项目: utrhira/mpik
static kException* new_Assertion(CTX ctx, kline_t uline)
{
	kException* e = new_(Exception);
	char buf[256] = {'A', 's', 's', 'e', 'r', 't', 'i', 'o', 'n', '!', '!', ':', ' '};
	char *mbuf = buf + 13;
	knh_readuline(ctx, uline, mbuf, sizeof(buf)-13);
	if(mbuf[0] == 0) {
		kuri_t uri = ULINE_uri(uline);
		size_t line = ULINE_line(uline);
		knh_snprintf(buf, sizeof(buf), "Assertion!!: %s at line %lu", FILENAME__(uri), line);
	}
	KNH_SETv(ctx, e->emsg, new_String2(ctx, CLASS_String, (const char*)buf, knh_strlen(buf), SPOL_ASCII));
	e->uline = uline;
	return e;
}