473,320 Members | 1,988 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

help with automatic code generation

heard that we can do automatic code generation using macros, but not
sure how can I pursue this. Here is my problem.

In my env, I have class A,B and C. All of them has constructors, and
few common methods, like reset, and execute.

now my env(main) class actually is where I am creating this objects.
in .h
A myA;
B myB;
C myC;

and later I am calling methods in my .C file
myA.reset();
myB.reset();
myC.reset();
myA.execute();
.....
myC.execute();

now let say if I add Class D, I have to modify my env.h and env.C. And
I am trying to prevent that.
one way i was thinking of doing this, is to write macros:
so I can do:
REGISTER_OBJECT("A","myA");
REGISTER_RESET("A","myA",reset);
REGISTER_EXECUTE("A", "myA", execute)
.............

May be using macros might be one way to do this. I am really confuse
how I can I write this macros. Please guide me.

Thank you,

Jan 31 '07 #1
6 1916
JoshforRefugee <an*****@yahoo.comwrote:
heard that we can do automatic code generation using macros, but not
sure how can I pursue this. Here is my problem.

In my env, I have class A,B and C. All of them has constructors, and
few common methods, like reset, and execute.
Don't bother with macros for things that can be done with simple
OO techniques. Your classes should probably derive from a base
class that declares the common methods as virtuals.
Jan 31 '07 #2
problem is I own env class, and my group owns other classes. and I
don't want to be bother by creating class and registering its
function, every time someone adds new class or wants to create new
object for same class.

how can I do this?

Jan 31 '07 #3
JoshforRefugee wrote:
>
how can I do this?
What do you want - new names for single class? Or what?

--
Maksim A Polyanin
Jan 31 '07 #4
just an interface for users so that they can register their classes
with my "main/env" class.

What I am doing, is collecting all classes out there, written by users
and constructing objects for them, and calling their methods (reset,
run). Users derived their class from base object class. Right now,
when someone adds new class, I have to open up "main/env" class and
create object for new class, and call common methods (reset, run) for
that new object.

My goal is to not manually touch "main/evn" class, everytime someone
creates new class. Let have some hooks that users can use so that they
can create these class and reset/run methods will be call for
them.

Jan 31 '07 #5
On Jan 31, 7:16 pm, "JoshforRefugee" <anki...@yahoo.comwrote:
just an interface for users so that they can register their classes
with my "main/env" class.

What I am doing, is collecting all classes out there, written by users
and constructing objects for them, and calling their methods (reset,
run). Users derived their class from base object class. Right now,
when someone adds new class, I have to open up "main/env" class and
create object for new class, and call common methods (reset, run) for
that new object.

My goal is to not manually touch "main/evn" class, everytime someone
creates new class. Let have some hooks that users can use so that they
can create these class and reset/run methods will be call for
them.
Can't you do something like this:

class env {
std::vector<Base*classes;
public:
void register(Base& b) {
classes.push_back(&b);
}
void resetAll() {
for (size_t i = 0; i < classes.size(); ++i)
classes[i]->reset();
}
};

I kind of assume here that you'll only have one instance of env (a
singleton comes to mind) but even if you don't you might be able to
use this approach. The idea is that the new classes registers
themselves with your env instance either when constructed or soon
after.

--
Erik Wikström

Feb 1 '07 #6
that is good help. Thank you Erik.
that will take care of registering functions for new classes.
How about creating object for this class. Can I automate that?

so now in my top class, where I am doing

class top {
env myEnv;
A myA;
B myB;
C myC; //can I automate this creating
public:
void run() {
myEnv.resetAll();
myEnv.execute();
}

};

something like this in my classes will be very useful:

DECLARE (A, "myA");
DECLARE (A, "myAA");
class A {
.......

}

DECLARE(B, "myB");
class B {
....
}

so basically user has control how many objects to create.
Feb 1 '07 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Rasmus Fogh | last post by:
Someone raised the question of automatic code generation a few weeks back. And yes, we (CCPN) are using automatic Python code generation in a major way. Basically we are making data models in...
5
by: ArShAm | last post by:
Hi there Please help me to optimize this code for speed I added /O2 to compiler settings I added /Oe to compiler settings for accepting register type request , but it seems that is not allowed...
15
by: Kannan Goundan | last post by:
Maintaining a C++ header file can be painful. I want a way to automatically generate header files from the implementation file. Does anybody know of a program that does this? If not, I'd like...
2
by: Paul M | last post by:
Hi there, can anyone help me with this one.... i have a page which is in normal english format, but when i wanna change it to Russian format text, i set the Culture code, but it still remains...
4
by: Petterson Mikael | last post by:
Hi, Anyone out there that knows of a automatic test generation tool for cpp? Another requirement is that the test results should be presented in xml. All hints appreciated. cheers, ...
6
by: Bill foust | last post by:
I'm running into a situation there I think an operator overload would solve the issue, but I'm unable to make it work for some reason. If anyone can help here I would appreciate it. I have a...
1
by: woessner | last post by:
I have a lot of classes which derive from a common base class. I want to be able to clone objects of these types so I have given the base class a pure virtual clone method. The derived classes...
0
by: JoshforRefugee | last post by:
heard that we can do automatic code generation using macros, but not sure how can I pursue this. Here is my problem. In my env, I have class A,B and C. All of them has constructors, and few...
25
by: sidd | last post by:
In the following code: int i = 5; ---it goes to .data segment int j; ---it goes to bss segment int main() { int c; int i = 5; ---stack
34
by: =?ISO-8859-1?Q?Marcel_M=FCller?= | last post by:
Hi, is there a way to avoid the automatic copy constructor generation. I do not want the object to be non-copyable. I simply do not want that copying is done by the default copy constructor. But...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.