void Array::unserialize(VariableUnserializer *uns) { int64 size = uns->readInt(); char sep = uns->readChar(); if (sep != ':') { throw Exception("Expected ':' but got '%c'", sep); } sep = uns->readChar(); if (sep != '{') { throw Exception("Expected '{' but got '%c'", sep); } if (size == 0) { operator=(Create()); } else { // Pre-allocate an ArrayData of the given size, to avoid escalation in // the middle, which breaks references. operator=(ArrayInit(size).create()); bool isAPC = (uns->getType() == VariableUnserializer::APCSerialize); for (int64 i = 0; i < size; i++) { Variant key(uns->unserializeKey()); if (!key.isString() && !key.isInteger()) { throw Exception("Invalid key"); } Variant &value = isAPC ? addLval(key, true) : lvalAt(key, AccessFlags::Key); value.unserialize(uns); } } sep = uns->readChar(); if (sep != '}') { throw Exception("Expected '}' but got '%c'", sep); } }
static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); if (getrusage(who == 1 ? RUSAGE_CHILDREN : RUSAGE_SELF, &usg) == -1) { throw SystemCallFailure("getrusage"); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). create()); }
void SystemScalarArrays::initialize() { ssa_[0] = StaticArray(ArrayData::Create()); ssa_[0].setEvalScalar(); ssa_[1] = StaticArray(ArrayInit(9).add(NAMSTR(s_sys_ss2058ee93, "bool"), 1L, true).add(NAMSTR(s_sys_ss7352a1bc, "boolean"), 1L, true).add(NAMSTR(s_sys_ss0d4e9a89, "int"), 1L, true).add(NAMSTR(s_sys_ss508ba625, "integer"), 1L, true).add(NAMSTR(s_sys_ss4ed43ee6, "real"), 1L, true).add(NAMSTR(s_sys_ss37da49a8, "double"), 1L, true).add(NAMSTR(s_sys_ss3f37a7c7, "float"), 1L, true).add(NAMSTR(s_sys_ss3b11235d, "string"), 1L, true).add(NAMSTR(s_sys_ss28693096, "array"), 1L, true).create()); ssa_[1].setEvalScalar(); SystemScalarArrays::initializeNamed(); }
static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); if (getrusage(who == 1 ? RUSAGE_CHILDREN : RUSAGE_SELF, &usg) == -1) { raise_error("getrusage returned %d: %s", errno, folly::errnoStr(errno).c_str()); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). toArray()); }
HOT_FUNC ArrayData *ArrayData::Create() { if (enable_vector_array && RuntimeOption::UseVectorArray) { return StaticEmptyVectorArray::Get(); } return ArrayInit((ssize_t)0).create(); }
bool ModelInitWithVertex(Model* model, unsigned long vertexLength, Vector3D* vertex, Vector3D* normal, Vector2D* texcoord, unsigned short polygonLength, Polygon3D* polygon, unsigned int textureID) { model->position = Vector3DInit(0.0, 0.0, 0.0); model->scale = Vector3DInit(1.0, 1.0, 1.0); model->rotate = Vector3DInit(0.0, 0.0, 0.0); model->globalPosition = Vector3DInit(0.0, 0.0, 0.0); model->globalRadius = 0.0; model->mixColorLength = 1; model->mixColor = malloc(sizeof(ColorRGBA)); *model->mixColor = ColorRGBAInit(0xFF, 0xFF, 0xFF, 0xFF); ModelSetVertex(model, vertex, vertexLength); model->texcoord = texcoord; model->normal = normal; model->polygonLength = polygonLength * 3; model->polygon = polygon; model->textureID = textureID; model->colorMode = ModelColorModeOneColor; model->color = malloc(sizeof(ColorRGBA)); *model->color = ColorRGBAInit(0xFF, 0xFF, 0xFF, 0xFF); model->blendMode = ModelBlendModeNormal; model->isLighting = false; model->cullingMode = ModelCullingModeOn | ModelCullingModeScreen | ModelCullingModeBack; model->isVisible = true; model->touchEvent.event = NULL; model->renderEvent.event = NULL; model->touchEvent.userReference = NULL; model->renderEvent.userReference = NULL; model->matrix = malloc(sizeof(Matrix3D)); *model->matrix = Matrix3DLoadIdentity(); model->matrixGlobal = malloc(sizeof(Matrix3D)); *model->matrix = Matrix3DLoadIdentity(); model->child = ArrayInit(); model->parent = NULL; model->hitTrianglePolygonLength = 0; model->hitVertex = NULL; model->isNeedTouchVector = false; model->isAlsoHitTouchVector = false; model->touchVector = NULL; model->isNeedTouchVectorGlobal = false; model->isAlsoHitTouchVectorGlobal = false; model->touchVectorGlobal = NULL; model->mask = NULL; model->isMask = false; model->hasMask = false; model->maskDepth = 0; model->isDepthTest = false; model->isTriangleFanMode = false; return true; }
bool TestExtOpenssl::test_openssl_csr_sign() { Array dn(ArrayInit(7, false). set(0, "countryName", "XX"). set(1, "stateOrProvinceName", "State"). set(2, "localityName", "SomewhereCity"). set(3, "organizationName", "MySelf"). set(4, "organizationalUnitName", "Whatever"). set(5, "commonName", "mySelf"). set(6, "emailAddress", "*****@*****.**"). create()); String privkeypass = "******"; int numberofdays = 365; Variant privkey = f_openssl_pkey_new(); VERIFY(!privkey.isNull()); Variant csr = f_openssl_csr_new(dn, privkey); VERIFY(!csr.isNull()); Variant scert = f_openssl_csr_sign(csr, null, privkey, numberofdays); Variant publickey, privatekey, csrStr; f_openssl_x509_export(scert, ref(publickey)); f_openssl_pkey_export(privkey, ref(privatekey), privkeypass); f_openssl_csr_export(csr, ref(csrStr)); //f_var_dump(privatekey); f_var_dump(publickey); f_var_dump(csrStr); VERIFY(privatekey.toString().size() > 500); VERIFY(publickey.toString().size() > 800); VERIFY(csrStr.toString().size() > 500); return Count(true); }
// Form a trace of the async stack starting with the currently running // generator, if any. For now we just toss in the function name and // id, as well as the pseudo-frames for context breaks at explicit // joins. Later we'll add more, like file and line, hopefully function // args, wait handle status, etc. Array createAsyncStacktrace() { Array trace; auto currentWaitHandle = f_asio_get_running(); if (currentWaitHandle.isNull()) return trace; Array depStack = objToWaitableWaitHandle(currentWaitHandle)->t_getdependencystack(); for (ArrayIter iter(depStack); iter; ++iter) { if (iter.secondRef().isNull()) { trace.append(ArrayInit(0).toVariant()); } else { auto wh = objToWaitableWaitHandle(iter.secondRef().toObject()); auto parents = wh->t_getparents(); Array ancestors; for (ArrayIter piter(parents); piter; ++piter) { // Note: the parent list contains no nulls. auto parent = objToWaitableWaitHandle(piter.secondRef().toObject()); ancestors.append(parent->t_getname()); } Array frameData; frameData.set(s_function, wh->t_getname(), true); frameData.set(s_id, wh->t_getid(), true); frameData.set(s_ancestors, ancestors, true); // Continuation wait handles may have a source location to add. auto contWh = dynamic_cast<c_AsyncFunctionWaitHandle*>(wh); if (contWh != nullptr) addContinuationLocation(frameData, *contWh); trace.append(frameData); } } return trace; }
void SharedVariant::loadElems(ArrayData *&elems, const SharedMap &sharedMap, bool keepRef /* = false */) { ASSERT(is(KindOfArray)); uint count = arrSize(); bool isVector = getIsVector(); ArrayInit ai = isVector ? ArrayInit(count, ArrayInit::vectorInit) : ArrayInit(count, keepRef); if (isVector) { for (uint i = 0; i < count; i++) { ai.set(sharedMap.getValueRef(i)); } } else { for (uint i = 0; i < count; i++) { ai.add(m_data.map->getKeyIndex(i)->toLocal(), sharedMap.getValueRef(i), true); } } elems = ai.create(); if (elems->isStatic()) elems = elems->copy(); }
ArrayData* SharedVariant::loadElems(const SharedMap &sharedMap, bool mapInit /* = false */) { assert(is(KindOfArray)); uint count = arrSize(); bool isVector = getIsVector(); ArrayInit ai = mapInit ? ArrayInit(count, ArrayInit::mapInit) : isVector ? ArrayInit(count, ArrayInit::vectorInit) : ArrayInit(count); if (isVector) { for (uint i = 0; i < count; i++) { ai.set(sharedMap.getValueRef(i)); } } else { for (uint i = 0; i < count; i++) { ai.add(m_data.map->getKeyIndex(i)->toLocal(), sharedMap.getValueRef(i), true); } } ArrayData* elems = ai.create(); if (elems->isStatic()) elems = elems->copy(); return elems; }
void Rebuild_Main() { ArrayInit(&RebuildArray, sizeof(char), 0); ArrayInit(&LabelDone, sizeof(char), 0); lastfileno = -1; Rebuild_Mode = 1; RebuildEmit("//****************************************\n"); RebuildEmit("// Generated code\n"); RebuildEmit("//****************************************\n\n"); RebuildEmit(".lfile 'rebuild.s'\n"); RebuildEmit(".code\n"); Rebuild_Code(); RebuildEmit(".data\n"); Rebuild_Memory(); ArrayWrite(&RebuildArray, "rebuild.s"); }
ArrayData* SharedMap::loadElems(bool mapInit /* = false */) const { uint count = size(); bool isVec = isVector(); auto ai = mapInit ? ArrayInit(count, ArrayInit::mapInit) : isVec ? ArrayInit(count, ArrayInit::vectorInit) : ArrayInit(count); if (isVec) { for (uint i = 0; i < count; i++) { ai.set(getValueRef(i)); } } else { for (uint i = 0; i < count; i++) { ai.add(m_map->getKey(i), getValueRef(i), true); } } ArrayData* elems = ai.create(); if (elems->isStatic()) elems = elems->copy(); return elems; }
int cfac_init_coulomb(cfac_t *cfac) { SetHydrogenicNL(cfac, -1, -1, -1, -1); cfac->coulomb.dipole_array = malloc(sizeof(ARRAY)); if (!cfac->coulomb.dipole_array) { return -1; } /* FIXME: correct freedata function */ ArrayInit(cfac->coulomb.dipole_array, sizeof(gsl_coulomb_me *), DIPOLE_BLOCK, NULL, InitPointerData); return 0; }
void TestFunction() { char puzzle_board_data[] = { 't', 'h', 'i', 's', 'w', 'a', 't', 's', 'o', 'a', 'h', 'g', 'f', 'g', 'd', 't' }; char* dictionary[] = { "this", "two", "fat", "that" }; Array words, ret; int i; size_t index, count; PuzzleBoard puzzle_board = { puzzle_board_data, 4, 4 }; ArrayInit(&words, 4, sizeof(char*)); for (i = 0; i < 4; ++i) { ArrayPush(&words, &dictionary[i]); } // solution1 ret = solution1_Function(&puzzle_board, &words); count = ArrayUsed(&ret); MLOG("solution 1:\n"); for (index = 0; index < count; ++index) { RetWord* word = (RetWord*)ArrayGet(&ret, index); MLOG("%s (%d, %d) - (%d, %d)\n", word->word, word->start_x, word->start_y, word->end_x, word->end_y); } ArrayDestroy(&ret); // solution2 ret = solution2_Function(&puzzle_board, &words); count = ArrayUsed(&ret); MLOG("solution 2:\n"); for (index = 0; index < count; ++index) { RetWord* word = (RetWord*)ArrayGet(&ret, index); MLOG("%s (%d, %d) - (%d, %d)\n", word->word, word->start_x, word->start_y, word->end_x, word->end_y); } ArrayDestroy(&ret); ArrayDestroy(&words); }
static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); int actual_who; switch (who) { case 1: actual_who = RUSAGE_CHILDREN; break; case 2: #ifdef RUSAGE_THREAD actual_who = RUSAGE_THREAD; #else throw_not_supported(__func__, "RUSAGE_THREAD is not defined on this sytem"); #endif break; default: actual_who = RUSAGE_SELF; break; } if (getrusage(actual_who, &usg) == -1) { raise_error("getrusage returned %d: %s", errno, folly::errnoStr(errno).c_str()); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). toArray()); }
int NMultiInit(MULTI *ma, int esize, int ndim, int *block, ARRAY_ELEM_FREE FreeElem, ARRAY_DATA_INIT InitData) { int i, n; ma->maxelem = -1; ma->numelem = 0; ma->ndim = ndim; ma->isize = sizeof(int)*ndim; ma->esize = esize; ma->block = (unsigned short *) malloc(sizeof(unsigned short)*ndim); n = HashSize(ma->ndim); ma->array = (ARRAY *) malloc(sizeof(ARRAY)*n); for (i = 0; i < n; i++) { ArrayInit(&(ma->array[i]), sizeof(MDATA), 10, FreeElem, InitData); } return 0; }
bool_t StreamGenExts(anynode* AnyNode,array* Exts, fourcc_t ClassFilter, const tchar_t* TypeFilter) { fourcc_t* i; array List; ArrayInit(Exts); if (TypeFilter && !TypeFilter[0]) TypeFilter = NULL; NodeEnumClass(AnyNode,&List,ClassFilter); for (i=ARRAYBEGIN(List,fourcc_t);i!=ARRAYEND(List,fourcc_t);++i) { const tchar_t* s = NodeStr2(AnyNode,*i,NODE_EXTS); while (s && s[0]) { size_t n; for (n=0;s[n] && s[n]!=';' && s[n]!=':';++n) {} if (!TypeFilter || (s[n]==':' && tcschr(TypeFilter,s[n+1])!=NULL)) { while (s[n] && s[n]!=';') ++n; if (n) { if (!ARRAYEMPTY(*Exts)) ArrayAppend(Exts,T(";"),sizeof(tchar_t),64); ArrayAppend(Exts,s,n*sizeof(tchar_t),64); } } s = tcschr(s,';'); if (s) ++s; } } ArrayClear(&List); if (!ARRAYEMPTY(*Exts) && !ArrayAppend(Exts,T("\0"),sizeof(tchar_t),64)) ArrayClear(Exts); return !ARRAYEMPTY(*Exts); }
bool ModelManagerStart(ModelManager* manager, unsigned int width, unsigned int height, ColorRGBA clearColor) { if(!ModelManagerSetScreenSize(manager, width, height)) return false; if(!ModelManagerSetClearColor(manager, clearColor)) return false; glEnableClientState(GL_VERTEX_ARRAY); glShadeModel(GL_SMOOTH); glEnable(GL_BLEND); glEnable(GL_COLOR_MATERIAL); glDepthFunc(GL_LESS); glDisable(GL_DEPTH_TEST); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); manager->touchArguments = ArrayInit(); int maxSize; int maxUnit; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxSize); glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxUnit); return true; }
bool TestExtMailparse::test_mailparse_msg_get_part() { String msg = "Received: from mail pickup service by hotmail.com with Microsoft\n" "SMTPSVC;\n" "Sat, 18 Feb 2006 22:58:14 -0800\n" "Received: from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;\n" "Sun, 19 Feb 2006 06:58:13 +0000\n" "\n" "test"; Variant mail = f_mailparse_msg_create(); f_mailparse_msg_parse(mail, msg); Array arr = f_mailparse_msg_get_structure(mail); for (ArrayIter iter(arr); iter; ++iter) { Variant section = f_mailparse_msg_get_part(mail, iter.second()); Variant info = f_mailparse_msg_get_part_data(section); Array received = CREATE_VECTOR2("from mail pickup service by hotmail.com with Microsoft", "from 66.178.40.49 by BAY116-DAV8.phx.gbl with DAV;"); VS(info, Array(ArrayInit(11). set(String("headers"), CREATE_MAP1("received", received)). set(String("starting-pos"), 0). set(String("starting-pos-body"), 200). set(String("ending-pos"), 200). set(String("ending-pos-body"), 200). set(String("line-count"), 6). set(String("body-line-count"), 0). set(String("charset"), "us-ascii"). set(String("transfer-encoding"), "8bit"). set(String("content-type"), "text/plain"). set(String("content-base"), "/"). create())); } return Count(true); }
bool TestCppBase::TestVariant() { // operators { Variant v(15); v += 20; VERIFY(v.isNumeric()); VERIFY(v.is(KindOfInt64)); VERIFY(v == Variant(35)); } // conversions { Variant v("123"); VERIFY(v.toInt32() == 123); } // offset { Variant v = "test"; VS(v.rvalAt(0), "t"); } { Variant v; v.lvalAt(0) = String("v0"); v.lvalAt(1) = String("v1"); VERIFY(v[0] == "v0"); VERIFY(v[1] == "v1"); } { Variant v; v.lvalAt() = String("test"); VS(v, CREATE_VECTOR1("test")); } { Variant v; v.lvalAt(1) = String("test"); VS(v[1], "test"); VS(v[1.5], "test"); VS(v[Variant(1.5)], "test"); VS(v[s_1], "test"); VS(v[Variant("1")], "test"); } { Variant v; v.lvalAt(Variant(1.5)) = String("test"); VS(v[1], "test"); VS(v[1.5], "test"); VS(v[Variant(1.5)], "test"); VS(v[s_1], "test"); VS(v[Variant("1")], "test"); } { Variant v; v.lvalAt(s_1) = String("test"); VS(v[1], "test"); VS(v[1.5], "test"); VS(v[Variant(1.5)], "test"); VS(v[s_1], "test"); VS(v[Variant("1")], "test"); } { Variant v; v.lvalAt(Variant("1")) = String("test"); VS(v[1], "test"); VS(v[1.5], "test"); VS(v[Variant(1.5)], "test"); VS(v[s_1], "test"); VS(v[Variant("1")], "test"); } // membership { Variant v; v.lvalAt(s_n0) = String("v0"); v.lvalAt(s_n1) = String("v1"); v.remove(s_n1); VS(v, CREATE_MAP1(s_n0, "v0")); v.append("v2"); VS(v, CREATE_MAP2(s_n0, "v0", 0, "v2")); } { Variant v; v.lvalAt(s_n0) = String("v0"); v.lvalAt(1) = String("v1"); v.remove(Variant(1.5)); VS(v, CREATE_MAP1("n0", "v0")); } { Variant v; v.lvalAt(s_n0) = String("v0"); v.lvalAt(1) = String("v1"); v.remove(Variant("1")); VS(v, CREATE_MAP1("n0", "v0")); } { Variant v; v.lvalAt(s_n0) = String("v0"); v.lvalAt(1) = String("v1"); v.remove(String("1")); VS(v, CREATE_MAP1("n0", "v0")); } { Variant v; v.lvalAt(s_n0) = String("v0"); v.lvalAt(empty_string) = String("v1"); v.remove(Variant()); VS(v, CREATE_MAP1("n0", "v0")); } // references { Variant v1("original"); Variant v2 = v1; v2 = String("changed"); VERIFY(v1 == "original"); } { Variant v1("original"); Variant v2 = strongBind(v1); v2 = String("changed"); VERIFY(v1 == "changed"); } { Variant v1 = 10; Variant v2 = Array(ArrayInit(1).setRef(v1).create()); v1 = 20; VS(v2[0], 20); } { Variant v1 = 10; Variant v2; v2.lvalAt() = ref(v1); v1 = 20; VS(v2[0], 20); } { Variant v1 = 10; Variant v2 = CREATE_VECTOR1(5); v2.lvalAt() = ref(v1); v1 = 20; VS(v2[1], 20); } { Variant v1 = 10; Variant v2 = strongBind(v1); v2++; VS(v2, 11); VS(v1, 11); } { Variant arr = CREATE_VECTOR2(1, 2); Variant v; for (MutableArrayIter iter = arr.begin(nullptr, v); iter.advance();) { v++; } VS(arr, CREATE_VECTOR2(2, 3)); } // array escalation { Variant arr; lval(arr.lvalAt(0)).lvalAt(0) = 1.2; VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Variant arr; lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP1(s_name, CREATE_VECTOR1(1.2))); } { Variant arr = Array::Create(); lval(arr.lvalAt(0)).lvalAt(0) = 1.2; VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Variant arr = Array::Create(); lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP1(s_name, CREATE_VECTOR1(1.2))); } { Variant arr = Array::Create("test"); arr.lvalAt(0) = CREATE_VECTOR1(1.2); VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Variant arr = Array::Create("test"); lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP2(0, "test", s_name, CREATE_VECTOR1(1.2))); } return Count(true); }
bool TestCppBase::TestArray() { // Array::Create(), Array constructors and informational { Array arr; VERIFY(arr.empty()); VERIFY(arr.size() == 0); VERIFY(arr.length() == 0); VERIFY(arr.isNull()); arr = Array::Create(); VERIFY(arr.empty()); VERIFY(arr.size() == 0); VERIFY(arr.length() == 0); VERIFY(!arr.isNull()); arr = Array::Create(0); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VERIFY((int)arr[0] == 0); VS(arr, Array(ArrayInit(1).set(0).create())); arr = Array::Create("test"); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VERIFY(arr[0] == "test"); VS(arr, Array(ArrayInit(1).set("test").create())); Array arrCopy = arr; arr = Array::Create(arr); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VERIFY(arr[0].toArray().size() == 1); VS(arr[0], arrCopy); VS(arr, Array(ArrayInit(1).set(arrCopy).create())); arr = Array::Create("name", 1); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VERIFY((int)arr[s_name] == 1); VS(arr, Array(ArrayInit(1).set(s_name, 1).create())); arr = Array::Create(s_name, "test"); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VERIFY(arr[s_name] == "test"); VS(arr, Array(ArrayInit(1).set(s_name, "test").create())); arrCopy = arr; arr = Array::Create(s_name, arr); VERIFY(!arr.empty()); VERIFY(arr.size() == 1); VERIFY(arr.length() == 1); VERIFY(!arr.isNull()); VS(arr[s_name], arrCopy); VERIFY(arr[s_name].toArray().size() == 1); VS(arr, Array(ArrayInit(1).set(s_name, arrCopy).create())); } // iteration { Array arr = CREATE_MAP2("n1", "v1", "n2", "v2"); int i = 0; for (ArrayIter iter = arr.begin(); iter; ++iter, ++i) { if (i == 0) { VERIFY(iter.first() == "n1"); VERIFY(iter.second() == "v1"); } else { VERIFY(iter.first() == "n2"); VERIFY(iter.second() == "v2"); } } VERIFY(i == 2); } /* TODO: fix this { Variant arr = CREATE_MAP2("n1", "v1", "n2", "v2"); arr.escalate(); for (ArrayIterPtr iter = arr.begin(arr, true); !iter->end(); iter->next()){ unset(arr.lvalAt(iter->first())); } VS(arr, Array::Create()); } */ // conversions { Array arr0; VERIFY(arr0.toBoolean() == false); VERIFY(arr0.toByte() == 0); VERIFY(arr0.toInt16() == 0); VERIFY(arr0.toInt32() == 0); VERIFY(arr0.toInt64() == 0); VERIFY(arr0.toDouble() == 0.0); VERIFY(arr0.toString() == ""); Array arr1 = Array::Create("test"); VERIFY(arr1.toBoolean() == true); VERIFY(arr1.toByte() == 1); VERIFY(arr1.toInt16() == 1); VERIFY(arr1.toInt32() == 1); VERIFY(arr1.toInt64() == 1); VERIFY(arr1.toDouble() == 1.0); VERIFY(arr1.toString() == "Array"); } // offset { Array arr; arr.set(0, "v1"); arr.set(1, "v2"); VS(arr, CREATE_VECTOR2("v1", "v2")); } { Array arr; arr.set(s_n1, "v1"); arr.set(s_n2, "v2"); VS(arr, CREATE_MAP2("n1", "v1", "n2", "v2")); } { Array arr; arr.lvalAt(0) = String("v1"); arr.lvalAt(1) = String("v2"); VS(arr, CREATE_VECTOR2("v1", "v2")); } { Array arr; arr.lvalAt(s_n1) = String("v1"); arr.lvalAt(s_n2) = String("v2"); VS(arr, CREATE_MAP2("n1", "v1", "n2", "v2")); } { Array arr; Variant name = "name"; arr.lvalAt(name) = String("value"); VS(arr, CREATE_MAP1("name", "value")); } { Array arr; arr.lvalAt(s_A) = 10; arr.lvalAt(s_A)++; VS(arr[s_A], 11); } { Array arr; arr.lvalAt(1) = 10; VS(arr[1], 10); VS(arr[1.5], 10); VS(arr[Variant(1.5)], 10); VS(arr[s_1], 10); VS(arr[Variant("1")], 10); } { Array arr; arr.lvalAt(Variant(1.5)) = 10; VS(arr[1], 10); VS(arr[1.5], 10); VS(arr[Variant(1.5)], 10); VS(arr[s_1], 10); VS(arr[Variant("1")], 10); } { Array arr; arr.lvalAt(s_1) = 10; VS(arr[1], 10); VS(arr[1.5], 10); VS(arr[Variant(1.5)], 10); VS(arr[s_1], 10); VS(arr[Variant("1")], 10); } { Array arr; arr.lvalAt(Variant("1")) = 10; VS(arr[1], 10); VS(arr[1.5], 10); VS(arr[Variant(1.5)], 10); VS(arr[s_1], 10); VS(arr[Variant("1")], 10); } // membership { Array arr; arr.lvalAt(0) = String("v1"); arr.lvalAt(1) = String("v2"); VERIFY(arr.exists(0)); arr.remove(0); VERIFY(!arr.exists(0)); VS(arr, Array::Create(1, "v2")); arr.append("v3"); VS(arr, CREATE_MAP2(1, "v2", 2, "v3")); } { static const StaticString s_0("0"); Array arr; arr.lvalAt(0) = String("v1"); VERIFY(arr.exists(0)); arr.remove(String(s_0)); VERIFY(!arr.exists(0)); } { Array arr; arr.lvalAt(0) = String("v1"); VERIFY(arr.exists(0)); arr.remove(Variant("0")); VERIFY(!arr.exists(0)); } { Array arr; arr.lvalAt(0) = String("v1"); VERIFY(arr.exists(0)); arr.remove(Variant(Variant("0"))); VERIFY(!arr.exists(0)); } { Array arr; arr.lvalAt(0) = String("v1"); VERIFY(arr.exists(0)); arr.remove(Variant(Variant(0.5))); VERIFY(!arr.exists(0)); } { Array arr; arr.lvalAt(Variant()) = 123; VERIFY(arr.exists(empty_string)); arr.remove(Variant()); VERIFY(!arr.exists(empty_string)); } { Array arr; arr.lvalAt(s_n1) = String("v1"); arr.lvalAt(s_n2) = String("v2"); VERIFY(arr.exists(s_n1)); arr.remove(s_n1); VERIFY(!arr.exists(s_n1)); VS(arr, Array::Create(s_n2, "v2")); arr.append("v3"); VS(arr, CREATE_MAP2("n2", "v2", 0, "v3")); } { Array arr; arr.lvalAt() = String("test"); VS(arr, CREATE_VECTOR1("test")); } { Array arr; arr.lvalAt(s_name) = String("value"); VERIFY(arr.exists(s_name)); } { Array arr; arr.lvalAt(1) = String("value"); VERIFY(arr.exists(1)); VERIFY(arr.exists(1.5)); VERIFY(arr.exists(s_1)); VERIFY(arr.exists(Variant("1"))); VERIFY(arr.exists(Variant(1))); VERIFY(arr.exists(Variant(1.5))); } { Array arr; arr.lvalAt(s_1) = String("value"); VERIFY(arr.exists(1)); VERIFY(arr.exists(1.5)); VERIFY(arr.exists(s_1)); VERIFY(arr.exists(Variant("1"))); VERIFY(arr.exists(Variant(1))); VERIFY(arr.exists(Variant(1.5))); } { Array arr; arr.lvalAt(1.5) = String("value"); VERIFY(arr.exists(1)); VERIFY(arr.exists(1.5)); VERIFY(arr.exists(s_1)); VERIFY(arr.exists(Variant("1"))); VERIFY(arr.exists(Variant(1))); VERIFY(arr.exists(Variant(1.5))); } { Array arr; arr.lvalAt(Variant(1.5)) = String("value"); VERIFY(arr.exists(1)); VERIFY(arr.exists(1.5)); VERIFY(arr.exists(s_1)); VERIFY(arr.exists(Variant("1"))); VERIFY(arr.exists(Variant(1))); VERIFY(arr.exists(Variant(1.5))); } { Array arr; arr.lvalAt(Variant("1")) = String("value"); VERIFY(arr.exists(1)); VERIFY(arr.exists(1.5)); VERIFY(arr.exists(s_1)); VERIFY(arr.exists(Variant("1"))); VERIFY(arr.exists(Variant(1))); VERIFY(arr.exists(Variant(1.5))); } // merge { Array arr = Array::Create(0) + Array::Create(1); VS(arr, Array::Create(0)); arr += CREATE_VECTOR2(0, 1); VS(arr, CREATE_VECTOR2(0, 1)); arr = Array::Create(0).merge(Array::Create(1)); VS(arr, CREATE_VECTOR2(0, 1)); arr = arr.merge(CREATE_VECTOR2(0, 1)); VS(arr, CREATE_VECTOR4(0, 1, 0, 1)); arr = Array::Create("s0").merge(Array::Create("s1")); VS(arr, CREATE_VECTOR2("s0", "s1")); arr = Array::Create("n0", "s0") + Array::Create("n1", "s1"); VS(arr, CREATE_MAP2("n0", "s0", "n1", "s1")); arr += CREATE_MAP2("n0", "s0", "n1", "s1"); VS(arr, CREATE_MAP2("n0", "s0", "n1", "s1")); arr = Array::Create("n0", "s0").merge(Array::Create("n1", "s1")); VS(arr, CREATE_MAP2("n0", "s0", "n1", "s1")); Array arrX = CREATE_MAP2("n0", "s2", "n1", "s3"); arr = arr.merge(arrX); VS(arr, CREATE_MAP2("n0", "s2", "n1", "s3")); } // slice { Array arr = CREATE_VECTOR2("test1", "test2"); Array sub = arr.slice(1, 1, true); VS(sub, CREATE_MAP1(1, "test2")); } { Array arr = CREATE_VECTOR2("test1", "test2"); Array sub = arr.slice(1, 1, false); VS(sub, CREATE_VECTOR1("test2")); } { Array arr = CREATE_MAP2("n1", "test1", "n2", "test2"); Array sub = arr.slice(1, 1, true); VS(sub, CREATE_MAP1("n2", "test2")); } { Array arr = CREATE_MAP2("n1", "test1", "n2", "test2"); Array sub = arr.slice(1, 1, false); VS(sub, CREATE_MAP1("n2", "test2")); } // escalation { Array arr; lval(arr.lvalAt(0)).lvalAt(0) = 1.2; VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Array arr; lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP1(s_name, CREATE_VECTOR1(1.2))); } { Array arr = Array::Create(); lval(arr.lvalAt(0)).lvalAt(0) = 1.2; VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Array arr = Array::Create(); lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP1(s_name, CREATE_VECTOR1(1.2))); } { Array arr = Array::Create("test"); arr.lvalAt(0) = CREATE_VECTOR1(1.2); VS(arr, CREATE_VECTOR1(CREATE_VECTOR1(1.2))); } { Array arr = Array::Create("test"); lval(arr.lvalAt(s_name)).lvalAt(0) = 1.2; VS(arr, CREATE_MAP2(0, "test", s_name, CREATE_VECTOR1(1.2))); } { Array arr = Array::Create(); arr.append("apple"); arr.set(2, "pear"); VS(arr[2], "pear"); } { Array arr = CREATE_MAP2(0, "a", 1, "b"); VERIFY(arr->isVectorData()); } { Array arr = CREATE_MAP2(1, "a", 0, "b"); VERIFY(!arr->isVectorData()); } { Array arr = CREATE_MAP2(1, "a", 2, "b"); VERIFY(!arr->isVectorData()); } { Array arr = CREATE_MAP1(1, "a"); arr.set(0, "b"); VERIFY(!arr->isVectorData()); } return Count(true); }
int SaveIonization(cfac_t *cfac, int nb, int *b, int nf, int *f, char *fn) { int i, j, k; int ie, ip; FILE *file; LEVEL *lev1, *lev2; CI_RECORD r; CI_HEADER ci_hdr; F_HEADER fhdr; double delta, emin, emax, e, emax0; double qk[MAXNE], qku[MAXNUSR]; int nq, nqk; ARRAY subte; int isub, n_tegrid0, n_egrid0, n_usr0; int te_set, e_set, usr_set; double c, e0, e1; emin = 1E10; emax = 1E-10; k = 0; for (i = 0; i < nb; i++) { lev1 = GetLevel(cfac, b[i]); for (j = 0; j < nf; j++) { lev2 = GetLevel(cfac, f[j]); e = lev2->energy - lev1->energy; if (e > 0) k++; if (e < emin && e > 0) emin = e; if (e > emax) emax = e; } } if (k == 0) { return 0; } if (tegrid[0] < 0) { te_set = 0; } else { te_set = 1; } if (egrid[0] < 0) { e_set = 0; } else { e_set = 1; } if (usr_egrid[0] < 0) { usr_set = 0; } else { usr_set = 1; } n_tegrid0 = n_tegrid; n_egrid0 = n_egrid; n_usr0 = n_usr; if (egrid_limits_type == 0) { emax0 = 0.5*(emin + emax)*egrid_max; } else { emax0 = egrid_max; } ArrayInit(&subte, sizeof(double), 128, NULL, NULL); ArrayAppend(&subte, &emin); c = TE_MAX_MIN; if (!e_set || !te_set) { e = c*emin; while (e < emax) { ArrayAppend(&subte, &e); e *= c; } } ArrayAppend(&subte, &emax); egrid_type = 1; pw_type = 0; if (usr_egrid_type < 0) usr_egrid_type = 1; nqk = NPARAMS; r.params = malloc(sizeof(float)*nqk); fhdr.type = DB_CI; strcpy(fhdr.symbol, cfac_get_atomic_symbol(cfac)); fhdr.atom = cfac_get_atomic_number(cfac); ci_hdr.nele = GetNumElectrons(cfac, b[0]); ci_hdr.qk_mode = qk_mode; ci_hdr.nparams = nqk; ci_hdr.pw_type = pw_type; ci_hdr.egrid_type = egrid_type; ci_hdr.usr_egrid_type = usr_egrid_type; file = OpenFile(fn, &fhdr); e0 = emin*0.999; for (isub = 1; isub < subte.dim; isub++) { e1 = *((double *) ArrayGet(&subte, isub)); if (isub == subte.dim-1) e1 = e1*1.001; emin = e1; emax = e0; k = 0; for (i = 0; i < nb; i++) { lev1 = GetLevel(cfac, b[i]); for (j = 0; j < nf; j++) { lev2 = GetLevel(cfac, f[j]); e = lev2->energy - lev1->energy; if (e < e0 || e >= e1) continue; if (e < emin) emin = e; if (e > emax) emax = e; k++; } } if (k == 0) { e0 = e1; continue; } if (qk_mode == QK_CB) { SetIEGrid(1, emin, emax); } else { if (n_tegrid0 == 0) { n_tegrid = 3; } if (!te_set) { e = 2.0*(emax-emin)/(emax+emin); if (e < EPS3) { SetIEGrid(1, emin, emax); } else if (e < 0.5) { SetIEGrid(2, emin, emax); } else { if (k == 2) n_tegrid = 2; SetIEGrid(n_tegrid, emin, emax); } } } n_egrid = n_egrid0; n_usr = n_usr0; if (!usr_set) usr_egrid[0] = -1.0; if (!e_set) egrid[0] = -1.0; e = 0.5*(emin + emax); if (egrid_limits_type == 0) { emin = egrid_min*e; emax = egrid_max*e; } else { emin = egrid_min; emax = egrid_max; } if (emax < emax0) { emax = 50.0*e; if (emax > emax0) emax = emax0; } if (n_egrid <= 0) { n_egrid = 6; } if (egrid[0] < 0.0) { SetCIEGrid(n_egrid, emin, emax, e); } usr_different = 1; if (n_usr > 0 && usr_egrid[0] < 0.0) { SetUsrCIEGrid(n_usr, emin, emax, e); usr_egrid_type = 1; usr_different = 0; } if (n_usr <= 0) { SetUsrCIEGridDetail(n_egrid, egrid); usr_egrid_type = 1; usr_different = 0; } if (qk_mode != QK_CB) { SetTransitionOptions(cfac, G_BABUSHKIN, M_NR, 4, 4); SetRRTEGrid(1, e, e); SetPEGridLimits(egrid_min, egrid_max, egrid_limits_type); SetPEGridDetail(n_egrid, egrid); PrepRREGrids(e, emax0); } for (ie = 0; ie < n_egrid; ie++) { for (i = 0; i < n_tegrid; i++) { xegrid[i][ie] = egrid[ie]/tegrid[i]; if (egrid_type == 1) xegrid[i][ie] += 1.0; log_xegrid[i][ie] = log(xegrid[i][ie]); } } yegrid0[0] = log(1E-5); delta = (log(0.5) - yegrid0[0])/(NINT-1.0); for (i = 1; i < NINT; i++) { yegrid0[i] = yegrid0[i-1] + delta; } for (i = 0; i < NINT; i++) { yegrid0[i] = exp(yegrid0[i]); } if (pw_scratch.nkl == 0) { SetCIPWGrid(0, NULL, NULL); } r.strength = malloc(sizeof(float)*n_usr); ci_hdr.n_tegrid = n_tegrid; ci_hdr.n_egrid = n_egrid; ci_hdr.n_usr = n_usr; ci_hdr.tegrid = tegrid; ci_hdr.egrid = egrid; ci_hdr.usr_egrid = usr_egrid; InitFile(file, &fhdr, &ci_hdr); for (i = 0; i < nb; i++) { lev1 = GetLevel(cfac, b[i]); for (j = 0; j < nf; j++) { lev2 = GetLevel(cfac, f[j]); e = lev2->energy - lev1->energy; if (e < e0 || e >= e1) continue; nq = IonizeStrength(cfac, qku, qk, &e, b[i], f[j]); if (nq < 0) continue; r.b = b[i]; r.f = f[j]; r.kl = nq; for (ip = 0; ip < nqk; ip++) { r.params[ip] = (float) qk[ip]; } for (ie = 0; ie < n_usr; ie++) { r.strength[ie] = (float) qku[ie]; } WriteCIRecord(file, &r); } } DeinitFile(file, &fhdr); free(r.strength); ReinitRadial(cfac, 1); FreeRecQk(); FreeRecPk(); FreeIonizationQk(); e0 = e1; } free(r.params); ReinitRecombination(1); ReinitIonization(1); ArrayFree(&subte); CloseFile(file, &fhdr); return 0; }
//Считаем энтропию текста, формируем кодовые слова для символом алфавита файла void FreqOne() { UINT8 ch = 0; UINT8 K = 0; lengthText = 0; H = 0; Lmean = 0; readFilename(); ArrayInit(ArrAlfa); while (!feof(fi)) { fscanf_s(fi, "%c", &ch); if (feof(fi)) { break; } if (strchr(rusUp, ch)) { ch = ch - 0xC0 + 0xE0; ArrAlfa[ch].p += 1.0; lengthText++; } else if (strchr(rusDown, ch)) { ArrAlfa[ch].p += 1.0; lengthText++; } else if (strchr(engUp, ch)) { ch = ch - 'A' + 'a'; ArrAlfa[ch].p += 1.0; lengthText++; } else if (strchr(engDown, ch)) { ArrAlfa[ch].p += 1.0; lengthText++; } else if (strchr("-.,:!?;", ch)) { ch = '.'; ArrAlfa[ch].p += 1.0; lengthText++; } else if (ch == ' ') { ArrAlfa[ch].p += 1.0; lengthText++; } else if (ch == 0xA8 || ch == 0xB8) { ch = 0xE5; ArrAlfa[ch].p += 1.0; lengthText++; } } fclose(fi); printf_s("The file was closed\n"); for (int i = 0; i < n_Alfa; i++) { if (ArrAlfa[i].p != (float)0) { ArrAlfa[i].p = ArrAlfa[i].p / lengthText; printf_s("P[%c] = %1.4f\n", i, ArrAlfa[i].p); H = H + ArrAlfa[i].p * log2(ArrAlfa[i].p); K++; } } Hmax = log2((float)K); if (Hmax == 0)Hmax = 1; printf_s("Всего символов в файле: %d\n", lengthText); printf("Всего символов в алфавите: %d\n", K); printf("Энтропия файла: %3.3f\n", (-1)*H); printf("Максимальная Энтропия файла: %3.3f\n", Hmax); printf("Избыточность текста составила: %3.3f\n", (float)1 + H / Hmax); Gilbert_Mur(); system("pause"); for (int i = 0; i < n_Alfa; i++) { if (ArrAlfa[i].p != (float)0) { printf_s("P[%c] = %1.4f kod = ", i, ArrAlfa[i].p); for (int j = 0; j<ArrAlfa[i].length; j++) printf("%c", ArrAlfa[i].code[j]); printf_s("\n"); } } printf("Средняя длина кодового слова: %3.3f\n", Lmean); printf("Избыточность кодирования составила: %3.3f\n", Lmean - (-1.0)*H); system("pause"); }
void RebuildCpp_Main() { if (ArgConstOpt != 0) Error(Error_System, "(RebuildCpp_Main) ArgConstOpt must be switched off"); #ifdef CPP_SHOW_LINES InitFiles(); #endif ArrayInit(&RebuildArray, sizeof(char), 0); ArrayInit(&LabelDone, sizeof(char), 0); memset(CppSyscallUsed, 0, sizeof(CppSyscallUsed)); CppForceSysCallUsed("RBYTE"); CppForceSysCallUsed("WBYTE"); Rebuild_Mode = 1; CppUsedCallReg = 0; RebuildEmit("//****************************************\n"); RebuildEmit("// Generated Cpp code\n"); RebuildEmit("//****************************************\n"); RebuildEmit("\n"); RebuildEmit("#include \"mstypeinfo.h\"\n"); RebuildEmit("\n"); #if 0 //My Testing only RebuildCpp_EmitExtensionsProto(); #endif RebuildCpp_EmitProtos(); // RebuildCpp_EmitDS(); // RebuildEmit("class MoSyncCode\n"); // RebuildEmit("{\n"); // RebuildEmit("\n"); // Out in .h file // RebuildEmit("int sp;\n"); // RebuildEmit("int __dbl_high;\n"); RebuildEmit("\n"); // RebuildCpp_EmitDS(); RebuildCpp_StartUp(); MaxEnumLabel = 0; RebuildCpp_Code(); //RebuildCpp_EmitExtensions(1); RebuildCpp_CallReg(); // RebuildEmit("}; // End of MosyncCode class\n"); // RebuildEmit("// MaxEnumLabel=%d\n", MaxEnumLabel); // RebuildCpp_FlowClass(); #ifdef CPP_SHOW_LINES FreeFiles(); #endif ArrayWrite(&RebuildArray, "rebuild.build.cpp"); }
ArrayData *ArrayData::Create() { return ArrayInit(0, false).create(); }
int main(){ ArrayInit(array); ArrayView(array); RadixSort(array); ArrayView(array); }
void TestPerformance() { // puzzle board char puzzle_board_data[] = { 't', 'h', 'i', 's', 'w', 'a', 't', 's', 'o', 'a', 'h', 'g', 'f', 'g', 'd', 't' }; PuzzleBoard puzzle_board = { puzzle_board_data, 4, 4 }; // dictionary char* buf; long num; if (!File_Read("res/wordsEn/wordsEn.txt", &buf, &num)) { MASSERT_MSG(0, "File (res/wordsEn/wordsEn.txt) not exist!\n"); MLOG("File (res/wordsEn/wordsEn.txt) not exist!\n"); return; } if (num == 0) { MLOG("dictionary is empty\n"); return; } Array dictionary; ArrayInit(&dictionary, 8, sizeof(char*)); char* p = buf; char* q = p; while (p) { if (*p == '\r' || *p == '\n') { *p = '\0'; if (q != p) { ArrayPush(&dictionary, &q); } ++p; q = p; continue; } if (*p == '\0') { if (q != p) { ArrayPush(&dictionary, &q); } break; } ++p; } // performance test PerformanceTest test; size_t piece_size = dictionary.used / 128; for (int i = 1; i <= 32; ++i) { size_t num = i * piece_size; size_t count; Array ret; Array cur_dictionary; ArrayInit(&cur_dictionary, 8, sizeof(char*)); for (size_t j = 0; j < num; ++j) { ArrayPush(&cur_dictionary, ArrayGet(&dictionary, j)); } // solution 1 PERFORMANCE_TEST_ADD(test, "puzzle - solution 1", (int)num, ret = solution1_Function(&puzzle_board, &cur_dictionary)); count = ArrayUsed(&ret); MLOG("solution 1:\n"); for (size_t index = 0; index < count; ++index) { RetWord* word = (RetWord*)ArrayGet(&ret, index); MLOG("%s (%d, %d) - (%d, %d)\n", word->word, word->start_x, word->start_y, word->end_x, word->end_y); } ArrayDestroy(&ret); // solution 2 PERFORMANCE_TEST_ADD(test, "puzzle - solution 2", (int)num, ret = solution2_Function(&puzzle_board, &cur_dictionary)); count = ArrayUsed(&ret); MLOG("solution 1:\n"); for (size_t index = 0; index < count; ++index) { RetWord* word = (RetWord*)ArrayGet(&ret, index); MLOG("%s (%d, %d) - (%d, %d)\n", word->word, word->start_x, word->start_y, word->end_x, word->end_y); } ArrayDestroy(&ret); ArrayDestroy(&cur_dictionary); } test.WriteCompareToFile("puzzle.txt"); // destroy ArrayDestroy(&dictionary); free(buf); }
Variant DynamicObjectData::o_invoke_few_args(MethodIndex methodIndex, const char *s, int64 hash, int count, INVOKE_FEW_ARGS_IMPL_ARGS) { if (!parent.isNull()) { return parent->o_invoke_few_args(methodIndex, s, hash, count, INVOKE_FEW_ARGS_PASS_ARGS); } else { switch (count) { case 0: { return DynamicObjectData::o_invoke(methodIndex, s, Array(), hash); } case 1: { Array params(ArrayInit(1, true).set(0, a0).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } case 2: { Array params(ArrayInit(2, true).set(0, a0).set(1, a1).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash ); } case 3: { Array params(ArrayInit(3, true).set(0, a0).set(1, a1).set(2, a2). create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash ); } #if INVOKE_FEW_ARGS_COUNT > 3 case 4: { Array params(ArrayInit(4, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash ); } case 5: { Array params(ArrayInit(5, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash ); } case 6: { Array params(ArrayInit(6, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).set(5, a5). create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } #endif #if INVOKE_FEW_ARGS_COUNT > 6 case 7: { Array params(ArrayInit(7, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).set(5, a5). set(6, a6).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } case 8: { Array params(ArrayInit(8, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).set(5, a5). set(6, a6).set(7, a7).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } case 9: { Array params(ArrayInit(9, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).set(5, a5). set(6, a6).set(7, a7).set(8, a8). create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } case 10: { Array params(ArrayInit(10, true).set(0, a0).set(1, a1).set(2, a2). set(3, a3).set(4, a4).set(5, a5). set(6, a6).set(7, a7).set(8, a8). set(9, a9).create()); return DynamicObjectData::o_invoke(methodIndex, s, params, hash); } #endif default: ASSERT(false); } return null; } }
HOT_FUNC ArrayData *ArrayData::Create() { return ArrayInit((ssize_t)0).create(); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ArrayInit(); QFile file;//загрузка jquery и добавление ноу конфликт file.setFileName(":/jquery-1.11.3.min.js"); file.open(QIODevice::ReadOnly); jQuery = file.readAll(); jQuery.append("\nvar qt = { 'jQuery': jQuery.noConflict(true) };"); file.close(); ServIP="127.0.0.1"; QFile htmlF;//подгрузка html htmlF.setFileName(":/page.html"); htmlF.open(QFile::ReadOnly); Html = htmlF.readAll(); htmlF.close(); QFile styleF;//подгрузка стилей styleF.setFileName("://style.qss"); styleF.open(QFile::ReadOnly); QString qssStr = styleF.readAll(); qApp->setStyleSheet(qssStr); styleF.close(); QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true); QWebSettings::globalSettings()->setAttribute(QWebSettings::AutoLoadImages, true); QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true); connect(ui->webView,SIGNAL(loadFinished(bool)),this,SLOT(UIloadFinished(bool))); ui->webView->load(QUrl("http://free-filmy.ru/")); connect(this,SIGNAL (phase2(QString)),this ,SLOT(Phase2Do(QString))); wb1=new QWebView(); connect(wb1,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished(bool))); connect(wb1,SIGNAL(loadProgress(int)),this, SLOT(changeProgress(int))); wb2=new QWebView(); connect(wb2,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished2(bool))); dial=new QDialog; wb3=new QWebView(); pb=new QPushButton(); pb->setText("OK"); VBox=new QVBoxLayout; VBox->addWidget(wb3); VBox->addWidget(pb); HBox=new QHBoxLayout; HBox->addLayout(VBox); dial->setLayout(HBox); dial2=new QDialog; wb4=new QWebView(); VBox2=new QVBoxLayout; VBox2->addWidget(wb4); HBox2=new QHBoxLayout; HBox2->addLayout(VBox2); dial2->setLayout(HBox2); connect(pb,SIGNAL(clicked(bool)),this,SLOT(pb_click(bool))); connect(wb3->page()->mainFrame(),SIGNAL(titleChanged(QString)),this,SLOT(img_put(QString))); done2=true; }