コード例 #1
0
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);
    }
}
コード例 #2
0
ファイル: ext_std_options.cpp プロジェクト: MaimaiCoder/hhvm
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());
}
コード例 #3
0
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();
}
コード例 #4
0
ファイル: ext_std_options.cpp プロジェクト: IshanRastogi/hhvm
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());
}
コード例 #5
0
ファイル: array_data.cpp プロジェクト: BauerBox/hiphop-php
HOT_FUNC
ArrayData *ArrayData::Create() {
  if (enable_vector_array && RuntimeOption::UseVectorArray) {
    return StaticEmptyVectorArray::Get();
  }
  return ArrayInit((ssize_t)0).create();
}
コード例 #6
0
ファイル: Model.c プロジェクト: devmario/IbizaEngine
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;
}
コード例 #7
0
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);
}
コード例 #8
0
ファイル: cmd_where.cpp プロジェクト: 360buyliulei/hiphop-php
// 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;
}
コード例 #9
0
ファイル: shared_variant.cpp プロジェクト: burhan/hiphop-php
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();
}
コード例 #10
0
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;
}
コード例 #11
0
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");
} 
コード例 #12
0
ファイル: shared_map.cpp プロジェクト: hakanertug/hiphop-php
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;
}
コード例 #13
0
ファイル: coulomb.c プロジェクト: fnevgeny/cfac
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;
}
コード例 #14
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);
}
コード例 #15
0
ファイル: ext_std_options.cpp プロジェクト: Debug-Orz/hhvm
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());
}
コード例 #16
0
ファイル: array.c プロジェクト: fnevgeny/cfac
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;
}
コード例 #17
0
ファイル: streams.c プロジェクト: robUx4/ResInfo
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);
}
コード例 #18
0
ファイル: ModelManager.c プロジェクト: devmario/IbizaEngine
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;
}
コード例 #19
0
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);
}
コード例 #20
0
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);
}
コード例 #21
0
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);
}
コード例 #22
0
ファイル: ionization.c プロジェクト: fnevgeny/cfac
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;
}
コード例 #23
0
ファイル: Zadacha_2.cpp プロジェクト: jurasikmaniac/TI_2013
//Считаем энтропию текста, формируем кодовые слова для символом алфавита файла
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");
}
コード例 #24
0
ファイル: CppRebuild.c プロジェクト: JennYung/MoSync
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");
}
コード例 #25
0
ファイル: array_data.cpp プロジェクト: Braunson/hiphop-php
ArrayData *ArrayData::Create() {
    return ArrayInit(0, false).create();
}
コード例 #26
0
ファイル: radixsort.c プロジェクト: coderkian/algorithm
int main(){
  ArrayInit(array);
  ArrayView(array);
  RadixSort(array);
  ArrayView(array);
}
コード例 #27
0
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);
}
コード例 #28
0
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;
  }
}
コード例 #29
0
ファイル: array_data.cpp プロジェクト: CyaLiven/hiphop-php
HOT_FUNC
ArrayData *ArrayData::Create() {
  return ArrayInit((ssize_t)0).create();
}
コード例 #30
0
ファイル: mainwindow.cpp プロジェクト: ksand77/freeclient
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;

}