本文整理汇总了C++中db_lookup函数的典型用法代码示例。如果您正苦于以下问题:C++ db_lookup函数的具体用法?C++ db_lookup怎么用?C++ db_lookup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了db_lookup函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: node_write
/*
* Supports for the 'keep' method.
* Write each node encountered exactly once.
*/
HIDDEN void
node_write(struct db_i *dbip, struct directory *dp, void *ptr)
{
struct keep_node_data *kndp = (struct keep_node_data *)ptr;
struct rt_db_internal intern;
RT_CK_WDB(kndp->wdbp);
if (dp->d_nref++ > 0)
return; /* already written */
if (rt_db_get_internal(&intern, dp, dbip, NULL, &rt_uniresource) < 0) {
bu_vls_printf(kndp->gedp->ged_result_str, "Database read error, aborting\n");
return;
}
if (dp->d_major_type == DB5_MAJORTYPE_BRLCAD && dp->d_minor_type == DB5_MINORTYPE_BRLCAD_EXTRUDE) {
/* if this is an extrusion, keep the referenced sketch */
struct rt_extrude_internal *extr;
struct directory *dp2;
extr = (struct rt_extrude_internal *)intern.idb_ptr;
RT_EXTRUDE_CK_MAGIC(extr);
if ((dp2 = db_lookup(dbip, extr->sketch_name, LOOKUP_QUIET)) != RT_DIR_NULL) {
node_write(dbip, dp2, ptr);
}
} else if (dp->d_major_type == DB5_MAJORTYPE_BRLCAD && dp->d_minor_type == DB5_MINORTYPE_BRLCAD_REVOLVE) {
/* if this is a revolve, keep the referenced sketch */
struct rt_revolve_internal *rev;
struct directory *dp2;
rev = (struct rt_revolve_internal *)intern.idb_ptr;
RT_REVOLVE_CK_MAGIC(rev);
if ((dp2 = db_lookup(dbip, bu_vls_addr(&rev->sketch_name), LOOKUP_QUIET)) != RT_DIR_NULL) {
node_write(dbip, dp2, ptr);
}
} else if (dp->d_major_type == DB5_MAJORTYPE_BRLCAD && dp->d_minor_type == DB5_MINORTYPE_BRLCAD_DSP) {
/* if this is a DSP, keep the referenced binary object too */
struct rt_dsp_internal *dsp;
struct directory *dp2;
dsp = (struct rt_dsp_internal *)intern.idb_ptr;
RT_DSP_CK_MAGIC(dsp);
if (dsp->dsp_datasrc == RT_DSP_SRC_OBJ) {
/* need to keep this object */
if ((dp2 = db_lookup(dbip, bu_vls_addr(&dsp->dsp_name), LOOKUP_QUIET)) != RT_DIR_NULL) {
node_write(dbip, dp2, ptr);
}
}
}
if (wdb_put_internal(kndp->wdbp, dp->d_namep, &intern, 1.0) < 0) {
bu_vls_printf(kndp->gedp->ged_result_str, "Database write error, aborting\n");
return;
}
}
开发者ID:kanzure,项目名称:brlcad,代码行数:63,代码来源:keep.c
示例2: ged_cat
int
ged_cat(struct ged *gedp, int argc, const char *argv[])
{
struct directory *dp;
int arg;
static const char *usage = "<objects>";
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
/* initialize result */
bu_vls_trunc(gedp->ged_result_str, 0);
/* must be wanting help */
if (argc == 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_HELP;
}
for (arg = 1; arg < argc; arg++) {
if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[arg], LOOKUP_NOISY)) == RT_DIR_NULL)
continue;
_ged_do_list(gedp, dp, 0); /* non-verbose */
}
return GED_OK;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:28,代码来源:cat.c
示例3: bu_vls_putc
std::string
BRLCADWrapper::GetBRLCADName(std::string &name)
{
std::ostringstream str;
std::string strcnt;
struct bu_vls obj_name = BU_VLS_INIT_ZERO;
int len = 0;
char *cp,*tp;
static int start = 1;
for (cp = (char *)name.c_str(), len = 0; *cp != '\0'; ++cp, ++len) {
if (*cp == '@') {
if (*(cp + 1) == '@')
++cp;
else
break;
}
bu_vls_putc(&obj_name, *cp);
}
bu_vls_putc(&obj_name, '\0');
tp = (char *)((*cp == '\0') ? "" : cp + 1);
do {
bu_vls_trunc(&obj_name, len);
bu_vls_printf(&obj_name, "%d", start++);
bu_vls_strcat(&obj_name, tp);
}
while (db_lookup(outfp->dbip, bu_vls_addr(&obj_name), LOOKUP_QUIET) != RT_DIR_NULL);
return bu_vls_addr(&obj_name);
}
开发者ID:kanzure,项目名称:brlcad,代码行数:31,代码来源:BRLCADWrapper.cpp
示例4: edcodes_traverse_node
HIDDEN void
edcodes_traverse_node(struct db_i *dbip, struct rt_comb_internal *UNUSED(comb), union tree *comb_leaf, void *user_ptr1, void *user_ptr2, void *user_ptr3, void *UNUSED(user_ptr4))
{
int ret;
int *pathpos;
struct directory *nextdp;
struct ged *gedp;
RT_CK_DBI(dbip);
RT_CK_TREE(comb_leaf);
if ((nextdp=db_lookup(dbip, comb_leaf->tr_l.tl_name, LOOKUP_NOISY)) == RT_DIR_NULL)
return;
pathpos = (int *)user_ptr1;
gedp = (struct ged *)user_ptr2;
/* recurse on combinations */
if (nextdp->d_flags & RT_DIR_COMB) {
int *status = (int *)user_ptr3;
ret = edcodes_collect_regnames(gedp, nextdp, (*pathpos)+1);
if (status && ret == EDCODES_HALT)
*status = EDCODES_HALT;
}
}
开发者ID:behollis,项目名称:brlcad-svn-rev65072-gsoc2015,代码行数:25,代码来源:edcodes.c
示例5: lsr_queue
/*------------------------------------------------------------------------
* lsr_queue - generate Link State Request packets
*------------------------------------------------------------------------
*/
int
lsr_queue(struct ospf_if *pif, struct ospf_nb *pnb, struct ep *pepin)
{
struct ep *pep = 0;
struct ip *pipin = (struct ip *)pepin->ep_data;
struct ospf *poin = (struct ospf *)pipin->ip_data;
struct ospf_dd *pdd = (struct ospf_dd *)poin->ospf_data;
struct ospf_lss *plss;
struct ospf_db *pdb;
int i, nlss;
nlss = (poin->ospf_len - MINDDLEN) / LSSHDRLEN;
plss = pdd->dd_lss;
for (i=0; i<nlss; ++i, ++plss) {
pdb = db_lookup(pif->if_area, plss->lss_type,
plss->lss_lsid);
if (pdb == 0)
pep = lsr_add(pif, plss, pep);
/* if plss newer, pep = lsr_add(pif, plss, pep); */
}
if (pep && enq(pnb->nb_lsrl, pep, 0) < 0)
freebuf(pep);
lsr_xmit(pif, pnb);
}
开发者ID:beckah,项目名称:Ethernet-ARP-IP-Simulation,代码行数:29,代码来源:lsr_queue.c
示例6: FOR_ALL_DIRECTORY_START
/* now look for objects in the other database that aren't here */
FOR_ALL_DIRECTORY_START(dp2, dbip2) {
/* skip the _GLOBAL object */
if (dp2->d_major_type == DB5_MAJORTYPE_ATTRIBUTE_ONLY)
continue;
/* check if this object exists in the other database */
if (db_lookup(dbip1, dp2->d_namep, 0) == RT_DIR_NULL) {
/* need to add this object */
has_diff += 1;
argv[2] = dp2->d_namep;
/* FIXME: use libtclcad's get interface or libged or librt
* directly, just not wdb_obj
*/
if (wdb_get_tcl((void *)dbip2->dbi_wdbp, 3, (const char **)argv) == TCL_ERROR ||
!bu_strncmp(Tcl_GetStringResult(interp), "invalid", 7)) {
/* could not get TCL version */
if (mode == HUMAN)
printf("Import %s from %s\n",
dp2->d_namep, dbip2->dbi_filename);
else
printf("# IMPORT %s from %s\n",
dp2->d_namep, dbip2->dbi_filename);
} else {
if (mode == HUMAN)
printf("%s does not exist in %s\n",
dp2->d_namep, dbip1->dbi_filename);
else
printf("db put %s %s\n",
dp2->d_namep, Tcl_GetStringResult(interp));
}
Tcl_ResetResult(interp);
}
} FOR_ALL_DIRECTORY_END;
开发者ID:kanzure,项目名称:brlcad,代码行数:35,代码来源:gdiff.c
示例7: buy
void buy()
{
char name[200];
key k;
result res;
read_until(STDIN, name, 200, '\n');
k.data.count = strlen(name) + 1;
k.data.data = (opaque *)name;
res = db_lookup(k);
if (res.status == SUCCESS)
{
item_details *d = (item_details *)res.rec.data->data.data;
if (d->count < 1)
{
printf("Not enought items\n");
}
else
{
d->count--;
if (d->count == 0)
db_delete(k);
else
db_insert(*res.rec.data);
}
}
else
{
printf("Item not found\n");
}
}
开发者ID:CyberGrandChallenge,项目名称:samples,代码行数:32,代码来源:main.c
示例8: crregion
void
crregion(char *region, char *op, int *members, int number, char *solidname, int maxlen)
{
int i;
struct bu_list head;
if (dbip == DBI_NULL)
return;
BU_LIST_INIT(&head);
for (i=0; i<number; i++) {
solidname[8] = '\0';
crname(solidname, members[i], maxlen);
if ( db_lookup( dbip, solidname, LOOKUP_QUIET) == DIR_NULL ) {
Tcl_AppendResult(interp, "region: ", region, " will skip member: ",
solidname, "\n", (char *)NULL);
continue;
}
mk_addmember( solidname, &head, NULL, op[i] );
}
(void)mk_comb( wdbp, region, &head,
1, NULL, NULL, NULL,
500+Trackpos+i, 0, mat_default, los_default,
0, 1, 1 );
}
开发者ID:cciechad,项目名称:brlcad,代码行数:26,代码来源:track.c
示例9: db_argv_to_path
int
db_argv_to_path(struct db_full_path *pp, struct db_i *dbip, int argc, const char *const *argv)
{
struct directory *dp;
int ret = 0;
int i;
RT_CK_DBI(dbip);
/* Make a path structure just big enough */
pp->magic = DB_FULL_PATH_MAGIC;
pp->fp_maxlen = pp->fp_len = argc;
pp->fp_names = (struct directory **)bu_malloc(
pp->fp_maxlen * sizeof(struct directory *),
"db_argv_to_path path array");
pp->fp_bool = (int *)bu_calloc(pp->fp_maxlen, sizeof(int),
"db_argv_to_path bool array");
pp->fp_mat = (matp_t *)bu_calloc(pp->fp_maxlen, sizeof(matp_t),
"db_string_to_path mat array");
for (i = 0; i<argc; i++) {
if ((dp = db_lookup(dbip, argv[i], LOOKUP_NOISY)) == RT_DIR_NULL) {
bu_log("db_argv_to_path() failed on element %d='%s'\n",
i, argv[i]);
ret = -1; /* FAILED */
/* Fall through, storing null dp in this location */
}
pp->fp_names[i] = dp;
}
return ret;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:31,代码来源:db_fullpath.c
示例10: db_object_exists
/* test functions */
int db_object_exists(struct exists_data *ed)
{
struct directory *dp = NULL;
dp = db_lookup(ed->gedp->ged_wdbp->dbip, *(ed->t_wp), LOOKUP_QUIET);
if (dp) return 1;
return 0;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:8,代码来源:exists.c
示例11: rt_db_lookup_internal
int
rt_db_lookup_internal (
struct db_i *dbip,
const char *obj_name,
struct directory **dpp,
struct rt_db_internal *ip,
int noisy,
struct resource *resp)
{
struct directory *dp;
if (obj_name == (char *) 0) {
if (noisy == LOOKUP_NOISY)
bu_log("rt_db_lookup_internal() No object specified\n");
return ID_NULL;
}
if ((dp = db_lookup(dbip, obj_name, noisy)) == RT_DIR_NULL)
return ID_NULL;
if (rt_db_get_internal(ip, dp, dbip, (matp_t) NULL, resp) < 0) {
if (noisy == LOOKUP_NOISY)
bu_log("rt_db_lookup_internal() Failed to get internal form of object '%s'\n",
dp->d_namep);
return ID_NULL;
}
*dpp = dp;
return ip->idb_type;
}
开发者ID:behollis,项目名称:brlcad-svn-rev65072-gsoc2015,代码行数:28,代码来源:dir.c
示例12: dup_dir_check5
static void
dup_dir_check5(struct db_i *input_dbip,
const struct db5_raw_internal *rip,
off_t addr,
void *ptr)
{
char *name;
struct directory *dupdp;
struct bu_vls local = BU_VLS_INIT_ZERO;
struct dir_check_stuff *dcsp = (struct dir_check_stuff *)ptr;
if (dcsp->main_dbip == DBI_NULL)
return;
RT_CK_DBI(input_dbip);
RT_CK_RIP(rip);
if (rip->h_dli == DB5HDR_HFLAGS_DLI_HEADER_OBJECT) return;
if (rip->h_dli == DB5HDR_HFLAGS_DLI_FREE_STORAGE) return;
name = (char *)rip->name.ext_buf;
if (name == (char *)NULL) return;
if (addr == 0) return;
/* do not compare _GLOBAL */
if (rip->major_type == DB5_MAJORTYPE_ATTRIBUTE_ONLY &&
rip->minor_type == 0)
return;
/* Add the prefix, if any */
if (db_version(dcsp->main_dbip) < 5) {
if (dcsp->wdbp->wdb_ncharadd > 0) {
bu_vls_strncpy(&local, bu_vls_addr(&dcsp->wdbp->wdb_prestr), dcsp->wdbp->wdb_ncharadd);
bu_vls_strcat(&local, name);
} else {
bu_vls_strncpy(&local, name, _GED_V4_MAXNAME);
}
bu_vls_trunc(&local, _GED_V4_MAXNAME);
} else {
if (dcsp->wdbp->wdb_ncharadd > 0) {
(void)bu_vls_vlscat(&local, &dcsp->wdbp->wdb_prestr);
(void)bu_vls_strcat(&local, name);
} else {
(void)bu_vls_strcat(&local, name);
}
}
/* Look up this new name in the existing (main) database */
if ((dupdp = db_lookup(dcsp->main_dbip, bu_vls_addr(&local), LOOKUP_QUIET)) != RT_DIR_NULL) {
/* Duplicate found, add it to the list */
dcsp->wdbp->wdb_num_dups++;
*dcsp->dup_dirp++ = dupdp;
}
bu_vls_free(&local);
return;
}
开发者ID:behollis,项目名称:brlcad-svn-rev65072-gsoc2015,代码行数:59,代码来源:dup.c
示例13: Comb_Is_Wrapper
/* A "wrapping" combination is a combination that contains a single object
* and does not apply a matrix to it */
int
Comb_Is_Wrapper(struct directory *dp, struct rt_wdb *wdbp)
{
struct rt_db_internal comb_intern;
struct rt_db_internal comb_child_intern;
struct rt_comb_internal *comb;
union tree *child;
struct directory *child_dp;
int node_count = 0;
rt_db_get_internal(&comb_intern, dp, wdbp->dbip, bn_mat_identity, &rt_uniresource);
RT_CK_DB_INTERNAL(&comb_intern);
if (comb_intern.idb_minor_type != DB5_MINORTYPE_BRLCAD_COMBINATION) {
rt_db_free_internal(&comb_intern);
return -1;
}
/* If this comb has more than one child, it isn't a wrapper */
comb = (struct rt_comb_internal *)comb_intern.idb_ptr;
if (comb->tree) {
node_count = db_count_tree_nodes(comb->tree, 0);
if (node_count > 1) {
rt_db_free_internal(&comb_intern);
return 1;
}
} else {
/* Empty comb */
return -2;
}
/* If the child doesn't exist, this isn't a wrapper */
child = _db_tree_get_child(comb->tree);
child_dp = db_lookup(wdbp->dbip, child->tr_l.tl_name, LOOKUP_QUIET);
if (child_dp == RT_DIR_NULL) {
rt_db_free_internal(&comb_intern);
return 1;
}
/* If the child is a comb, this isn't a wrapper */
rt_db_get_internal(&comb_child_intern, child_dp, wdbp->dbip, bn_mat_identity, &rt_uniresource);
RT_CK_DB_INTERNAL(&comb_child_intern);
if (comb_child_intern.idb_minor_type == DB5_MINORTYPE_BRLCAD_COMBINATION) {
rt_db_free_internal(&comb_intern);
rt_db_free_internal(&comb_child_intern);
return 1;
}
/* If the child has a matrix over it, this isn't a wrapper */
if (child->tr_l.tl_mat) {
rt_db_free_internal(&comb_intern);
rt_db_free_internal(&comb_child_intern);
return 1;
}
/* If we made it here, we have a wrapper */
rt_db_free_internal(&comb_intern);
rt_db_free_internal(&comb_child_intern);
return 0;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:61,代码来源:Comb.cpp
示例14: loadrep
int loadrep(char *inst_name)
{
char buf[BUFSIZE];
FILE *fp;
extern XFORM *global_transform;
XFORM *save_transform;
DB_TAB *ed_rep;
int retval=1;
char *save_rep;
BOUNDS bb;
if ((ed_rep = db_lookup(inst_name)) == NULL) { /* not in memory */
snprintf(buf, MAXFILENAME, "./cells/%s.d", inst_name);
if((fp = fopen(buf, "r")) == 0) { /* cannot find copy on disk */
retval=0;
} else { /* found it on disk, read it in */
if (currep != NULL) {
save_rep=strsave(currep->name);
} else {
save_rep=NULL;
}
currep = db_install(inst_name); /* create blank stub */
readin(buf, 1, EDI, NULL);
currep->modified = 0;
bb.init=0;
save_transform = global_transform;
db_render(currep, 0, &bb, D_READIN); /* set boundbox, etc */
global_transform = save_transform;
if (save_rep != NULL) {
currep=db_lookup(save_rep);
free(save_rep);
} else {
currep=NULL;
}
}
}
return(retval);
}
开发者ID:omnister,项目名称:piglet,代码行数:45,代码来源:geom_inst.c
示例15: db_count_refs
HIDDEN void
db_count_refs(struct db_i *dbip, struct rt_comb_internal *comb, union tree *comb_leaf, genptr_t dummy1, genptr_t dummy2, genptr_t dummy3)
{
struct directory *dp;
RT_CK_TREE( comb_leaf );
if ( (dp=db_lookup(dbip, comb_leaf->tr_l.tl_name, LOOKUP_QUIET)) != DIR_NULL )
++dp->d_nref;
}
开发者ID:cciechad,项目名称:brlcad,代码行数:10,代码来源:db_match.c
示例16: lsr_in
/*------------------------------------------------------------------------
* lsr_in - handle a received link state request packet
*------------------------------------------------------------------------
*/
void
lsr_in(struct ep *pep)
{
struct ip *pipout, *pip = (struct ip *)pep->ep_data;
struct ospf *poout, *po;
struct ospf_if *pif = &ospf_if[pep->ep_ifn];
struct ospf_nb *pnb;
struct ospf_lsr *plsr;
struct ospf_lsu *plsu;
struct ospf_db *pdb;
struct ep *pepout, *ospflstmpl(struct ospf_if *);
unsigned i, nlsr, maxlsapp;
if (pif->if_state <= IFS_WAITING)
return;
pnb = &pif->if_nbtab[1];
po = (struct ospf *)((char *)pip+IP_HLEN(pip));
for (i=0; i<MAXNBR; ++i, ++pnb)
if (pnb->nb_rid == po->ospf_rid)
break;
if (i == MAXNBR || pnb->nb_state < NBS_EXCHNG)
return;
maxlsapp = (nif[pep->ep_ifn].ni_mtu - IPMHLEN - MINLSULEN);
maxlsapp /= (LSSHDRLEN + MAXLSDLEN);
pepout = ospflstmpl(pif);
if (pepout == 0)
return;
pipout = (struct ip *)pepout->ep_data;
poout = (struct ospf *)pipout->ip_data;
plsu = (struct ospf_lsu *)poout->ospf_data;
nlsr = (po->ospf_len - MINHDRLEN) / sizeof (struct ospf_lsr);
plsr = (struct ospf_lsr *)po->ospf_data;
for (i=0; i<nlsr; ++i, ++plsr) {
pdb = db_lookup(pif->if_area, plsr->lsr_type,
plsr->lsr_lsid);
if (pdb == 0) {
freebuf(pepout);
nb_mismatch(pif, pnb);
return;
}
if (plsu->lsu_nads >= maxlsapp) {
lsa_send(pif, pip->ip_src, pepout);
if (!(pepout = ospflstmpl(pif)))
return;
pipout = (struct ip *)pepout->ep_data;
poout = (struct ospf *)pipout->ip_data;
plsu = (struct ospf_lsu *)poout->ospf_data;
}
lsa_add(pif, pepout, pdb);
}
lsa_send(pif, pip->ip_src, pepout);
}
开发者ID:m3y54m,项目名称:32bitmicro,代码行数:57,代码来源:lsr_in.c
示例17: ged_wcodes
int
ged_wcodes(struct ged *gedp, int argc, const char *argv[])
{
int i;
int status;
FILE *fp;
struct directory *dp;
static const char *usage = "filename object(s)";
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
/* initialize result */
bu_vls_trunc(gedp->ged_result_str, 0);
/* must be wanting help */
if (argc == 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_HELP;
}
if (argc == 2) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_ERROR;
}
if ((fp = fopen(argv[1], "w")) == NULL) {
bu_vls_printf(gedp->ged_result_str, "%s: Failed to open file - %s",
argv[0], argv[1]);
return GED_ERROR;
}
path = (struct directory **)bu_calloc(PATH_STEP, sizeof(struct directory *), "alloc initial path");
path_capacity = PATH_STEP;
for (i = 2; i < argc; ++i) {
if ((dp = db_lookup(gedp->ged_wdbp->dbip, argv[i], LOOKUP_NOISY)) != RT_DIR_NULL) {
status = wcodes_printcodes(gedp, fp, dp, 0);
if (status == GED_ERROR) {
(void)fclose(fp);
return GED_ERROR;
}
}
}
(void)fclose(fp);
bu_free(path, "dealloc path");
path = NULL;
path_capacity = 0;
return GED_OK;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:53,代码来源:wcodes.c
示例18: ged_bot_flip
int
ged_bot_flip(struct ged *gedp, int argc, const char *argv[])
{
int i;
struct directory *dp;
struct rt_db_internal intern;
struct rt_bot_internal *bot;
static const char *usage = "bot [bot2 bot3 ...]";
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_READ_ONLY(gedp, GED_ERROR);
GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
/* initialize result */
bu_vls_trunc(gedp->ged_result_str, 0);
/* must be wanting help */
if (argc == 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_HELP;
}
for (i = 1; i < argc; ++i) {
/* Skip past any path elements */
char *obj = (char *)bu_calloc(strlen(argv[i]), sizeof(char), "ged_bot_flip obj");
bu_basename(obj, argv[i]);
if (BU_STR_EQUAL(obj, ".")) {
/* malformed path, lookup using exactly what was provided */
bu_free(obj, "free bu_basename");
obj = bu_strdup(argv[i]);
}
if ((dp = db_lookup(gedp->ged_wdbp->dbip, obj, LOOKUP_QUIET)) == RT_DIR_NULL) {
bu_vls_printf(gedp->ged_result_str, "%s: db_lookup(%s) error\n", argv[0], obj);
} else {
GED_DB_GET_INTERNAL(gedp, &intern, dp, bn_mat_identity, &rt_uniresource, GED_ERROR);
if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD || intern.idb_minor_type != DB5_MINORTYPE_BRLCAD_BOT) {
bu_vls_printf(gedp->ged_result_str, "%s: %s is not a BOT solid!\n", argv[0], obj);
} else {
bot = (struct rt_bot_internal *)intern.idb_ptr;
rt_bot_flip(bot);
GED_DB_PUT_INTERNAL(gedp, dp, &intern, gedp->ged_wdbp->wdb_resp, GED_ERROR);
}
}
bu_free(obj, "free obj");
}
return GED_OK;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:52,代码来源:bot_flip.c
示例19: get_de_pointers
int
get_de_pointers(union tree *tp, struct directory *dp, int de_len,
int *de_pointers)
{
RT_CK_TREE(tp);
RT_CK_DIR(dp);
switch (tp->tr_op) {
case OP_UNION:
case OP_SUBTRACT:
case OP_INTERSECT:
get_de_pointers(tp->tr_b.tb_left, dp, de_len, de_pointers);
get_de_pointers(tp->tr_b.tb_right, dp, de_len, de_pointers);
break;
case OP_DB_LEAF: {
struct directory *dp_M;
dp_M = db_lookup(DBIP, tp->tr_l.tl_name, LOOKUP_NOISY);
if (dp_M == RT_DIR_NULL)
return 1;
if (dp_M->d_uses >= 0) {
bu_log("g-iges: member (%s) in combination (%s) has not been written to iges file\n", dp_M->d_namep, dp->d_namep);
de_pointers[de_pointer_number++] = 0;
return 1;
}
if (tp->tr_l.tl_mat && !bn_mat_is_identity(tp->tr_l.tl_mat)) {
/* write a solid instance entity for this member
with a pointer to the new matrix */
if (!NEAR_ZERO(tp->tr_l.tl_mat[15] - 1.0, tol.dist)) {
/* scale factor is not 1.0, IGES can't handle it.
go ahead and write the solid instance anyway,
but warn the user twice */
bu_log("g-iges WARNING: member (%s) of combination (%s) is scaled, IGES cannot handle this\n", dp_M->d_namep, dp->d_namep);
scale_error++;
}
de_pointers[de_pointer_number++] = write_solid_instance(-dp_M->d_uses, tp->tr_l.tl_mat, fp_dir, fp_param);
} else
de_pointers[de_pointer_number++] = (-dp_M->d_uses);
if (dp_M->d_nref)
comb_form = 1;
}
break;
default:
bu_log("Unrecognized operator in combination!\n");
return 1;
}
return 0;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:51,代码来源:g-iges.c
示例20: incr_refs
void
incr_refs(struct db_i *dbip, struct rt_comb_internal *comb, union tree *tp, void *UNUSED(user_ptr1), void *UNUSED(user_ptr2), void *UNUSED(user_ptr3), void *UNUSED(user_ptr4))
{
struct directory *dp;
RT_CK_COMB(comb);
RT_CK_DBI(dbip);
RT_CK_TREE(tp);
if ((dp = db_lookup(dbip, tp->tr_l.tl_name, LOOKUP_NOISY)) == RT_DIR_NULL)
return;
dp->d_nref++;
}
开发者ID:kanzure,项目名称:brlcad,代码行数:14,代码来源:g-iges.c
注:本文中的db_lookup函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论