void __bro_id_init(BroID *id) { BroSObject *sobj = (BroSObject *) id; D_ENTER; /* First initialize parent */ __bro_object_init((BroObject *) id); /* Now hook our callbacks into the vtable */ sobj->read = (BroSObjectRead) __bro_id_read; sobj->write = (BroSObjectWrite) __bro_id_write; sobj->free = (BroSObjectFree) __bro_id_free; sobj->clone = (BroSObjectClone) __bro_id_clone; sobj->hash = (BroSObjectHash) __bro_id_hash; sobj->cmp = (BroSObjectCmp) __bro_id_cmp; sobj->type_id = SER_ID; /* And finally initialize our own stuff */ bro_string_init(&id->name); id->type = __bro_type_new(); /* For now we don't have attrs + val, these get * hooked in on demand. */ D_RETURN; }
static void __bro_val_init(BroVal *val) { BroSObject *sobj = (BroSObject *) val; D_ENTER; __bro_object_init((BroObject *) val); sobj->read = (BroSObjectRead) __bro_val_read; sobj->write = (BroSObjectWrite) __bro_val_write; sobj->free = (BroSObjectFree) __bro_val_free; sobj->clone = (BroSObjectClone) __bro_val_clone; sobj->hash = (BroSObjectHash) __bro_val_hash; sobj->cmp = (BroSObjectCmp) __bro_val_cmp; /* Note: we don't know yet what type_id we'll be using since * that will depend on the type object hooked into this val. * We take care of that when we're serializing this val out * in that case. */ sobj->type_id = SER_VAL; val->get_data = __bro_val_get; D_RETURN; }