Yake - Community Forum
September 10, 2010, 09:56:42 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: News #2: Feel free to pester the members of the Community Support! Look out for blue stars! Smiley
 
   Home   Help Search Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: snippet: macros with n 'default arguments'  (Read 1196 times)
Meta
Administrator
Hero Member
*****
Posts: 508



View Profile
« on: November 19, 2004, 10:45:00 PM »

Code:
#define DO(CLASS, PARENT, BINDING1, BINDING2) \
BINDING1##_default(CLASS, PARENT) \
BINDING2##_default(CLASS, PARENT)

#define _default(CLASS, PARENT) std::cout << "_default\n";
#define replicate_default(CLASS, PARENT) std::cout << "replicate_default\n";
#define lua_default(CLASS, PARENT) std::cout << "lua_default\n";

int main()
{
   DO(Class, NullClass)
   DO(Class, NullClass, replicate)
   DO(Class, NullClass, lua)
   DO(Class, NullClass, lua, replicate)
   return 0;
}


Had an small idea ... maybe somebody can use it, I can! Smiley
Logged

"Perfection is achieved only on the point of collapse." - C.N. Parkinson
Meta
Administrator
Hero Member
*****
Posts: 508



View Profile
« Reply #1 on: November 20, 2004, 01:59:01 AM »

Code:
#define PROPERTY_(TYPE, NAME, BINDING_OR_OBSERVER1, BINDING_OR_OBSERVER2) \
private:\
    FIELD(private, TYPE, m_##NAME);\
    TYPE get_##NAME() const {\
        return m_##NAME;\
    }\
    void set_##NAME(TYPE value) {\
        m_##NAME = value;\
    }\
BINDING_OR_OBSERVER1##_BINDING_PROPERTY_DEFAULT(TYPE, NAME)\
BINDING_OR_OBSERVER2##_BINDING_PROPERTY_DEFAULT(TYPE, NAME)\
\
NET_PROPERTY(TYPE, NAME, BINDING_OR_OBSERVER1##_OBSERVER_PROPERTY_DEFAULT(TYPE, NAME), BINDING_OR_OBSERVER2##_OBSERVER_PROPERTY_DEFAULT(TYPE, NAME))

#define _BINDING_PROPERTY_DEFAULT(TYPE, NAME)  // nothing
#define lua_BINDING_PROPERTY_DEFAULT(TYPE, NAME) LUA_DEFAULT_PROPERTY(TYPE, NAME)
#define net_BINDING_PROPERTY_DEFAULT(TYPE, NAME)  // nothing

#define _OBSERVER_PROPERTY_DEFAULT(TYPE, NAME)  // nothing
#define lua_OBSERVER_PROPERTY_DEFAULT(TYPE, NAME)  // nothing
#define net_OBSERVER_PROPERTY_DEFAULT(TYPE, NAME) m_observers.push_back(new network_observer<TYPE>());


Some kind of spezialization.
Logged

"Perfection is achieved only on the point of collapse." - C.N. Parkinson
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!
Page created in 0.075 seconds with 19 queries.