void node_data::set_type(NodeType::value type) { if (type == NodeType::Undefined) { m_type = type; m_isDefined = false; return; } m_isDefined = true; if (type == m_type) return; m_type = type; switch (m_type) { case NodeType::Null: break; case NodeType::Scalar: m_scalar.clear(); break; case NodeType::Sequence: reset_sequence(); break; case NodeType::Map: reset_map(); break; case NodeType::Undefined: assert(false); break; } }
void test_seq_06() { int rc; GTM_SequenceKeyData seqkey; int i; GTM_Sequence cur; SETUP(); /* create a key */ seqkey.gsk_key = strdup("seq1"); seqkey.gsk_keylen = strlen(seqkey.gsk_key); seqkey.gsk_type = GTM_SEQ_FULL_NAME; for (i=0 ; i<1000 ; i++) { cur = get_next(conn, &seqkey); _ASSERT( cur==i ); } /* get_next() x 1000 done. */ rc = reset_sequence(conn, &seqkey); _ASSERT( rc>=0 ); cur = get_next(conn, &seqkey); _ASSERT( cur==1 ); TEARDOWN(); }
// sequence void node_data::push_back(node& node, shared_memory_holder /* pMemory */) { if (m_type == NodeType::Undefined || m_type == NodeType::Null) { m_type = NodeType::Sequence; reset_sequence(); } if (m_type != NodeType::Sequence) throw BadPushback(); m_sequence.push_back(&node); }
static device_t goodfet_open(const struct device_args *args) { struct goodfet *gc; if (!(args->flags & DEVICE_FLAG_TTY)) { printc_err("goodfet: this driver does not support raw " "USB access\n"); return NULL; } if (!(args->flags & DEVICE_FLAG_JTAG)) { printc_err("goodfet: this driver does not support " "Spy-Bi-Wire\n"); return NULL; } gc = malloc(sizeof(*gc)); if (!gc) { printc_err("goodfet: malloc: %s\n", last_error()); return NULL; } memset(gc, 0, sizeof(*gc)); gc->base.type = &device_goodfet; gc->base.max_breakpoints = 0; gc->base.need_probe = 1; gc->serial_fd = sport_open(args->path, 115200, 0); if (SPORT_ISERR(gc->serial_fd)) { printc_err("goodfet: sport_open: %s: %s\n", args->path, last_error()); free(gc); return NULL; } if ((args->flags & DEVICE_FLAG_FORCE_RESET) && reset_sequence(gc->serial_fd) < 0) printc_err("warning: goodfet: reset failed\n"); if (sport_flush(gc->serial_fd) < 0) printc_err("warning: goodfet: sport_flush: %s\n", last_error()); if (init_device(gc->serial_fd) < 0) { printc_err("goodfet: initialization failed\n"); free(gc); return NULL; } return &gc->base; }
void node_data::convert_sequence_to_map(shared_memory_holder pMemory) { assert(m_type == NodeType::Sequence); reset_map(); for (std::size_t i = 0; i < m_sequence.size(); i++) { std::stringstream stream; stream << i; node& key = pMemory->create_node(); key.set_scalar(stream.str()); insert_map_pair(key, *m_sequence[i]); } reset_sequence(); m_type = NodeType::Map; }