本文整理汇总了C++中bu_vls_printf函数的典型用法代码示例。如果您正苦于以下问题:C++ bu_vls_printf函数的具体用法?C++ bu_vls_printf怎么用?C++ bu_vls_printf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bu_vls_printf函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ged_get_eyemodel
/*
* Returns the views eyemodel
*
* Usage:
* get_eyemodel
*
*/
int
ged_get_eyemodel(struct ged *gedp, int argc, const char *argv[])
{
quat_t quat;
vect_t eye_model;
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_DRAWABLE(gedp, GED_ERROR);
GED_CHECK_VIEW(gedp, GED_ERROR);
GED_CHECK_ARGC_GT_0(gedp, argc, GED_ERROR);
/* initialize result */
bu_vls_trunc(gedp->ged_result_str, 0);
if (argc != 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
return GED_ERROR;
}
_ged_rt_set_eye_model(gedp, eye_model);
quat_mat2quat(quat, gedp->ged_gvp->gv_rotation);
bu_vls_printf(gedp->ged_result_str, "viewsize %.15e;\n", gedp->ged_gvp->gv_size);
bu_vls_printf(gedp->ged_result_str, "orientation %.15e %.15e %.15e %.15e;\n",
V4ARGS(quat));
bu_vls_printf(gedp->ged_result_str, "eye_pt %.15e %.15e %.15e;\n",
eye_model[X], eye_model[Y], eye_model[Z]);
return GED_OK;
}
示例2: ged_echo
int
ged_echo(struct ged *gedp, int argc, const char *argv[])
{
int i;
static const char *usage = "args";
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 (i = 1; i < argc; i++) {
bu_vls_printf(gedp->ged_result_str, "%s%s", i == 1 ? "" : " ", argv[i]);
}
bu_vls_printf(gedp->ged_result_str, "\n");
return GED_OK;
}
示例3: str2mm
/*
* Validate points data file unit string and output conversion factor
* to millimeters. If string is not a standard units identifier, the
* function assumes a custom conversion factor was specified. A valid
* null terminated string is expected as input. The function returns
* GED_ERROR if the unit string is invalid or if null pointers were
* passed to the function.
*/
int
str2mm(const char *units_string, double *conv_factor, struct bu_vls *ged_result_str)
{
struct bu_vls str = BU_VLS_INIT_ZERO;
double tmp_value = 0.0;
char *endp = (char *)NULL;
int ret = GED_OK;
if ((units_string == (char *)NULL) || (conv_factor == (double *)NULL)) {
bu_vls_printf(ged_result_str, "NULL pointer(s) passed to function 'str2mm'.\n");
ret = GED_ERROR;
} else {
bu_vls_strcat(&str, units_string);
bu_vls_trimspace(&str);
tmp_value = strtod(bu_vls_addr(&str), &endp);
if ((endp != bu_vls_addr(&str)) && (*endp == '\0')) {
/* convert to double success */
*conv_factor = tmp_value;
} else if ((tmp_value = bu_mm_value(bu_vls_addr(&str))) > 0.0) {
*conv_factor = tmp_value;
} else {
bu_vls_printf(ged_result_str, "Invalid units string '%s'\n", units_string);
ret = GED_ERROR;
}
}
bu_vls_free(&str);
return ret;
}
示例4: ged_form
int
ged_form(struct ged *gedp, int argc, const char *argv[])
{
const struct rt_functab *ftp;
static const char *usage = "type";
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 ((ftp = rt_get_functab_by_label(argv[1])) == NULL) {
bu_vls_printf(gedp->ged_result_str, "There is no geometric object type \"%s\".", argv[1]);
return GED_ERROR;
}
if (!ftp->ft_form) {
return GED_ERROR;
}
return ftp->ft_form(gedp->ged_result_str, ftp);
}
示例5: pr_wait_status
/*
* P R _ W A I T _ S T A T U S
*
* Interpret the status return of a wait() system call,
* for the edification of the watching luser.
* Warning: This may be somewhat system specific, most especially
* on non-UNIX machines.
*/
static void
pr_wait_status(Tcl_Interp *interp,
int status)
{
int sig = status & 0x7f;
int core = status & 0x80;
int ret = status >> 8;
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
if (status == 0) {
Tcl_AppendResult(interp, "Normal exit\n", (char *)NULL);
return;
}
bu_vls_printf(&tmp_vls, "Abnormal exit x%x", status);
if (core)
bu_vls_printf(&tmp_vls, ", core dumped");
if (sig)
bu_vls_printf(&tmp_vls, ", terminating signal = %d", sig);
else
bu_vls_printf(&tmp_vls, ", return (exit) code = %d", ret);
Tcl_AppendResult(interp, bu_vls_addr(&tmp_vls), "\n", (char *)NULL);
bu_vls_free(&tmp_vls);
}
示例6: save_comb
static const char *
save_comb(struct ged *gedp, struct directory *dpold)
{
/* Save a combination under a temporary name */
struct directory *dp;
struct rt_db_internal intern;
/* Make a new name */
const char *name = mktemp_comb(gedp, tmpcomb);
if (rt_db_get_internal(&intern, dpold, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) {
bu_vls_printf(gedp->ged_result_str, "save_comb: Database read error, aborting\n");
return NULL;
}
if ((dp = db_diradd(gedp->ged_wdbp->dbip, name, RT_DIR_PHONY_ADDR, 0, dpold->d_flags, (genptr_t)&intern.idb_type)) == RT_DIR_NULL) {
bu_vls_printf(gedp->ged_result_str, "save_comb: Cannot save copy of %s, no changed made\n", dpold->d_namep);
return NULL;
}
if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) < 0) {
bu_vls_printf(gedp->ged_result_str, "save_comb: Cannot save copy of %s, no changed made\n", dpold->d_namep);
return NULL;
}
return name;
}
示例7: fbo_getcursor_tcl
/*
*
* Usage:
* procname getcursor
*/
HIDDEN int
fbo_getcursor_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char **argv)
{
struct fb_obj *fbop = (struct fb_obj *)clientData;
int status;
int mode;
int x, y;
struct bu_vls vls;
if (argc != 2) {
bu_vls_init(&vls);
bu_vls_printf(&vls, "helplib fb_getcursor");
Tcl_Eval(interp, bu_vls_addr(&vls));
bu_vls_free(&vls);
return TCL_ERROR;
}
status = fb_getcursor(fbop->fbo_fbs.fbs_fbp, &mode, &x, &y);
if (status == 0) {
bu_vls_init(&vls);
bu_vls_printf(&vls, "%d %d %d", mode, x, y);
Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL);
bu_vls_free(&vls);
return TCL_OK;
}
return TCL_ERROR;
}
示例8: ged_zoom
int
ged_zoom(struct ged *gedp, int argc, const char *argv[])
{
int ret;
double sf = 1.0;
GED_CHECK_VIEW(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 != 2) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s scale_factor", argv[0]);
return (argc == 1) ? GED_HELP : GED_ERROR;
}
/* get the scale factor */
ret = sscanf(argv[1], "%lf", &sf);
if (ret != 1 || sf < SMALL_FASTF || sf > INFINITY) {
bu_vls_printf(gedp->ged_result_str, "ERROR: bad scale factor [%s]", argv[1]);
return GED_ERROR;
}
return zoom(gedp, sf);
}
示例9: create_cyl
/* FIXME: not verified in the least bit */
static int
create_cyl(point_line_t **plta, int count) {
int i;
point_line_t *plt = NULL;
const char *result;
struct bu_vls vls = BU_VLS_INIT_ZERO;
struct bu_vls vls2 = BU_VLS_INIT_ZERO;
for (i = 0; i < count; i++) {
plt = &(*plta)[i];
if (plt && plt->type)
bu_vls_printf(&vls, "{ %f %f %f } ", plt->val[X], plt->val[Y], plt->val[Z]);
}
bu_vls_printf(&vls2, "cylinder { %s }", bu_vls_addr(&vls));
#if PRINT_SCRIPT
fprintf(stderr, "%s\n", bu_vls_addr(&vls2));
#endif
#if RUN_SCRIPT
Tcl_Eval(twerp, bu_vls_addr(&vls2));
result = Tcl_GetStringResult(twerp);
if (result && result[0] != '\0')
bu_log("create_cyl failure: %s\n", result);
else
bu_log("create_cyl created\n");
#endif
return 1;
}
示例10: create_cyl
/* FIXME: not verified in the least bit */
static int
create_cyl(point_line_t **plta, int count) {
int i;
point_line_t *plt = NULL;
struct bu_vls vls;
struct bu_vls vls2;
bu_vls_init(&vls);
bu_vls_init(&vls2);
for (i = 0; i < count; i++) {
plt = &(*plta)[i];
if (plt && plt->type)
bu_vls_printf(&vls, "{ %f %f %f } ", plt->val[X], plt->val[Y], plt->val[Z]);
}
bu_vls_printf(&vls2, "cylinder { %S }", &vls);
#if PRINT_SCRIPT
fprintf(stderr, "%s\n", bu_vls_addr(&vls2));
#endif
#if RUN_SCRIPT
Tcl_Eval(twerp, bu_vls_addr(&vls2));
if (twerp->result[0] != '\0')
bu_log("create_cyl failure: %s\n", twerp->result);
else
bu_log("create_cyl created\n");
#endif
return 1;
}
示例11: ged_debuglib
int
ged_debuglib(struct ged *gedp, int argc, const char *argv[])
{
static const char *usage = "[hex_code]";
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);
if (argc > 2) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_ERROR;
}
/* get librt's debug bit vector */
if (argc == 1) {
bu_vls_printb(gedp->ged_result_str, "Possible flags", 0xffffffffL, DEBUG_FORMAT);
bu_vls_printf(gedp->ged_result_str, "\n");
} else {
/* set librt's debug bit vector */
if (sscanf(argv[1], "%x", (unsigned int *)&rt_g.debug) != 1) {
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
return GED_ERROR;
}
if (RT_G_DEBUG) bu_debug |= BU_DEBUG_COREDUMP;
}
bu_vls_printb(gedp->ged_result_str, "librt RT_G_DEBUG", RT_G_DEBUG, DEBUG_FORMAT);
bu_vls_printf(gedp->ged_result_str, "\n");
return GED_OK;
}
示例12: 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;
}
}
示例13: primary
/* The code below starts the part that still needs reworking for the
* new geometry based tokens/logic */
static int
primary(enum token n, struct exists_data *ed)
{
enum token nn;
int res;
if (n == EOI)
return 0; /* missing expression */
if (n == LPAREN) {
ed->t_wp_op = NULL;
if ((nn = t_lex(*++(ed->t_wp), ed)) == RPAREN)
return 0; /* missing expression */
res = oexpr(nn, ed);
if (t_lex(*++(ed->t_wp), ed) != RPAREN) {
bu_vls_printf(ed->message , "closing paren expected");
return 0;
}
return res;
}
if (ed->t_wp_op && ed->t_wp_op->op_type == UNOP) {
/* unary expression */
if (!ed->no_op) {
if (*++(ed->t_wp) == NULL) {
bu_vls_printf(ed->message , "argument expected");
return 0;
}
}
switch (n) {
case OCOMB:
bu_log("comb case");
/*return is_comb();*/
case OEXIST:
return db_object_exists(ed);
/*return db_lookup();*/
case ONULL:
bu_log("null case");
/*return is_null();*/
case ONNULL:
/* default case */
return db_object_exists_and_non_null(ed);
case OPRIM:
bu_log("primitive case");
/*return is_prim();*/
case OBVOL:
bu_log("bounding volume case");
/*return has_vol();*/
default:
/* not reached */
return 0;
}
}
if (t_lex(ed->t_wp[1], ed), ed->t_wp_op && ed->t_wp_op->op_type == BINOP) {
return binop(ed);
}
return 0;
}
示例14: count_nodes
static int
count_nodes(struct ged *gedp, char *line)
{
char *ptr;
char *name;
char relation;
int node_count=0;
/* sanity */
if (line == NULL)
return 0;
ptr = strtok(line, _delims);
while (ptr) {
/* First non-white is the relation operator */
relation = (*ptr);
if (relation != '+' && relation != 'u' && relation != '-') {
bu_vls_printf(gedp->ged_result_str, " %c is not a legal operator\n", relation);
return -1;
}
/* Next must be the member name */
name = strtok((char *)NULL, _delims);
if (name == NULL) {
bu_vls_printf(gedp->ged_result_str, " operand name missing\n");
return -1;
}
ptr = strtok((char *)NULL, _delims);
/*
* If this token is not a boolean operator, then it must be the start
* of a matrix which we will skip.
*/
if (ptr && !((*ptr == 'u' || *ptr == '-' || *ptr == '+') &&
*(ptr+1) == '\0')) {
int k;
/* skip past matrix, k = 1 because we already have the first value */
for (k = 1; k < 16; k++) {
ptr = strtok((char *)NULL, _delims);
if (!ptr) {
bu_vls_printf(gedp->ged_result_str, "expecting a matrix\n");
return -1;
}
}
/* get the next relational operator on the current line */
ptr = strtok((char *)NULL, _delims);
}
node_count++;
}
return node_count;
}
示例15: rt_pr_pt_vls
void
rt_pr_pt_vls(struct bu_vls *v, const struct rt_i *rtip, register const struct partition *pp)
{
register const struct soltab *stp;
register struct seg **segpp;
RT_CHECK_RTI(rtip);
RT_CHECK_PT(pp);
BU_CK_VLS(v);
bu_log_indent_vls(v);
bu_vls_printf(v, "%p: PT ", (void *)pp);
stp = pp->pt_inseg->seg_stp;
bu_vls_printf(v, "%s (%s#%ld) ",
stp->st_dp->d_namep,
OBJ[stp->st_id].ft_name+3,
stp->st_bit);
stp = pp->pt_outseg->seg_stp;
bu_vls_printf(v, "%s (%s#%ld) ",
stp->st_dp->d_namep,
OBJ[stp->st_id].ft_name+3,
stp->st_bit);
bu_vls_printf(v, "(%g, %g)",
pp->pt_inhit->hit_dist, pp->pt_outhit->hit_dist);
if (pp->pt_inflip) bu_vls_strcat(v, " Iflip");
if (pp->pt_outflip) bu_vls_strcat(v, " Oflip");
bu_vls_strcat(v, "\n");
rt_pr_hit_vls(v, " In", pp->pt_inhit);
rt_pr_hit_vls(v, " Out", pp->pt_outhit);
bu_log_indent_vls(v);
bu_vls_strcat(v, " Primitives: ");
for (BU_PTBL_FOR(segpp, (struct seg **), &pp->pt_seglist)) {
stp = (*segpp)->seg_stp;
RT_CK_SOLTAB(stp);
bu_vls_strcat(v, stp->st_dp->d_namep);
bu_vls_strcat(v, ", ");
}
bu_vls_strcat(v, "\n");
bu_log_indent_vls(v);
bu_vls_strcat(v, " Untrimmed Segments spanning this interval:\n");
bu_log_indent_delta(4);
for (BU_PTBL_FOR(segpp, (struct seg **), &pp->pt_seglist)) {
RT_CK_SEG(*segpp);
rt_pr_seg_vls(v, *segpp);
}
bu_log_indent_delta(-4);
if (pp->pt_regionp) {
RT_CK_REGION(pp->pt_regionp);
bu_log_indent_vls(v);
bu_vls_printf(v, " Region: %s\n", pp->pt_regionp->reg_name);
}
}