SecurityCredentials *credentials = new SecurityCredentials(service_url, some_secret_key); credentials->IsValid(); credentials->ChangeKey(new_secret_key); // Does occur during a normal program as these change frequently. AlarmZone zone(credentials, 0); zone->IsArmed(); zone->SetArmed(true); AlarmZone another_zone(credentials, 1); another_zone->IsArmed(); another_zone->SetArmed(true); #### SecurityCredentials* SecurityCredentials::new(const char* service_url, const char* service_credentials) CODE: RETVAL = new SecurityCredentials(service_url, service_credentials); OUTPUT: RETVAL void SecurityCredentials::DESTROY() bool SecurityCredentials::IsValid() ... #### my $security_credentials = SecurityCredentials->new(service_url, some_secret_key); my $zone = AlarmZone->new($security_credentials, 1); $zone->IsArmed(); # Some time later #### sub SillySub { my $security_credentials = SecurityCredentials->new(service_url, some_secret_key); return AlarmZone->new($security_credentials, 1); }