more binding cleanup

This commit is contained in:
Justin Meza 2013-02-25 00:00:07 -05:00
parent 5337b65513
commit 78b8308da1
1 changed files with 13 additions and 59 deletions

View File

@ -39,6 +39,18 @@ struct returnobject *freadWrapper(struct scopeobject *scope)
return createReturnObject(RT_RETURN, ret);
}
struct returnobject *fwriteWrapper(struct scopeobject *scope)
{
ValueObject *arg1 = getArg(scope, "file");
ValueObject *arg2 = getArg(scope, "data");
FILE *file = (FILE *)getBlob(arg1);
char *data = getString(arg2);
fwrite(data, 1, strlen(data), file);
return createReturnObject(RT_DEFAULT, NULL);
}
struct returnobject *fcloseWrapper(struct scopeobject *scope)
{
ValueObject *arg1 = getArg(scope, "file");
@ -62,6 +74,7 @@ void loadLibrary(ScopeObject *scope, IdentifierNode *name)
updateScopeValue(scope, scope, id, val);
loadBinding(lib, "FOPENIN", "filename mode", &fopenWrapper);
loadBinding(lib, "FREADIN", "file length", &freadWrapper);
loadBinding(lib, "FWRITIN", "file data", &fwriteWrapper);
loadBinding(lib, "FCLOSIN", "file", &fcloseWrapper);
}
@ -99,65 +112,6 @@ void loadBinding(ScopeObject *scope, char *name, const char *args, struct return
updateScopeValue(scope, scope, id, val);
return;
/* fopen */
/*
{
IdentifierNode* name = createIdentifierNode(IT_DIRECT, (void *)copyString("FOPENIN"), NULL, NULL, 0);
StmtNodeList *stmts = createStmtNodeList();
BindingStmtNode *binding = createBindingStmtNode(&fopenWrapper);
StmtNode *wrapper = createStmtNode(ST_BINDING, binding);
addStmtNode(stmts, wrapper);
BlockNode *body = createBlockNode(stmts);
FuncDefStmtNode *interface = createFuncDefStmtNode(NULL, name, args, body);
ValueObject *val = createFunctionValueObject(interface);
createScopeValue(stdio, stdio, name);
updateScopeValue(stdio, stdio, name, val);
}
*/
/* fread */
/*
{
IdentifierNode* name = createIdentifierNode(IT_DIRECT, (void *)copyString("FREADIN"), NULL, NULL, 0);
IdentifierNodeList *args = createIdentifierNodeList();
IdentifierNode *filename = createIdentifierNode(IT_DIRECT, (void *)copyString("file"), NULL, NULL, 0);
IdentifierNode *mode = createIdentifierNode(IT_DIRECT, (void *)copyString("length"), NULL, NULL, 0);
addIdentifierNode(args, filename);
addIdentifierNode(args, mode);
StmtNodeList *stmts = createStmtNodeList();
BindingStmtNode *binding = createBindingStmtNode(&freadWrapper);
StmtNode *wrapper = createStmtNode(ST_BINDING, binding);
addStmtNode(stmts, wrapper);
BlockNode *body = createBlockNode(stmts);
FuncDefStmtNode *interface = createFuncDefStmtNode(NULL, name, args, body);
ValueObject *val = createFunctionValueObject(interface);
createScopeValue(stdio, stdio, name);
updateScopeValue(stdio, stdio, name, val);
}
*/
/* fclose */
/*
{
IdentifierNode* name = createIdentifierNode(IT_DIRECT, (void *)copyString("FCLOSIN"), NULL, NULL, 0);
IdentifierNodeList *args = createIdentifierNodeList();
IdentifierNode *filename = createIdentifierNode(IT_DIRECT, (void *)copyString("file"), NULL, NULL, 0);
addIdentifierNode(args, filename);
StmtNodeList *stmts = createStmtNodeList();
BindingStmtNode *binding = createBindingStmtNode(&fcloseWrapper);
StmtNode *wrapper = createStmtNode(ST_BINDING, binding);
addStmtNode(stmts, wrapper);
BlockNode *body = createBlockNode(stmts);
FuncDefStmtNode *interface = createFuncDefStmtNode(NULL, name, args, body);
ValueObject *val = createFunctionValueObject(interface);
createScopeValue(stdio, stdio, name);
updateScopeValue(stdio, stdio, name, val);
}
*/
return;
loadBindingAbort: /* Exception handling */
return;