コード例 #1
0
ファイル: config.cpp プロジェクト: bacek/xscript
void
Config::addCacheParam(const std::string &name, const std::string &value) const {
    if (stop_collect_cache_) {
        return;
    }
    Range name_r = trim(createRange(name));
    static Range prefix = createRange("/xscript/");
    if (!startsWith(name_r, prefix)) {
        return;
    }
    
    for(std::set<std::string>::iterator it = forbidden_keys_.begin();
        it != forbidden_keys_.end();
        ++it) {
        if ('/' == *it->rbegin()) {
            if (0 == strncmp(name_r.begin(), it->c_str(), it->size())) {
                return;
            }
        }
        else if (name_r == trim(createRange(*it))) {
            return;
        }
    }
    
    std::string key(name_r.begin() + prefix.size(), name_r.end());
    cache_params_[key] = value;
}
コード例 #2
0
// static
PassRefPtrWillBeRawPtr<SpellCheckRequest> SpellCheckRequest::create(TextCheckingTypeMask textCheckingOptions, TextCheckingProcessType processType, const EphemeralRange& checkingRange, const EphemeralRange& paragraphRange, int requestNumber)
{
    if (checkingRange.isNull())
        return nullptr;
    if (!checkingRange.startPosition().computeContainerNode()->rootEditableElement())
        return nullptr;

    String text = plainText(checkingRange, TextIteratorEmitsObjectReplacementCharacter);
    if (text.isEmpty())
        return nullptr;

    RefPtrWillBeRawPtr<Range> checkingRangeObject = createRange(checkingRange);
    RefPtrWillBeRawPtr<Range> paragraphRangeObject = nullptr;
    // Share identical Range objects.
    if (checkingRange == paragraphRange)
        paragraphRangeObject = checkingRangeObject;
    else
        paragraphRangeObject = createRange(paragraphRange);

    const DocumentMarkerVector& markers = checkingRangeObject->ownerDocument().markers().markersInRange(checkingRange, DocumentMarker::SpellCheckClientMarkers());
    Vector<uint32_t> hashes(markers.size());
    Vector<unsigned> offsets(markers.size());
    for (size_t i = 0; i < markers.size(); ++i) {
        hashes[i] = markers[i]->hash();
        offsets[i] = markers[i]->startOffset();
    }

    return adoptRefWillBeNoop(new SpellCheckRequest(checkingRangeObject, paragraphRangeObject, text, textCheckingOptions, processType, hashes, offsets, requestNumber));
}
コード例 #3
0
ファイル: DOMSelection.cpp プロジェクト: ollie314/chromium
void DOMSelection::deleteFromDocument() {
    if (!isAvailable())
        return;

    FrameSelection& selection = frame()->selection();

    if (selection.isNone())
        return;

    // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets
    // needs to be audited.  See http://crbug.com/590369 for more details.
    // |VisibleSelection::toNormalizedEphemeralRange| requires clean layout.
    frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets();

    Range* selectedRange =
        createRange(selection.selection().toNormalizedEphemeralRange());
    if (!selectedRange)
        return;

    selectedRange->deleteContents(ASSERT_NO_EXCEPTION);

    setBaseAndExtent(selectedRange->startContainer(),
                     selectedRange->startOffset(),
                     selectedRange->startContainer(),
                     selectedRange->startOffset(), ASSERT_NO_EXCEPTION);
}
コード例 #4
0
ファイル: config.cpp プロジェクト: bacek/xscript
void
Config::addForbiddenKey(const std::string &key) const {
    if (stop_collect_cache_) {
        return;
    }
    Range key_r = trim(createRange(key));
    if (key_r.empty()) {
        return;
    }
    
    static Range mask = createRange("/*");
    if (endsWith(key_r, mask)) {
        forbidden_keys_.insert(std::string(key_r.begin(), key_r.end() - 1));
    }
    else {
        forbidden_keys_.insert(std::string(key_r.begin(), key_r.end()));
    }
}
コード例 #5
0
Token* TokenFactory::getGraphemePattern() {

	if (fGrapheme == 0) {

        Token* base_char = createRange();  // [{ASSIGNED}]-[{M},{C}]
        base_char->mergeRanges(getRange(fgUniAssigned));
        base_char->subtractRanges(getRange(fgUniMark));
        base_char->subtractRanges(getRange(fgUniControl));

        Token* virama = createRange();
		virama->addRange(0x094D, 0x094D);
		virama->addRange(0x09CD, 0x09CD);
		virama->addRange(0x0A4D, 0x0A4D);
		virama->addRange(0x0ACD, 0x0ACD);
		virama->addRange(0x0B4D, 0x0B4D);
		virama->addRange(0x0BCD, 0x0BCD);
		virama->addRange(0x0C4D, 0x0C4D);
		virama->addRange(0x0CCD, 0x0CCD);
		virama->addRange(0x0D4D, 0x0D4D);
		virama->addRange(0x0E3A, 0x0E3A);
		virama->addRange(0x0F84, 0x0F84);

        Token* combiner_wo_virama = createRange();
        combiner_wo_virama->mergeRanges(getRange(fgUniMark));
        combiner_wo_virama->addRange(0x1160, 0x11FF); // hangul_medial and hangul_final
        combiner_wo_virama->addRange(0xFF9F, 0xFF9F); // extras

        Token* left = TokenFactory::createUnion();       // base_char?
        left->addChild(base_char, this);
        left->addChild(createToken(Token::T_EMPTY), this);

        Token* foo = createUnion();
        foo->addChild(TokenFactory::createConcat(virama,getRange(fgUniLetter)), this);
        foo->addChild(combiner_wo_virama, this);

        foo = createClosure(foo);
        foo = createConcat(left, foo);

        fGrapheme = foo;
	}

	return fGrapheme;
}
コード例 #6
0
ファイル: meta_block.cpp プロジェクト: bacek/xscript
Range
MetaBlock::getLuaCode(Block *lua) const {
    const char* code = XmlUtils::cdataValue(lua->node());
    if (NULL == code) {
        code = XmlUtils::value(lua->node());
        if (NULL != code) {
            return trim(createRange(code));
        }
    }
    return Range((const char*)NULL, (const char*)NULL);
}
コード例 #7
0
TEST_F(EventHandlerTest, dragSelectionAfterScroll)
{
    setHtmlInnerHTML("<style> body { margin: 0px; } .upper { width: 300px; height: 400px; }"
        ".lower { margin: 0px; width: 300px; height: 400px; } .line { display: block; width: 300px; height: 30px; } </style>"
        "<div class='upper'></div>"
        "<div class='lower'>"
        "<span class='line'>Line 1</span><span class='line'>Line 2</span><span class='line'>Line 3</span><span class='line'>Line 4</span><span class='line'>Line 5</span>"
        "<span class='line'>Line 6</span><span class='line'>Line 7</span><span class='line'>Line 8</span><span class='line'>Line 9</span><span class='line'>Line 10</span>"
        "</div>");

    FrameView* frameView = document().view();
    frameView->scrollTo(DoublePoint(0, 400));

    PlatformMouseEvent mouseDownEvent(
        IntPoint(0, 0),
        IntPoint(100, 200),
        LeftButton,
        PlatformEvent::MousePressed,
        1,
        static_cast<PlatformEvent::Modifiers>(0),
        WTF::currentTime());
    document().frame()->eventHandler().handleMousePressEvent(mouseDownEvent);

    PlatformMouseEvent mouseMoveEvent(
        IntPoint(100, 50),
        IntPoint(200, 250),
        LeftButton,
        PlatformEvent::MouseMoved,
        1,
        static_cast<PlatformEvent::Modifiers>(0),
        WTF::currentTime());
    document().frame()->eventHandler().handleMouseMoveEvent(mouseMoveEvent);

    page().autoscrollController().animate(WTF::currentTime());
    page().animator().serviceScriptedAnimations(WTF::currentTime());

    PlatformMouseEvent mouseUpEvent(
        IntPoint(100, 50),
        IntPoint(200, 250),
        LeftButton,
        PlatformEvent::MouseReleased,
        1,
        static_cast<PlatformEvent::Modifiers>(0),
        WTF::currentTime());
    document().frame()->eventHandler().handleMouseReleaseEvent(mouseUpEvent);

    FrameSelection& selection = document().frame()->selection();
    ASSERT_TRUE(selection.isRange());
    RefPtrWillBeRawPtr<Range> range = createRange(selection.selection().toNormalizedEphemeralRange());
    ASSERT_TRUE(range.get());
    EXPECT_EQ("Line 1\nLine 2", range->text());
}
コード例 #8
0
ファイル: 228.cpp プロジェクト: g33kyaditya/OJs
 vector<string> summaryRanges(vector<int>& nums) {
     vector<string> ans;
     if (nums.empty())
         return ans;
     
     int lo = nums[0];
     int i;
     for (i = 1; i < nums.size(); i++) {
         if (nums[i] == nums[i-1] + 1)
             continue;
         else {
             string range = createRange(lo, nums[i-1]);
             lo = nums[i];
             ans.push_back(range);
         }
     }
     
     string range = createRange(lo, nums[i-1]);
     lo = nums[i];
     ans.push_back(range);
     return ans;
 }
コード例 #9
0
TEST_F(EventHandlerTest, dragSelectionAfterScroll) {
  setHtmlInnerHTML(
      "<style> body { margin: 0px; } .upper { width: 300px; height: 400px; }"
      ".lower { margin: 0px; width: 300px; height: 400px; } .line { display: "
      "block; width: 300px; height: 30px; } </style>"
      "<div class='upper'></div>"
      "<div class='lower'>"
      "<span class='line'>Line 1</span><span class='line'>Line 2</span><span "
      "class='line'>Line 3</span><span class='line'>Line 4</span><span "
      "class='line'>Line 5</span>"
      "<span class='line'>Line 6</span><span class='line'>Line 7</span><span "
      "class='line'>Line 8</span><span class='line'>Line 9</span><span "
      "class='line'>Line 10</span>"
      "</div>");

  FrameView* frameView = document().view();
  frameView->layoutViewportScrollableArea()->setScrollOffset(
      ScrollOffset(0, 400), ProgrammaticScroll);

  PlatformMouseEvent mouseDownEvent(
      IntPoint(0, 0), IntPoint(100, 200), WebPointerProperties::Button::Left,
      PlatformEvent::MousePressed, 1, PlatformEvent::Modifiers::LeftButtonDown,
      WTF::monotonicallyIncreasingTime());
  document().frame()->eventHandler().handleMousePressEvent(mouseDownEvent);

  PlatformMouseEvent mouseMoveEvent(
      IntPoint(100, 50), IntPoint(200, 250), WebPointerProperties::Button::Left,
      PlatformEvent::MouseMoved, 1, PlatformEvent::Modifiers::LeftButtonDown,
      WTF::monotonicallyIncreasingTime());
  document().frame()->eventHandler().handleMouseMoveEvent(
      mouseMoveEvent, Vector<PlatformMouseEvent>());

  page().autoscrollController().animate(WTF::monotonicallyIncreasingTime());
  page().animator().serviceScriptedAnimations(
      WTF::monotonicallyIncreasingTime());

  PlatformMouseEvent mouseUpEvent(
      IntPoint(100, 50), IntPoint(200, 250), WebPointerProperties::Button::Left,
      PlatformEvent::MouseReleased, 1, static_cast<PlatformEvent::Modifiers>(0),
      WTF::monotonicallyIncreasingTime());
  document().frame()->eventHandler().handleMouseReleaseEvent(mouseUpEvent);

  FrameSelection& selection = document().frame()->selection();
  ASSERT_TRUE(selection.isRange());
  Range* range =
      createRange(selection.selection().toNormalizedEphemeralRange());
  ASSERT_TRUE(range);
  EXPECT_EQ("Line 1\nLine 2", range->text());
}
コード例 #10
0
void WebSurroundingText::initializeFromCurrentSelection(WebLocalFrame* frame,
                                                        size_t maxLength) {
  LocalFrame* webFrame = toWebLocalFrameImpl(frame)->frame();

  // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets
  // needs to be audited.  See http://crbug.com/590369 for more details.
  webFrame->document()->updateStyleAndLayoutIgnorePendingStylesheets();

  if (Range* range = createRange(
          webFrame->selection().selection().toNormalizedEphemeralRange())) {
    // TODO(xiaochengh): The followinng SurroundingText can hold a null Range,
    // in which case we should prevent it from being stored in |m_private|.
    m_private.reset(new SurroundingText(*range, maxLength));
  }
}
コード例 #11
0
void DOMSelection::deleteFromDocument()
{
    if (!m_frame)
        return;

    FrameSelection& selection = m_frame->selection();

    if (selection.isNone())
        return;

    RefPtrWillBeRawPtr<Range> selectedRange = createRange(selection.selection().toNormalizedEphemeralRange());
    if (!selectedRange)
        return;

    selectedRange->deleteContents(ASSERT_NO_EXCEPTION);

    setBaseAndExtent(selectedRange->startContainer(), selectedRange->startOffset(), selectedRange->startContainer(), selectedRange->startOffset(), ASSERT_NO_EXCEPTION);
}
コード例 #12
0
void AsciiComponentClass::add(unichar c) {
    DEBUG_PRINTF("adding \\x%02x\n", c);
    if (c > 0xff) { // too big!
        throw LocatedParseError("Hexadecimal value is greater than \\xFF");
    }

    if (in_cand_range) {
        createRange(c);
        return;
    }

    CharReach ncr(c, c);
    if (mode.caseless) {
        make_caseless(&ncr);
    }

    cr |= ncr;
    range_start = c;
}
コード例 #13
0
ファイル: SelectionEditor.cpp プロジェクト: dstockwell/blink
bool SelectionEditor::setSelectedRange(const EphemeralRange& range, TextAffinity affinity, SelectionDirectionalMode directional, FrameSelection::SetSelectionOptions options)
{
    if (range.isNull())
        return false;

    // Non-collapsed ranges are not allowed to start at the end of a line that is wrapped,
    // they start at the beginning of the next line instead
    m_logicalRange = nullptr;
    stopObservingVisibleSelectionChangeIfNecessary();

    // Since |FrameSeleciton::setSelection()| dispatches events and DOM tree
    // can be modified by event handlers, we should create |Range| object before
    // calling it.
    m_logicalRange = createRange(range);

    VisibleSelection newSelection(range.startPosition(), range.endPosition(), affinity, directional == SelectionDirectionalMode::Directional);
    m_frameSelection->setSelection(newSelection, options);
    startObservingVisibleSelectionChange();
    return true;
}
コード例 #14
0
ファイル: http_utils.cpp プロジェクト: bacek/xscript
std::string
HttpUtils::normalizeOutputHeaderName(const std::string &name) {

    std::string res;
    Range range = trim(createRange(name)), head, tail;
    res.reserve(range.size());

    while (!range.empty()) {

        split(range, '-', head, tail);
        if (!head.empty()) {
            res.append(1, toupper(*head.begin()));
        }
        if (head.size() > 1) {
            res.append(head.begin() + 1, head.end());
        }
        range = trim(tail);
        if (!range.empty()) {
            res.append(1, '-');
        }
    }
    return res;
}
コード例 #15
0
ファイル: meta.cpp プロジェクト: bacek/xscript
namespace xscript {

static const std::string ELAPSED_TIME_META_KEY = "elapsed-time";
static const std::string EXPIRE_TIME_META_KEY = "expire-time";
static const std::string LAST_MODIFIED_META_KEY = "last-modified";

struct MetaCore::MetaCoreData {
    MetaCoreData() : elapsed_time_(MetaCore::undefinedElapsedTime())
    {}
    ~MetaCoreData()
    {}

    void reset() {
        data_.clear();
        elapsed_time_ = MetaCore::undefinedElapsedTime();
    }

    TypedMap data_;
    int elapsed_time_;
};

MetaCore::MetaCore() : core_data_(new MetaCoreData())
{}

MetaCore::~MetaCore()
{}

void
MetaCore::reset() {
    core_data_->reset();
}

static const Range ELAPSED_TIME_RANGE = createRange("Elapsed-time:");

bool
MetaCore::parse(const char *buf, boost::uint32_t size) {
    try {
        reset();
        Range data(buf, buf + size);

        if (startsWith(data, ELAPSED_TIME_RANGE)) {
            Range chunk;
            split(data, Parser::RN_RANGE, chunk, data);
            Range prefix, key;
            split(chunk, ':', prefix, key);
            if (key.empty()) {
                log()->error("incorrect elapsed time format in block cache data");
                return false;
            }
            core_data_->elapsed_time_ = static_cast<int>(*((boost::int32_t*)key.begin()));
        }

        const char* buf_tmp = data.begin();
        const char* buf_end = data.end();
        while (buf_tmp < buf_end) {
            if (buf_end - buf_tmp < (boost::int32_t)sizeof(boost::uint32_t)) {
                throw std::runtime_error("Incorrect meta format");
            }
            boost::uint32_t var = *((boost::uint32_t*)buf_tmp);
            buf_tmp += sizeof(boost::uint32_t);
            if (buf_end - buf_tmp < (boost::int64_t)var) {
                throw std::runtime_error("Incorrect meta format");
            }
            Range key(buf_tmp, buf_tmp + var);
            buf_tmp += var;
            if (buf_end - buf_tmp < (boost::int32_t)sizeof(boost::uint32_t)) {
                throw std::runtime_error("Incorrect meta format");
            }
            boost::uint32_t size = *((boost::uint32_t*)buf_tmp);
            if (buf_tmp + size > buf_end) {
                throw std::runtime_error("Incorrect meta format");

            }
            TypedValue value(Range(buf_tmp, buf_tmp + size));
            core_data_->data_.insert(std::string(key.begin(), key.end()), value);
            buf_tmp += size;
        }
    }
    catch (const std::exception &e) {
        log()->error("exception caught while parsing block cache data: %s", e.what());
        return false;
    }
    return true;
}

void
MetaCore::serialize(std::string &buf) const {
    if (undefinedElapsedTime() != core_data_->elapsed_time_) {
        buf.append("Elapsed-time:");
        boost::int32_t var = core_data_->elapsed_time_;
        buf.append((char*)&var, sizeof(var));
        buf.append("\r\n");
    }
    const std::map<std::string, TypedValue>& values = core_data_->data_.values();
    for (std::map<std::string, TypedValue>::const_iterator it = values.begin();
        it != values.end();
        ++it) {
        boost::uint32_t var = it->first.size();
        buf.append((char*)&var, sizeof(var));
        buf.append(it->first);
        it->second.serialize(buf);
    }
}

int
MetaCore::undefinedElapsedTime() {
    return -1;
}

const TypedValue&
MetaCore::find(const std::string &name) const {
    return core_data_->data_.findNoThrow(name);
}

void
MetaCore::insert(const std::string &name, const TypedValue &value) {
    core_data_->data_.insert(name, value);
}

bool
MetaCore::has(const std::string &name) const {
    return core_data_->data_.has(name);
}

time_t
MetaCore::getElapsedTime() const {
    return core_data_->elapsed_time_;
}

void
MetaCore::setElapsedTime(time_t time) {
    core_data_->elapsed_time_ = time;
}

const std::map<std::string, TypedValue>&
MetaCore::values() const {
    return core_data_->data_.values();
}

struct Meta::MetaData {
    MetaData() : expire_time_(Meta::undefinedExpireTime()),
            last_modified_(Meta::undefinedLastModified()),
            cache_params_writable_(false), core_writable_(true)
    {}
    ~MetaData()
    {}

    void reset() {
        core_.reset();
        child_.clear();
        cache_params_writable_ = false;
        core_writable_ = true;
        expire_time_ = Meta::undefinedExpireTime();
        last_modified_ = Meta::undefinedLastModified();
    }

    void initCore() {
        if (NULL == core_.get()) {
            core_ = boost::shared_ptr<MetaCore>(new MetaCore);
        }
    }

    boost::shared_ptr<MetaCore> core_;
    TypedMap child_;
    time_t expire_time_;
    time_t last_modified_;
    bool cache_params_writable_;
    bool core_writable_;
};

Meta::Meta() : meta_data_(new MetaData())
{}

Meta::~Meta()
{}

void
Meta::reset() {
    meta_data_->reset();
}

time_t
Meta::undefinedExpireTime() {
    return -1;
}

time_t
Meta::undefinedLastModified() {
    return -1;
}

void
Meta::initCore() {
    meta_data_->initCore();
}

void
Meta::setCore(const boost::shared_ptr<MetaCore> &core) {
    meta_data_->core_ = core;
}

boost::shared_ptr<MetaCore>
Meta::getCore() const {
    return meta_data_->core_;
}

const std::string&
Meta::get(const std::string &name, const std::string &default_value) const {
    const TypedValue& value = meta_data_->child_.findNoThrow(name);
    if (!value.nil()) {
        return value.asString();
    }
    if (meta_data_->core_.get()) {
        const TypedValue& value = meta_data_->core_->find(name);
        if (!value.nil()) {
            return value.asString();
        }
    }
    return default_value;
}

const TypedValue&
Meta::getTypedValue(const std::string &name) const {
    const TypedValue& value = meta_data_->child_.findNoThrow(name);
    if (!value.nil()) {
        return value;
    }
    return meta_data_->core_.get() ? meta_data_->core_->find(name) : value;
}

void
Meta::setTypedValue(const std::string &name, const TypedValue &value) {
    if (!allowKey(name)) {
        throw std::runtime_error(name + " key is not allowed");
    }
    if (meta_data_->core_writable_) {
        initCore();
        meta_data_->core_->insert(name, value);
    }
    else {
        meta_data_->child_.insert(name, value);
    }
}

void
Meta::setBool(const std::string &name, bool value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setLong(const std::string &name, boost::int32_t value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setULong(const std::string &name, boost::uint32_t value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setLongLong(const std::string &name, boost::int64_t value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setULongLong(const std::string &name, boost::uint64_t value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setDouble(const std::string &name, double value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setString(const std::string &name, const std::string &value) {
    setTypedValue(name, TypedValue(value));
}

void
Meta::setArray(const std::string &name, const std::vector<std::string> &value) {
    TypedValue val = TypedValue::createArrayValue();
    for (std::vector<std::string>::const_iterator it = value.begin();
         it != value.end();
         ++it) {
        val.add(StringUtils::EMPTY_STRING, TypedValue(*it));
    }
    setTypedValue(name, val);
}

void
Meta::setMap(const std::string &name, const std::vector<StringUtils::NamedValue> &value) {
    TypedValue val = TypedValue::createMapValue();
    for (std::vector<StringUtils::NamedValue>::const_iterator it = value.begin();
         it != value.end();
         ++it) {
        val.add(it->first, TypedValue(it->second));
    }
    setTypedValue(name, val);
}

bool
Meta::has(const std::string &name) const {
    if (meta_data_->child_.has(name)) {
        return true;
    }
    if (meta_data_->core_.get() && meta_data_->core_->has(name)) {
        return true;
    }
    return false;
}

void
Meta::setElapsedTime(int time) {
    if (time < 0) {
        throw std::runtime_error("Incorrect elapsed time value");
    }
    initCore();
    meta_data_->core_->setElapsedTime(time);
}

int
Meta::getElapsedTime() const {
    return meta_data_->core_.get() ?
        meta_data_->core_->getElapsedTime() :
            MetaCore::undefinedElapsedTime();
}

time_t
Meta::getExpireTime() const {
    return meta_data_->expire_time_;
}

void
Meta::setExpireTime(time_t time) {
    if (meta_data_->cache_params_writable_) {
        meta_data_->expire_time_ = time;
    }
}

time_t
Meta::getLastModified() const {
    return meta_data_->last_modified_;
}

void
Meta::setLastModified(time_t time) {
    if (meta_data_->cache_params_writable_) {
        meta_data_->last_modified_ = time;
    }
}

void
Meta::setCacheParams(time_t expire, time_t last_modified) {
    meta_data_->expire_time_ = expire;
    meta_data_->last_modified_ = last_modified;
}

bool
Meta::allowKey(const std::string &key) const {
    if (ELAPSED_TIME_META_KEY == key ||
        EXPIRE_TIME_META_KEY == key ||
        LAST_MODIFIED_META_KEY == key) {
        return false;
    }
    return true;
}

static void
processNewMetaNode(const std::string &name, const TypedValue &value,
        XmlNodeHelper &result, xmlNodePtr &last_node) {
    XmlTypedVisitor visitor;
    value.visit(&visitor);
    XmlNodeHelper res = visitor.result();
    xmlNewProp(res.get(), (const xmlChar*)"name", (const xmlChar*)name.c_str());
    if (result.get()) {
        last_node = xmlAddNextSibling(last_node, res.release());
    }
    else {
        result = res;
        last_node = result.get();
    }
}

XmlNodeHelper
Meta::getXml() const {
    XmlNodeHelper result;
    xmlNodePtr last_insert_node = NULL;
    if (MetaCore::undefinedElapsedTime() != getElapsedTime()) {
        TypedValue value((boost::int64_t)getElapsedTime());
        processNewMetaNode(ELAPSED_TIME_META_KEY, value, result, last_insert_node);
    }

    if (undefinedExpireTime() != meta_data_->expire_time_) {
        TypedValue value((boost::int64_t)meta_data_->expire_time_);
        processNewMetaNode(EXPIRE_TIME_META_KEY, value, result, last_insert_node);
    }

    if (undefinedExpireTime() != meta_data_->last_modified_) {
        TypedValue value((boost::int64_t)meta_data_->last_modified_);
        processNewMetaNode(LAST_MODIFIED_META_KEY, value, result, last_insert_node);
    }

    const std::map<std::string, TypedValue> &values = meta_data_->child_.values();
    for(std::map<std::string, TypedValue>::const_iterator it = values.begin();
        it != values.end();
        ++it) {
        if (!allowKey(it->first)) {
            continue;
        }
        processNewMetaNode(it->first, it->second, result, last_insert_node);
    }

    if (NULL == meta_data_->core_.get()) {
        return result;
    }

    const std::map<std::string, TypedValue> &core_values = meta_data_->core_->values();
    for(std::map<std::string, TypedValue>::const_iterator it = core_values.begin();
        it != core_values.end();
        ++it) {
        if (meta_data_->child_.has(it->first)) {
            continue;
        }
        processNewMetaNode(it->first, it->second, result, last_insert_node);
    }
    return result;
}

void
Meta::cacheParamsWritable(bool flag) {
    meta_data_->cache_params_writable_ = flag;
}

void
Meta::coreWritable(bool flag) {
    meta_data_->core_writable_ = flag;
}

} // namespace xscript
コード例 #16
0
ファイル: mgclkernel.cpp プロジェクト: kaabimg/MgCarDashboard
void MgClKernel::run()
{
    if(!environment())
        return;

    if(!localRange())
        return;


    if(!d_ptr->arguments.size())
        return;

    if(!valid())
        return;

    Q_EMIT runStarted();

    cl::KernelFunctor functor = d_ptr->kernel.bind(
                d_ptr->environment->d_ptr->commandQueue,
                createRange(offsetRange()),
                createRange(localRange()),
                createRange(globalRange())
                );

    switch (d_ptr->arguments.size()) {

    case 1:
        functor();
        break;
    case 2:
        functor();
        break;

    case 3:
        functor();
        break;
    case 4:
        functor();
        break;
    case 5:
        functor();
        break;
    case 6:
        functor();
        break;
    case 7:
        functor();
        break;
    case 8:
        functor();
        break;
    case 9:
        functor();
        break;
    case 10:
        functor();
        break;
    case 11:
        functor();
        break;
    case 12:
        functor();
        break;
    case 13:
        functor();
        break;
    case 14:
        functor();
        break;
    case 15:
        functor();
        break;
    default:
        break;
    }


    Q_EMIT runFinished();

}