//========================================================================= // How to create and use a script defined black box //========================================================================= //========================================================================= #include //========================================================================= //========================================================================= int main(int argv, char* argc[]) { // To track all ... //bbtk::MessageManager::SetMessageLevel("all",9); try { // Create an interpreter bbtk::Interpreter::Pointer I = bbtk::Interpreter::New(); // We tell the interpreter to throw exceptions on error I->SetThrow(true); // Interpret the file supposed to define a box called 'Processing' I->InterpretFile("bbProcessing.bbs"); // Create an instance 'p' of the 'Processing' box bbtk::BlackBox::Pointer p = I->GetExecuter()->GetFactory()->NewBlackBox("Processing","p"); // Prompt the user std::cout << "Enter a number : "; double num = 0; std::cin >> num; // Set its input 'In' to num p->bbSetInput("In",num); // Execute it p->bbExecute(); // Print out the output 'Out': // 1) We get the output with the generic bbGetOutput method. // 2) It returns a bbtk::Data which can store any data type // 3) We get the value of the data as a double using get() // (because we know it's a double !) double v = p->bbGetOutput("Out").get(); std::cout << num << "+1 = "<InterpretLine("new Processing a"); // We get a the black box "a" in the workspace: bbtk::BlackBox::Pointer a = I->GetExecuter()->GetWorkspace()->GetPrototype()->bbGetBlackBox("a"); // Then the same as previously... a->bbSetInput("In",num); a->bbExecute(); double w = p->bbGetOutput("Out").get(); std::cout << "In case you did not understand:"<