static int dde_initialise() { if ( ddeInst == (DWORD)NULL ) { if (DdeInitialize(&ddeInst, (PFNCALLBACK)DdeCallback, APPCLASS_STANDARD|CBF_FAIL_ADVISES|CBF_FAIL_POKES| CBF_SKIP_REGISTRATIONS|CBF_SKIP_UNREGISTRATIONS, 0L) != DMLERR_NO_ERROR) { ddeInst = (DWORD) -1; return dde_warning("initialise"); } MODULE_dde = lookupModule(PL_new_atom("win_dde")); FUNCTOR_dde_connect3 = lookupFunctorDef(PL_new_atom("$dde_connect"), 3); FUNCTOR_dde_connect_confirm3 = lookupFunctorDef(PL_new_atom("$dde_connect_confirm"), 3); FUNCTOR_dde_disconnect1 = lookupFunctorDef(PL_new_atom("$dde_disconnect"), 1); FUNCTOR_dde_request4 = lookupFunctorDef(PL_new_atom("$dde_request"), 4); FUNCTOR_dde_execute3 = lookupFunctorDef(PL_new_atom("$dde_execute"), 3); FUNCTOR_error1 = lookupFunctorDef(ATOM_error, 1); } succeed; }
static void dde_init_constants(void) { static int done = FALSE; if ( !done ) /* no worries if this happens twice */ { MODULE_dde = lookupModule(PL_new_atom("win_dde")); FUNCTOR_dde_connect3 = lookupFunctorDef(PL_new_atom("$dde_connect"), 3); FUNCTOR_dde_connect_confirm3 = lookupFunctorDef(PL_new_atom("$dde_connect_confirm"), 3); FUNCTOR_dde_disconnect1 = lookupFunctorDef(PL_new_atom("$dde_disconnect"), 1); FUNCTOR_dde_request4 = lookupFunctorDef(PL_new_atom("$dde_request"), 4); FUNCTOR_dde_execute3 = lookupFunctorDef(PL_new_atom("$dde_execute"), 3); FUNCTOR_error1 = lookupFunctorDef(ATOM_error, 1); done = TRUE; } }
word pl_write_term3(term_t stream, term_t term, term_t opts) { GET_LD bool quoted = FALSE; bool ignore_ops = FALSE; int numbervars = -1; /* not set */ bool portray = FALSE; term_t gportray = 0; bool bqstring = truePrologFlag(PLFLAG_BACKQUOTED_STRING); int charescape = -1; /* not set */ atom_t mname = ATOM_user; atom_t attr = ATOM_nil; atom_t blobs = ATOM_nil; int priority = 1200; bool partial = FALSE; bool cycles = TRUE; term_t varnames = 0; int local_varnames; IOSTREAM *s = NULL; write_options options; int rc; memset(&options, 0, sizeof(options)); options.spacing = ATOM_standard; if ( !scan_options(opts, 0, ATOM_write_option, write_term_options, "ed, &ignore_ops, &numbervars, &portray, &gportray, &charescape, &options.max_depth, &mname, &bqstring, &attr, &priority, &partial, &options.spacing, &blobs, &cycles, &varnames) ) fail; if ( attr == ATOM_nil ) { options.flags |= LD->prolog_flag.write_attributes; } else { int mask = writeAttributeMask(attr); if ( !mask ) return PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_write_option, opts); options.flags |= mask; } if ( blobs != ATOM_nil ) { int mask = writeBlobMask(blobs); if ( mask < 0 ) return PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_write_option, opts); options.flags |= mask; } if ( priority < 0 || priority > OP_MAXPRIORITY ) { term_t t = PL_new_term_ref(); PL_put_integer(t, priority); return PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_operator_priority, t); } switch( options.spacing ) { case ATOM_standard: case ATOM_next_argument: break; default: { term_t t = PL_new_term_ref(); PL_put_atom(t, options.spacing); return PL_error(NULL, 0, NULL, ERR_DOMAIN, ATOM_spacing, t); } } options.module = lookupModule(mname); if ( charescape == TRUE || (charescape == -1 #ifndef __YAP_PROLOG__ && True(options.module, M_CHARESCAPE) #endif ) ) options.flags |= PL_WRT_CHARESCAPES; if ( gportray ) { options.portray_goal = gportray; if ( !put_write_options(opts, &options) || !PL_qualify(options.portray_goal, options.portray_goal) ) return FALSE; portray = TRUE; } if ( numbervars == -1 ) numbervars = (portray ? TRUE : FALSE); if ( quoted ) options.flags |= PL_WRT_QUOTED; if ( ignore_ops ) options.flags |= PL_WRT_IGNOREOPS; if ( numbervars ) options.flags |= PL_WRT_NUMBERVARS; if ( portray ) options.flags |= PL_WRT_PORTRAY; if ( bqstring ) options.flags |= PL_WRT_BACKQUOTED_STRING; if ( !cycles ) options.flags |= PL_WRT_NO_CYCLES; local_varnames = (varnames && False(&options, PL_WRT_NUMBERVARS)); BEGIN_NUMBERVARS(local_varnames); if ( varnames ) { if ( (rc=bind_varnames(varnames PASS_LD)) ) options.flags |= PL_WRT_VARNAMES; else goto out; } if ( !(rc=getTextOutputStream(stream, &s)) ) goto out; options.out = s; if ( !partial ) PutOpenToken(EOF, s); /* reset this */ if ( (options.flags & PL_WRT_QUOTED) && !(s->flags&SIO_REPPL) ) { s->flags |= SIO_REPPL; rc = writeTopTerm(term, priority, &options); s->flags &= ~SIO_REPPL; } else { rc = writeTopTerm(term, priority, &options); } out: END_NUMBERVARS(local_varnames); return (!s || streamStatus(s)) && rc; }