Add Custom Permission Level Programmatically
SPSite oSite = new SPSite(<sharepoint site>);
SPWeb oWeb = oSite.OpenWeb();
SPRoleDefinition role = oWeb.RoleDefinitions["Custom Role"];
role.BasePermissions = SPBasePermissions.AddListItems | SPBasePermissions.BrowseDirectories | SPBasePermissions.EditListItems | SPBasePermissions.Open | SPBasePermissions.OpenItems | SPBasePermissions.ViewListItems | SPBasePermissions.ViewFormPages| SPBasePermissions.ViewPages| SPBasePermissions.CancelCheckout| SPBasePermissions.DeleteListItems| SPBasePermissions.ApproveItems;
role.Update();