Skip to content

Instantly share code, notes, and snippets.

@jredville
Created October 16, 2009 22:18
Show Gist options
  • Save jredville/212114 to your computer and use it in GitHub Desktop.
Save jredville/212114 to your computer and use it in GitHub Desktop.
TARGET: cs_class, cs_subclass, rb_subclass, struct
GENERIC_CLASS: true, false
GENERIC_METHOD: true, false
NUMBER_OF_PARAMETERS: 0,1,2,3,4,5,6,7,8
STATIC: true, false
REF_OUT_PARAMS: none, out, ref, params
AOPTIONAL: true, false
ADEFAULT: true, false
AOUT: true, false
NULLABLE_PARAM: true, false
PROPERTY: true, false
#note that since this is parameter types, all of these are C# types in System
#namespace
TYPES: int16, int32, int64, uint16, uint32, uint64, byte, sbyte, single, double, decimal, bigint, string, char, boolean, object, struct, interface, implements_interface, sub_implements_interface, struct_implements_interface, abstract_class, concrete_abstract_class, pocso, enum, enum_short, list, list_of_int, list_of_object, array, array_of_int, array_of_object, array_of_interface, array_of_byte, arraylist, hashtable, dictionary_obj_obj, dictionary_int_int, dictionary_int_str, idictionary_obj_obj, idictionary_int_str, ienumerable, ienumerable_of_int, ienumerable_of_char, ienumerator, ienumerater_of_int, ienumerator_of_char, ilist, ilist_of_int, ilist_of_char, ilist_of_obj self, delegate, int_int_delegate, null
NUMBER_OF_INPUT: 0,1,2,3,4,5,6,7,8,9
BYREF: true, false
NULLABLE: true, false
NUMERIC_VALUES: max_value, min_value, max_value_minus_one, min_value_plus_one
NUMERIC_TYPES: int16, int32, int64, uint16, uint32, uint64, byte, sbyte, single, double, decimal, char
STRING_VALUES: empty, a, b, abc
STRING_TYPES: string, system_string, sub_string, symbol, char
KLASS_MODIFIER: class, instance
KLASS_TYPES: ruby_implements_interface, implements_interface, ruby_derived_from_implements_interface, ruby_derived_from_derived_from_implements_interface, ruby_derived_from_derived_from_abstract_and_implements_interface, derived_from_abstract, ruby_derived_from_abstract, derived_from_derived_from_abstract, class, object, struct, struct_implements_interface, enum, custom_enum, anonymous_class, metaclass, abstract_class
ARRAY_MODIFIER: empty, filled
ARRAY_TYPES: ruby_hash, array, array_char, array_system_string, array_int, array_object, array_interface, array_struct arraylist, dict_obj_obj, dict_int_str, dict_int_int, list_int, list_obj, list_char, list_byte, testlist, test_list_enumerator
OTHER: bigint_one, bigint_zero, boolean, object, monkeypatched_object nil, true, false, convert_to_i, convert_to_int, convert_to_i_to_int, class_instance, hashtable, ienumerator, ienumerator_int, ienumerator_char, ienumerable, ienumerable_int, ienumerable_char, int_int_delegate, lambda, proc, method, unboundmethod, enumerable
{ STATIC, REF_OUT_PARAMS, AOPTIONAL, ADEFAULT, AOUT, NULLABLE_PARAM, PROPERTY, TYPES} @ 2
{ BYREF , NULLABLE , NUMERIC_VALUES , NUMERIC_TYPES , STRING_VALUES , STRING_TYPES , KLASS_MODIFIER , KLASS_TYPES , ARRAY_MODIFIER , ARRAY_TYPES , OTHER } @2
{ NULLABLE, NUMERIC_VALUES, NUMERIC_TYPES } @ 2
{ STRING_VALUES, STRING_TYPES } @ 2
{ KLASS_MODIFIER, KLASS_TYPES } @ 2
{ ARRAY_MODIFIER, ARRAY_TYPES } @ 2
{ BYREF, NULLABLE, NUMERIC_VALUES, NUMERIC_TYPES, STRING_VALUES, STRING_TYPES, KLASS_MODIFIER, KLASS_TYPES, ARRAY_MODIFIER, ARRAY_TYPES, OTHER } @ 1
IF [NUMBER_OF_PARAMETERS] = 0 THEN [TYPES] = "null" AND [REF_OUT_PARAMS] = "none" AND [AOPTIONAL] = "false" AND [ADEFAULT] = "false" AND [AOUT] = "false" AND [NULLABLE_PARAM] = "false" ELSE [TYPES] <> "null";
## This is to override any other values for the 0 arg input case
IF [NUMBER_OF_INPUT] = 0 THEN [BYREF] = "false" AND [NULLABLE] = "false" AND [NUMERIC_VALUES] = "max_value" AND [NUMERIC_TYPES] = "int16" AND [STRING_VALUES] = "empty" AND [STRING_TYPES] = "string" AND [KLASS_MODIFIER] = "instance" AND [KLASS_TYPES] = "ruby_impements_interface" AND [ARRAY_MODIFIER] = "empty" AND [ARRAY_TYPES] = "ruby_hash" AND [OTHER] = "nil";
IF [TARGET] = "rb_subclass" THEN [GENERIC_CLASS] = "false";
IF [KLASS_TYPES] in {"metaclass", "abstract_class"} THEN [KLASS_MODIFIER] = "class";
IF NOT [TYPES] in { "int16", "int32", "int64", "uint16", "uint32", "uint64", "byte", "sbyte", "single", "double", "decimal", "bigint", "string", "char", "boolean", "object", "struct"} THEN [NULLABLE_PARAM] = "false";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment