import os
from xdress.utils import apiname

package = 'cppproj'
packagedir = 'cppproj'
includes = ['src']

plugins = ('xdress.autoall', 'xdress.pep8names', 'xdress.cythongen', 
           'xdress.stlwrap', )

extra_types = 'cppproj_extra_types'  # non-default value

dtypes = [
    ('map', 'str', 'int'),
    ('set', 'int'),
    'float32',
    ('vector', 'int32'),
    'ThreeNums',
    ]

stlcontainers = [
    ('pair', 'int', ('vector', 'int')),
    ('pair', 'int', 'str'),
    ('pair', 'int', 'int'),
    ('pair', 'int', 'SomeCrazyPairValue'),
    ('pair', 'ThreeNums', 'int'),
    ('vector', 'float64'),
    ('vector', 'str'),
    ('vector', 'int32'),
    ('vector', 'complex'),
    ('vector', ('vector', 'float64')),
    ('set', 'int'),
    ('set', 'str'),
    ('set', 'uint'),
    ('set', 'char'),
    ('set', 'ThreeNums'),
    ('map', 'str', 'str'),
    ('map', 'str', 'int'),
    ('map', 'int', 'str'),
    ('map', 'str', 'uint'),
    ('map', 'uint', 'str'),
    ('map', 'uint', 'uint'),
    ('map', 'str', 'float'),
    ('map', 'ThreeNums', 'float'),
    ('map', 'int', 'int'),
    ('map', 'int', 'bool'),
    ('map', 'int', 'char'),
    ('map', 'int', 'float'),
    ('map', 'uint', 'float'),
    ('map', 'int', 'complex'),
    ('map', ('pair', 'int', 'int'), 'float'),
    ('map', 'int', ('set', 'int')),
    ('map', 'int', ('set', 'str')),
    ('map', 'int', ('set', 'uint')),
    ('map', 'int', ('set', 'char')),
    ('map', 'int', ('vector', 'str')),
    ('map', 'int', ('vector', 'int')),
    ('map', 'int', ('vector', 'uint')),
    ('map', 'int', ('vector', 'char')),
    ('map', 'int', ('vector', 'bool')),
    ('map', 'int', ('vector', 'float')),
    ('map', 'int', ('vector', ('vector', 'float64'))),
    ('map', 'int', ('map', 'int', 'bool')),
    ('map', 'int', ('map', 'int', 'char')),
    ('map', 'int', ('map', 'int', 'float')),
    ('map', 'int', ('map', 'int', ('vector', 'bool'))),
    ('map', 'int', ('map', 'int', ('vector', 'char'))),
    ('map', 'int', ('map', 'int', ('vector', 'float'))),
    ('map', 'int', ('vector', ('set', 'int'))),
    ]

dtypes_module = 'dt'
stlcontainers_module = 'stlc'

_fromsrcdir = lambda x: os.path.join('src', x)
_inbasics = {'srcfiles': _fromsrcdir('basics.[ch]*'),
             'incfiles': 'basics.hpp',  # trick to get around cython generating *.h
             'language': 'c++',
             }
_indiscovery = {'srcfiles': _fromsrcdir('discovery*'),
                'incfiles': 'discovery.h',
                'language': 'c++',
                }

variables = [
    apiname('PersonID', tarbase='pybasics', **_inbasics),
    apiname('*', **_indiscovery),
    ]

functions = [
    apiname('voided', **_inbasics),
    apiname('pairs_be_crazy', tarbase='pybasics', **_inbasics),
    apiname('call_with_void_fp_struct', **_inbasics), 
    {'srcname': 'func0', 
     'tarname': 'a_better_name',
     'incfiles': 'basics.h',
     'srcfiles': _fromsrcdir('basics.[ch]*')},
    apiname('func1', **_inbasics),
    apiname('func2', **_inbasics),
    apiname('func3', **_inbasics),
    apiname('func4', tarbase='pybasics', **_inbasics),
    apiname('setfunc', **_inbasics),
    apiname(('findmin', 'int32', 'float32',), **_inbasics), 
    apiname(('findmin', 'float64', 'float32',), **_inbasics), 
    {'srcname': ('findmin', 'int', 'int',), 
     'incfiles': 'basics.h',
     'tarname': ('regmin', 'int', 'int',), 
     'srcfiles': _fromsrcdir('basics.[ch]*')}, 
    {'srcname': ('findmin', 'bool', 'bool',), 
     'tarname': 'sillyBoolMin', 
     'incfiles': 'basics.h',
     'srcfiles': _fromsrcdir('basics.[ch]*')}, 
    apiname(('lessthan', 'int32', 3,), **_inbasics),
    apiname('call_threenums_op_from_c', tarbase='pybasics', **_inbasics),
    apiname('*', **_indiscovery),
    ]

classes = [
    #apiname('struct0', 'basics', 'pybasics', 'My_Struct_0'),  FIXME This needs more work
    apiname('Union0', **_inbasics),
    apiname('VoidFPStruct', **_inbasics),
    apiname('A', **_inbasics),
    apiname('B', **_inbasics),
    apiname('C', **_inbasics),
    apiname('SomeCrazyPairValue', tarbase='pybasics', **_inbasics),
    # apiname('SomeCrazyPairValue', **_inbasics),
    apiname(('TClass1', 'int32'), **_inbasics), 
    apiname(('TClass1', 'float64'), **_inbasics), 
    {'srcname': ('TClass1', 'float32'), 
     'tarname': 'TC1Floater', 
     'incfiles': 'basics.h',
     'srcfiles': _fromsrcdir('basics.[ch]*')}, 
    apiname(('TClass0', 'int32'), **_inbasics), 
    apiname(('TClass0', 'float64'), **_inbasics), 
    {'srcname': ('TClass0', 'bool'), 
     'tarname': ('TC0Bool', 'bool'),
     'incfiles': 'basics.h',
     'srcfiles': _fromsrcdir('basics.[ch]*')}, 
    apiname('Untemplated', **_inbasics), 
    apiname('ThreeNums', tarbase='pybasics', **_inbasics),
    apiname('*', **_indiscovery),
    apiname(('TClass0', 'float32'), **_inbasics), 
    apiname(('TClass2', 'float32'), **_inbasics), 
    apiname('NoDefault', **_inbasics), 
    apiname('NoDefaultChild', **_inbasics), 
    apiname(('EnumArg', 'JOAN'), tarbase='pybasics', **_inbasics),
    ]

del os
del apiname


[((75, 24, 75, 46), 'os.path.join', 'os.path.join', ({(75, 37, 75, 42): '"""src"""', (75, 44, 75, 45): 'x'}, {}), "('src', x)", False, 'import os\n'), ((86, 4, 86, 56), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((87, 4, 87, 32), 'xdress.utils.apiname', 'apiname', ({(87, 12, 87, 15): '"""*"""'}, {}), "('*', **_indiscovery)", False, 'from xdress.utils import apiname\n'), ((91, 4, 91, 34), 'xdress.utils.apiname', 'apiname', ({(91, 12, 91, 20): '"""voided"""'}, {}), "('voided', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((92, 4, 92, 62), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((93, 4, 93, 52), 'xdress.utils.apiname', 'apiname', ({(93, 12, 93, 38): '"""call_with_void_fp_struct"""'}, {}), "('call_with_void_fp_struct', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((98, 4, 98, 33), 'xdress.utils.apiname', 'apiname', ({(98, 12, 98, 19): '"""func1"""'}, {}), "('func1', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((99, 4, 99, 33), 'xdress.utils.apiname', 'apiname', ({(99, 12, 99, 19): '"""func2"""'}, {}), "('func2', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((100, 4, 100, 33), 'xdress.utils.apiname', 'apiname', ({(100, 12, 100, 19): '"""func3"""'}, {}), "('func3', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((101, 4, 101, 53), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((102, 4, 102, 35), 'xdress.utils.apiname', 'apiname', ({(102, 12, 102, 21): '"""setfunc"""'}, {}), "('setfunc', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((103, 4, 103, 58), 'xdress.utils.apiname', 'apiname', ({(103, 12, 103, 44): "('findmin', 'int32', 'float32')"}, {}), "(('findmin', 'int32', 'float32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((104, 4, 104, 60), 'xdress.utils.apiname', 'apiname', ({(104, 12, 104, 46): "('findmin', 'float64', 'float32')"}, {}), "(('findmin', 'float64', 'float32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((113, 4, 113, 51), 'xdress.utils.apiname', 'apiname', ({(113, 12, 113, 37): "('lessthan', 'int32', 3)"}, {}), "(('lessthan', 'int32', 3), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((114, 4, 114, 72), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((115, 4, 115, 32), 'xdress.utils.apiname', 'apiname', ({(115, 12, 115, 15): '"""*"""'}, {}), "('*', **_indiscovery)", False, 'from xdress.utils import apiname\n'), ((120, 4, 120, 34), 'xdress.utils.apiname', 'apiname', ({(120, 12, 120, 20): '"""Union0"""'}, {}), "('Union0', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((121, 4, 121, 40), 'xdress.utils.apiname', 'apiname', ({(121, 12, 121, 26): '"""VoidFPStruct"""'}, {}), "('VoidFPStruct', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((122, 4, 122, 29), 'xdress.utils.apiname', 'apiname', ({(122, 12, 122, 15): '"""A"""'}, {}), "('A', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((123, 4, 123, 29), 'xdress.utils.apiname', 'apiname', ({(123, 12, 123, 15): '"""B"""'}, {}), "('B', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((124, 4, 124, 29), 'xdress.utils.apiname', 'apiname', ({(124, 12, 124, 15): '"""C"""'}, {}), "('C', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((125, 4, 125, 66), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((127, 4, 127, 46), 'xdress.utils.apiname', 'apiname', ({(127, 12, 127, 32): "('TClass1', 'int32')"}, {}), "(('TClass1', 'int32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((128, 4, 128, 48), 'xdress.utils.apiname', 'apiname', ({(128, 12, 128, 34): "('TClass1', 'float64')"}, {}), "(('TClass1', 'float64'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((133, 4, 133, 46), 'xdress.utils.apiname', 'apiname', ({(133, 12, 133, 32): "('TClass0', 'int32')"}, {}), "(('TClass0', 'int32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((134, 4, 134, 48), 'xdress.utils.apiname', 'apiname', ({(134, 12, 134, 34): "('TClass0', 'float64')"}, {}), "(('TClass0', 'float64'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((139, 4, 139, 39), 'xdress.utils.apiname', 'apiname', ({(139, 12, 139, 25): '"""Untemplated"""'}, {}), "('Untemplated', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((140, 4, 140, 57), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n'), ((141, 4, 141, 32), 'xdress.utils.apiname', 'apiname', ({(141, 12, 141, 15): '"""*"""'}, {}), "('*', **_indiscovery)", False, 'from xdress.utils import apiname\n'), ((142, 4, 142, 48), 'xdress.utils.apiname', 'apiname', ({(142, 12, 142, 34): "('TClass0', 'float32')"}, {}), "(('TClass0', 'float32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((143, 4, 143, 48), 'xdress.utils.apiname', 'apiname', ({(143, 12, 143, 34): "('TClass2', 'float32')"}, {}), "(('TClass2', 'float32'), **_inbasics)", False, 'from xdress.utils import apiname\n'), ((144, 4, 144, 37), 'xdress.utils.apiname', 'apiname', ({(144, 12, 144, 23): '"""NoDefault"""'}, {}), "('NoDefault', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((145, 4, 145, 42), 'xdress.utils.apiname', 'apiname', ({(145, 12, 145, 28): '"""NoDefaultChild"""'}, {}), "('NoDefaultChild', **_inbasics)", False, 'from xdress.utils import apiname\n'), ((146, 4, 146, 65), 'xdress.utils.apiname', 'apiname', (), '', False, 'from xdress.utils import apiname\n')]