static void set_value(ValueStruct *value, VALUE obj) { VALUE class_path, str; if (NIL_P(obj)) { ValueIsNil(value); } else { ValueIsNonNil(value); switch (TYPE(obj)) { case T_TRUE: case T_FALSE: SetValueBool(value, RTEST(obj) ? TRUE : FALSE); break; case T_FIXNUM: SetValueInteger(value, FIX2INT(obj)); break; case T_BIGNUM: SetValueInteger(value, NUM2INT(obj)); break; case T_FLOAT: SetValueFloat(value, RFLOAT(obj)->value); break; case T_STRING: switch (ValueType(value)) { case GL_TYPE_BYTE: case GL_TYPE_BINARY: SetValueBinary(value, RSTRING(obj)->ptr, RSTRING(obj)->len); break; default: SetValueStringWithLength(value, RSTRING(obj)->ptr, RSTRING(obj)->len, codeset); break; } break; default: class_path = rb_class_path(CLASS_OF(obj)); if (strcasecmp(StringValuePtr(class_path), "BigDecimal") == 0) { str = rb_funcall(obj, rb_intern("to_s"), 1, rb_str_new2("F")); } else if (strcasecmp(StringValuePtr(class_path), "Time") == 0) { str = rb_funcall(obj, rb_intern("strftime"), 1, rb_str_new2("%Y%m%d%H%M%S")); dbgprintf("strftime [%s]",StringValuePtr(str)); } else { str = rb_funcall(obj, rb_intern("to_s"), 0); } SetValueString(value, StringValuePtr(str), codeset); break; } } }
void CGameSettings::LoadFromRegistry (void) // LoadFromRegistry // // Load settings from the registry { // Look for the reg key. If we can't find it, then // don't worry about it (we'll take the defaults) CRegKey Key; if (CRegKey::OpenUserAppKey(REGISTRY_COMPANY_NAME, REGISTRY_PRODUCT_NAME, &Key) != NOERROR) return; // Music CString sMusic; if (Key.FindStringValue(REGISTRY_MUSIC_OPTION, &sMusic)) SetValueBoolean(noMusic, !strEquals(sMusic, CONSTLIT("on")), true); // Volume CString sSoundVolume; if (Key.FindStringValue(REGISTRY_SOUND_VOLUME_OPTION, &sSoundVolume)) SetValueInteger(soundVolume, Min(10, Max(0, strToInt(sSoundVolume, 10, NULL))), true); }
extern int MCP_ReturnComponent(ProcessNode *node, char *event) { ValueStruct *mcp; mcp = node->mcprec->value; if (event != NULL) { SetValueString(GetItemLongName(mcp, "dc.event"), event, NULL); } SetValueString(GetItemLongName(mcp, "dc.puttype"), MCP_PUT_RETURN, NULL); SetValueString(GetItemLongName(mcp, "dc.status"), "PUTG", NULL); SetValueInteger(GetItemLongName(mcp, "rc"), 0); return (0); }
extern int MCP_PutWindow(ProcessNode *node, char *wname, char *type) { ValueStruct *mcp; mcp = node->mcprec->value; if (wname != NULL) { dbgprintf("window = [%s]", wname); SetValueString(GetItemLongName(mcp, "dc.window"), wname, NULL); } SetValueString(GetItemLongName(mcp, "dc.widget"), "", NULL); SetValueString(GetItemLongName(mcp, "dc.puttype"), type, NULL); SetValueString(GetItemLongName(mcp, "dc.status"), "PUTG", NULL); SetValueInteger(GetItemLongName(mcp, "rc"), 0); return (0); }
static void SetDBAudit(DBG_Struct *dbg) { ValueStruct *audit; LargeByteString *lbs; if (dbg->auditlog > 0) { if (ThisEnv->auditrec->value != NULL) { audit = ThisEnv->auditrec->value; SetValueInteger(GetItemLongName(audit, "ticket_id"), dbg->ticket_id); lbs = dbg->last_query; if ((lbs != NULL) && (LBS_Size(lbs) > 0)) { SetValueString(GetItemLongName(audit, "exec_query"), LBS_Body(lbs), dbg->coding); } } } }
int main(int argc, char *argv[]) { ValueStruct *value, *v; size_t size; char *buf; RecParserInit(); value = RecParseValueMem(recdef, NULL); InitializeValue(value); v = GetRecordItem(value, "command"); SetValueString(v, "a\"a\\a/a\ba\fa\na\ra\ta", NULL); v = GetItemLongName(value, "record1[0].col1"); SetValueString(v, "bbbb", NULL); v = GetItemLongName(value, "record1[0].record2.col21"); SetValueString(v, "cccc", NULL); v = GetItemLongName(value, "int1"); SetValueInteger(v, 10); v = GetItemLongName(value, "int2"); SetValueInteger(v, 20); v = GetItemLongName(value, "double1"); SetValueFloat(v, -3.2); fprintf(stderr, "\n---- JSON_PackValue\n"); size = JSON_SizeValue(NULL, value); fprintf(stderr, "size:%ld\n", size); buf = malloc(size + 1); memset(buf, 0, size + 1); JSON_PackValue(NULL, buf, value); fprintf(stderr, "[%s]\nsize:%ld\n", buf, strlen(buf)); fprintf(stderr, "\n---- JSON_UnPackValue 1\n"); JSON_UnPackValue(NULL, buf, value); DumpValueStruct(value); free(buf); fprintf(stderr, "\n---- JSON_UnPackValue 2\n"); JSON_UnPackValue(NULL, "{\"int1\":1000,\"int2\":2000}", value); DumpValueStruct(value); /* ommit */ fprintf(stderr, "\n-------------------\n"); fprintf(stderr, "ommit\n"); fprintf(stderr, "-------------------\n\n"); InitializeValue(value); v = GetRecordItem(value, "command"); SetValueString(v, "a\"a\\a/a\ba\fa\na\ra\ta", NULL); v = GetItemLongName(value, "record1[0].col1"); SetValueString(v, "bbbb", NULL); v = GetItemLongName(value, "record1[0].record2.col21"); SetValueString(v, "cccc", NULL); v = GetItemLongName(value, "int1"); SetValueInteger(v, 10); v = GetItemLongName(value, "int2"); SetValueInteger(v, 20); v = GetItemLongName(value, "record3[1].record4[1].vc41"); SetValueString(v, "vc41", NULL); fprintf(stderr, "\n---- JSON_PackValueOmmit\n"); size = JSON_SizeValueOmmit(NULL, value); fprintf(stderr, "size:%ld\n", size); buf = malloc(size + 1); memset(buf, 0, size + 1); JSON_PackValueOmmit(NULL, buf, value); fprintf(stderr, "size:%ld [%s]\n", strlen(buf), buf); free(buf); fprintf(stderr, "\n---- JSON_UnPackValueOmmit\n"); JSON_UnPackValueOmmit(NULL, "{\"int1\":1000,\"int2\":2000}", value); DumpValueStruct(value); fprintf(stderr, "\n---- JSON_UnPackValueOmmit 2\n"); JSON_UnPackValueOmmit( NULL, "{\"int1\":1234,\"int2\":5678,\"bool1\":false,\"double1\":3.141592}", value); DumpValueStruct(value); fprintf(stderr, "\n---- JSON_UnPackValueOmmit 3\n"); JSON_UnPackValueOmmit( NULL, "{\"int1\":1000,\"command\":\"moge\",\"record1\":[{\"col1\":\"muge\"," "\"record2\":{\"col21\":\"gage\"}},{},{\"col2\":\"nuge\"}],\"record3\":[{" "},{\"record4\":[{},{\"vc41\":\"vc41\"}]}]}", value); DumpValueStruct(value); InitializeValue(value); fprintf(stderr, "\n---- test\n"); JSON_UnPackValueOmmit(NULL, "{\"int1\":10,\"int0\":[0,1,2,3,0,5,0,6],\"bool1\":" "false,\"arg1\":\"hogehoge\"}", value); size = JSON_SizeValueOmmit(NULL, value); fprintf(stderr, "size:%ld\n", size); buf = malloc(size); memset(buf, 0, size); JSON_PackValueOmmit(NULL, buf, value); fprintf(stderr, "size:%d %s\n", (int)strlen(buf), buf); free(buf); fprintf(stderr, "\n\n\n\n\n\n---- JSON_PackValueOmmitString\n"); InitializeValue(value); v = GetRecordItem(value, "command"); SetValueString(v, "a\"a\\a/a\ba\fa\na\ra\ta", NULL); v = GetItemLongName(value, "record1[0].col1"); SetValueString(v, "bbbb", NULL); #if 0 v = GetItemLongName(value,"record1[0].record2.col21"); SetValueString(v,"cccc",NULL); #endif v = GetItemLongName(value, "int1"); SetValueInteger(v, 10); v = GetItemLongName(value, "int2"); SetValueInteger(v, 20); v = GetItemLongName(value, "record3[1].record4[1].vc41"); SetValueString(v, "vc41", NULL); DumpValueStruct(value); size = JSON_SizeValueOmmitString(NULL, value); fprintf(stderr, "size:%ld\n", size); buf = malloc(size + 1); memset(buf, 0, size + 1); JSON_PackValueOmmitString(NULL, buf, value); fprintf(stderr, "size:%ld [%s]\n", strlen(buf), buf); free(buf); return 0; }
static void ExecuteDB_Server(MessageHandler *handler) { RecordStruct *rec; ValueStruct *value, *ret; PathStruct *path; DB_Operation *op; size_t size; int rno, pno, ono; DBCOMM_CTRL ctrl; char *rname, *pname, *func; ConvFuncs *conv; InitializeCTRL(&ctrl); conv = handler->serialize; while (TRUE) { dbgmsg("read"); LBS_EmitStart(dbbuff); RecvLargeString(fpDBR, dbbuff); ON_IO_ERROR(fpDBR, badio); ConvSetRecName(handler->conv, recDBCTRL->name); InitializeValue(recDBCTRL->value); conv->UnPackValue(handler->conv, LBS_Body(dbbuff), recDBCTRL->value); rname = ValueStringPointer(GetItemLongName(recDBCTRL->value, "rname")); strncpy(ctrl.rname, rname, SIZE_NAME); value = NULL; ret = NULL; if ((rname != NULL) && ((rno = (int)(long)g_hash_table_lookup(DB_Table, rname)) != 0)) { ctrl.rno = rno - 1; rec = ThisDB[ctrl.rno]; value = rec->value; pname = ValueStringPointer(GetItemLongName(recDBCTRL->value, "pname")); strncpy(ctrl.pname, pname, SIZE_NAME); if ((pno = (int)(long)g_hash_table_lookup(rec->opt.db->paths, pname)) != 0) { ctrl.pno = pno - 1; path = rec->opt.db->path[pno - 1]; value = (path->args != NULL) ? path->args : value; } else { ctrl.pno = 0; path = NULL; } } else { rec = NULL; path = NULL; } func = ValueStringPointer(GetItemLongName(recDBCTRL->value, "func")); if (*func != 0) { if (path == NULL) { Error("path is NULL"); } else if ((ono = (int)(long)g_hash_table_lookup(path->opHash, func)) != 0) { op = path->ops[ono - 1]; value = (op->args != NULL) ? op->args : value; } if (rec != NULL) { ConvSetRecName(handler->conv, rec->name); } else { Error("rec is NULL"); } InitializeValue(value); conv->UnPackValue(handler->conv, LBS_Body(dbbuff), value); strncpy(ctrl.func, func, SIZE_FUNC); ret = ExecDB_Process(&ctrl, rec, value); } else { ctrl.rc = 0; } dbgmsg("write"); SetValueInteger(GetItemLongName(recDBCTRL->value, "rc"), ctrl.rc); ConvSetRecName(handler->conv, recDBCTRL->name); LBS_EmitStart(dbbuff); size = conv->SizeValue(handler->conv, recDBCTRL->value); LBS_ReserveSize(dbbuff, size, FALSE); conv->PackValue(handler->conv, LBS_Body(dbbuff), recDBCTRL->value); LBS_EmitEnd(dbbuff); SendLargeString(fpDBW, dbbuff); ON_IO_ERROR(fpDBW, badio); if (ret != NULL) { Send(fpDBW, conv->fsep, strlen(conv->fsep)); ON_IO_ERROR(fpDBW, badio); LBS_EmitStart(dbbuff); if (rec != NULL) { ConvSetRecName(handler->conv, rec->name); } size = conv->SizeValue(handler->conv, ret); LBS_ReserveSize(dbbuff, size, FALSE); conv->PackValue(handler->conv, LBS_Body(dbbuff), ret); LBS_EmitEnd(dbbuff); SendLargeString(fpDBW, dbbuff); ON_IO_ERROR(fpDBW, badio); FreeValueStruct(ret); } Send(fpDBW, conv->bsep, strlen(conv->bsep)); ON_IO_ERROR(fpDBW, badio); } badio: return; }
extern int main( int argc, char **argv) { #define SIZE_DATA 128 char name[SIZE_DATA]; unsigned char *p; int i; ValueStruct *val , *val2; unsigned char *buff; char method[SIZE_LONGNAME+1]; FILE *fp; RecordDir = "."; RecParserInit(); val = BuildMcpArea(10); /* set */ printf("***** Value setting *****\n"); SetValueString(GetItemLongName(val,"func"),"aaa",SRC_CODE); SetValueString(GetItemLongName(val,"rc"),"0",SRC_CODE); SetValueString(GetItemLongName(val,"dc.window"),"1 Ë",SRC_CODE); SetValueString(GetItemLongName(val,"dc.widget"),"widget",SRC_CODE); SetValueString(GetItemLongName(val,"dc.event"),"1002 ",SRC_CODE); SetValueString(GetItemLongName(val,"dc.fromwin"),"fromwin",SRC_CODE); SetValueString(GetItemLongName(val,"dc.status"),"status",SRC_CODE); SetValueString(GetItemLongName(val,"dc.puttype"),"puttype",SRC_CODE); SetValueString(GetItemLongName(val,"dc.term"),"term",SRC_CODE); SetValueString(GetItemLongName(val,"dc.user"),"user",SRC_CODE); for ( i = 0 ; i < N_PATH ; i ++ ) { sprintf(name,"db.path[%d].blocks",i); SetValueInteger(GetItemLongName(val,name),i); sprintf(name,"db.path[%d].rname",i); SetValueInteger(GetItemLongName(val,name),i); sprintf(name,"db.path[%d].pname",i); SetValueInteger(GetItemLongName(val,name),i); sprintf(name,"db.path[%d].name",i); SetValueString(GetItemLongName(val,name),name,SRC_CODE); } SetValueString(GetItemLongName(val,"private.count"),"1",SRC_CODE); for ( i = 0 ; i < 100 ; i ++ ) { sprintf(name,"private.swindow[%d]",i); SetValueString(GetItemLongName(val,name),name,SRC_CODE); } for ( i = 0 ; i < ValueArraySize(GetItemLongName(val,"private.state")) ; i ++ ) { sprintf(name,"private.state[%d]",i); SetValueString(GetItemLongName(val,name),name,SRC_CODE); } for ( i = 0 ; i < ValueArraySize(GetItemLongName(val,"private.index")) ; i ++ ) { sprintf(name,"private.index[%d]",i); SetValueString(GetItemLongName(val,name),name,SRC_CODE); } SetValueString(GetItemLongName(val,"private.pstatus"),"1",SRC_CODE); SetValueString(GetItemLongName(val,"private.pputtype"),"2",SRC_CODE); SetValueString(GetItemLongName(val,"private.prc"),"3",SRC_CODE); buff = xmalloc(SIZE_BUFF); memset(buff,0,SIZE_BUFF); for ( p = buff, i = 0 ; i < 256 ; i ++ , p ++) { *p = (unsigned char)i; } SetValueBinary(GetItemLongName(val,"bin"),buff,256); printf("***** SOAP ****\n"); memset(buff,0,SIZE_BUFF); SOAP_PackValue(buff,val,"Put","mcp","http://oreore",TRUE,FALSE); printf("%s\n",buff); fp = fopen("test.SOAP","w"); fprintf(fp,"%s\n",buff); fclose(fp); val2 = DuplicateValue(val,FALSE); SOAP_UnPackValue(val2,(char *)buff,method); printf("method = [%s]\n",method); DumpByXML(val2,"mcparea"); SOAP_PackValue(buff,val,"Put","mcp","http://oreore",TRUE,FALSE); val2 = SOAP_LoadValue((char *)buff,method); printf("method = [%s]\n",method); DumpByXML(val2,"mcparea"); //DumpValueStruct(val2); return (0); }
extern size_t OpenCOBOL_UnPackValue(CONVOPT *opt, unsigned char *p, ValueStruct *value) { int32_t i; char buff[SIZE_NUMBUF + 1]; unsigned char *q; ValueStruct *child; q = p; if (value != NULL) { ValueIsNonNil(value); switch (ValueType(value)) { case GL_TYPE_INT: i = *(int32_t*)p; IntegerCobol2C(opt, &i); SetValueInteger(value, (int64_t)i); p += sizeof(int32_t); break; case GL_TYPE_FLOAT: ValueFloat(value) = *(double *)p; p += sizeof(double); break; case GL_TYPE_BOOL: SetValueBool(value,(*(char *)p == 'T') ? TRUE : FALSE); p++; break; case GL_TYPE_OBJECT: StringCobol2C(p, SIZE_UUID); memcpy(ValueBody(value), p, SIZE_UUID); p += SIZE_UUID; break; case GL_TYPE_BYTE: memcpy(ValueByte(value), p, ValueByteLength(value)); p += ValueByteLength(value); break; case GL_TYPE_BINARY: SetValueBinary(value, p, opt->textsize); p += opt->textsize; break; case GL_TYPE_TEXT: case GL_TYPE_SYMBOL: StringCobol2C(p, opt->textsize); SetValueStringWithLength(value, p, opt->textsize, ConvCodeset(opt)); p += opt->textsize; break; case GL_TYPE_CHAR: case GL_TYPE_VARCHAR: case GL_TYPE_DBCODE: StringCobol2C(p, ValueStringLength(value)); SetValueStringWithLength(value, p, ValueStringLength(value), ConvCodeset(opt)); p += ValueStringLength(value); break; case GL_TYPE_NUMBER: memcpy(buff, p, ValueFixedLength(value)); FixedCobol2C(buff, ValueFixedLength(value)); strcpy(ValueFixedBody(value), buff); p += ValueFixedLength(value); break; case GL_TYPE_TIMESTAMP: ValueDateTimeYear(value) = StrToInt(p, 4); p += 4; ValueDateTimeMon(value) = StrToInt(p, 2) - 1; p += 2; ValueDateTimeMDay(value) = StrToInt(p, 2); p += 2; ValueDateTimeHour(value) = StrToInt(p, 2); p += 2; ValueDateTimeMin(value) = StrToInt(p, 2); p += 2; ValueDateTimeSec(value) = StrToInt(p, 2); p += 2; mktime(ValueDateTime(value)); break; case GL_TYPE_TIME: ValueDateTimeYear(value) = 0; ValueDateTimeMon(value) = 0; ValueDateTimeMDay(value) = 0; ValueDateTimeHour(value) = StrToInt(p, 2); p += 2; ValueDateTimeMin(value) = StrToInt(p, 2); p += 2; ValueDateTimeSec(value) = StrToInt(p, 2); p += 2; break; case GL_TYPE_DATE: ValueDateTimeYear(value) = StrToInt(p, 4); p += 4; ValueDateTimeMon(value) = StrToInt(p, 2) - 1; p += 2; ValueDateTimeMDay(value) = StrToInt(p, 2); p += 2; ValueDateTimeHour(value) = 0; ValueDateTimeMin(value) = 0; ValueDateTimeSec(value) = 0; mktime(ValueDateTime(value)); break; case GL_TYPE_ARRAY: for (i = 0; i < ValueArraySize(value); i++) { child = ValueArrayItem(value, i); if (child != NULL) { p += OpenCOBOL_UnPackValue(opt, p, child); ValueParent(child) = value; } } break; case GL_TYPE_ROOT_RECORD: case GL_TYPE_RECORD: for (i = 0; i < ValueRecordSize(value); i++) { child = ValueRecordItem(value, i); if (child != NULL) { p += OpenCOBOL_UnPackValue(opt, p, child); ValueParent(child) = value; } } break; default: ValueIsNil(value); break; } } return (p - q); }