Adjectives defined by an I7 phrase written out longhand.

§1. These are adjectives where a phrase written out explicitly will determine the answer, like so:

Definition: A container is possessed by the Devil:
    if its carrying capacity is 666, decide yes;
    decide no.

Adjectival families are mostly chosen by being claimed because of some special wording, but an adjective falls into this family when AdjectivalDefinitionFamily::given_body sees the body of the definition phrase and calls AdjectivesByPhrase::define_adjective_by_phrase to force the issue.

adjective_meaning_family *phrase_amf = NULL;  defined by an explicit but nameless phrase

void AdjectivesByPhrase::start(void) {
    phrase_amf = AdjectiveMeanings::new_family(6);
    METHOD_ADD(phrase_amf, CLAIM_DEFINITION_SENTENCE_ADJM_MTID, AdjectivesByPhrase::claim_definition);
}

int AdjectivesByPhrase::is_defined_by_phrase(adjective_meaning *am) {
    if ((am) && (am->family == phrase_amf)) return TRUE;
    return FALSE;
}

void AdjectivesByPhrase::define_adjective_by_phrase(parse_node *p, id_body *idb,
    wording *CW, kind **K) {
    definition *def;
    *CW = EMPTY_WORDING; *K = K_object;
    if (idb == NULL) return;
    if (Node::is(p->next, DEFN_CONT_NT)) p = p->next;
    LOOP_OVER(def, definition)
        if ((def->node == p) &&
            (AdjectivesByPhrase::is_defined_by_phrase(def->am_of_def))) {
            RTAdjectives::set_schemas_for_I7_phrase(def->am_of_def, idb);
            *CW = def->domain_calling;
            AdjectiveMeaningDomains::determine_if_possible(def->am_of_def);
            *K = AdjectiveMeaningDomains::get_kind(def->am_of_def);
            if ((*K == NULL) || (Kinds::Behaviour::is_object(*K))) *K = K_object;
            return;
        }
}

int AdjectivesByPhrase::claim_definition(adjective_meaning_family *f,
    adjective_meaning **result, parse_node *q,
    int sense, wording AW, wording DNW, wording CONW, wording CALLW) {
    if (sense != 0) return FALSE;
    definition *def = AdjectivalDefinitionFamily::new_definition(q);
    adjective_meaning *am = AdjectiveMeanings::new(phrase_amf,
        STORE_POINTER_definition(def), Node::get_text(q));
    def->domain_calling = CALLW;
    def->am_of_def = am;
    adjective *adj = Adjectives::declare(AW, NULL);
    AdjectiveAmbiguity::add_meaning_to_adjective(am, adj);
    AdjectiveMeanings::perform_task_via_function(am, TEST_ATOM_TASK);
    AdjectiveMeaningDomains::set_from_text(am, DNW);
    *result = am;
    return TRUE;
}